程式碼安全測試第二十一期:從finally塊中return漏洞

zktq2021發表於2021-06-17

一、什麼是從finally塊中return?

Java中的finally一般與try一起使用,在程式進入try塊之後,無論程式是因為異常而中止或其它方式返回終止的,finally塊的內容一定會被執行。

程式碼在finally塊中有一個return語句,這將導致try塊中的任何丟擲異常被丟棄。

二、從finally塊中return漏洞構成條件有哪些?

滿足以下條件,就構成了一個該型別的安全漏洞:

1、程式碼在finally塊中有一個return語句。try塊中的異常因finally塊中的return無法到達exit塊被丟擲。

三、從finally塊中return漏洞會造成哪些後果?

關鍵詞:改變執行邏輯;

本該丟擲的異常或其它處理由於finally塊中的return先行執行而被丟棄,所以導致上層程式無法執行對應的程式碼,產生問題。

四、從finally塊中return漏洞的防範和修補方法有哪些?

不要在finally塊中使用return語句。finally塊應該有“cleanup”程式碼。

五、從finally塊中return漏洞樣例:

用悟空 靜態程式碼檢測工具分析上述程式程式碼,則可以發現程式碼中存在著“從finally塊中return非正常退出” 導致的 程式碼缺陷,如下圖:

從finally塊中return在CWE中被編號為CWE-584: Return Inside Finally Block


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2777208/,如需轉載,請註明出處,否則將追究法律責任。

相關文章