悟空云課堂丨代碼安全第二十期:資源未關(guān)閉/釋放漏洞

中科天齊傾情打造《悟空云課堂》旨在科普軟件安全相關(guān)知識,助力企業(yè)有效防范軟件安全漏洞,提升網(wǎng)絡(luò)安全防護(hù)能力。本期主題為資源未關(guān)閉/釋放漏洞的相關(guān)介紹。
一、什么是資源未關(guān)閉/釋放?
在使用臨時或配套資源后,軟件沒有正確“清理”和刪除這些資源。
二、資源未關(guān)閉/釋放漏洞構(gòu)成條件有哪些?
滿足以下條件,就構(gòu)成了一個該類型的安全漏洞:
1、軟件在使用后沒有正確“清理”并刪除臨時的或配套的資源。
三、資源未關(guān)閉/釋放漏洞會造成哪些后果?
關(guān)鍵詞:其他;讀取應(yīng)用數(shù)據(jù);修改申請數(shù)據(jù);DoS:資源消耗(其他);
1、臨時文件長時間存在可能會導(dǎo)致應(yīng)用數(shù)據(jù)泄露;
2、可能會造成臨時文件數(shù)量溢出,因為目錄通常對允許的文件數(shù)有限制。這可能會造成拒絕服務(wù)問題。
四、資源未關(guān)閉/釋放漏洞的防范和修補(bǔ)方法有哪些?
1、臨時文件和其他配套資源在不再需要后應(yīng)立即關(guān)閉/釋放;
2、Java應(yīng)用程序中流資源應(yīng)該在finally塊中釋放。
五、資源未關(guān)閉/釋放漏洞樣例:

Java應(yīng)用程序中的流資源應(yīng)該在finally塊中釋放,否則在調(diào)用close()之前引發(fā)異常將導(dǎo)致I/O資源未釋放。在下面的示例中,在try塊中調(diào)用close()方法(不正確)。
用Wukong軟件源代碼靜態(tài)分析工具檢測上述程序代碼,則可以發(fā)現(xiàn)代碼中存在著“資源未關(guān)閉/釋放”導(dǎo)致的代碼缺陷,如下圖:

資源未關(guān)閉/釋放在CWE中被編號為CWE-459: Incomplete Cleanup
參讀鏈接:https://www.woocoom.com/b021.html?id=4b19d942da5a4a40813aee2f52243608
