程式碼安全測試第二十期:資源未關閉/釋放漏洞

zktq2021發表於2021-06-16

一、什麼是資源未關閉/釋放?

在使用臨時或配套資源後,軟體沒有正確“清理”和刪除這些資源。

二、資源未關閉/釋放漏洞構成條件有哪些?

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

1、軟體在使用後沒有正確“清理”並刪除臨時的或配套的資源。

三、資源未關閉/釋放漏洞會造成哪些後果?

關鍵詞:其他;讀取應用資料;修改申請資料;DoS:資源消耗(其他);

1、臨時檔案長時間存在可能會導致應用資料洩露;

2、可能會造成臨時檔案數量溢位,因為目錄通常對允許的檔案數有限制。這可能會造成拒絕服務問題。

四、資源未關閉/釋放漏洞的防範和修補方法有哪些?

1、臨時檔案和其他配套資源在不再需要後應立即關閉/釋放;

2、Java應用程式中流資源應該在finally塊中釋放。

五、資源未關閉/釋放漏洞樣例:

Java應用程式中的流資源應該在finally塊中釋放,否則在呼叫close()之前引發異常將導致I/O資源未釋放。在下面的示例中,在try塊中呼叫close()方法(不正確)。

用悟空 靜態程式碼檢測工具分析上述程式程式碼,則可以發現程式碼中存在著“資源未關閉/釋放”導致的 程式碼缺陷,如下圖:

資源未關閉/釋放在CWE中被編號為CWE-459: Incomplete Cleanup


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

相關文章