1. 程式人生 > 其它 >【悟空雲課堂】第三十三期:表示式永假/永真(CWE-570:Expression is Always False)

【悟空雲課堂】第三十三期:表示式永假/永真(CWE-570:Expression is Always False)

技術標籤:悟空雲課堂安全漏洞程式碼規範資訊保安

關注公眾號“中科天齊軟體安全中心”(id:woocoom),一起漲知識!

該欄目為中科天齊全新規劃的悟空雲課堂,每週五下午18:00準時上線,旨在科普軟體安全相關知識,助力企業有效防範軟體安全漏洞,提升網路安全防護能力。

【悟空雲課堂】第三十三期:表示式永假/永真(CWE-570:Expression is Always False)

什麼是表示式永假/永真缺陷?

如果布林表示式不改變程式邏輯,則完全沒有必要,並且可以將其刪除。如果執行邏輯與程式設計師的意圖不匹配,這就是一個錯誤,布林表示式應該被修復。

表示式永假/永真缺陷構成條件有哪些?

該軟體包含一個始終為假或為真的表示式

表示式永假/永真缺陷會造成哪些後果?

無效程式碼可能會在程式碼維護期間引起問題,並可能引入漏洞。

表示式永假/永真缺陷的防範和修補方法有哪些?

布林表示式應該有改變其值的操作。
使用靜態分析工具發現這種情況。

表示式永假缺陷樣例:

public static Properties loadProperties(String propertyFileName) {
         InputStreamReader in = null;
         try {
             ClassLoader loder = Thread.currentThread(
).getContextClassLoader(); in = new InputStreamReader(loder.getResourceAsStream(propertyFileName), "UTF-8");; if (in != null) { Properties prop = new Properties(); prop.load(in); return prop; } }
catch (IOException e) { logger.error("load {} error!", propertyFileName); } finally { if (in != null) { try { in.close(); } catch (IOException e) { logger.error("close {} error!", propertyFileName); } } } return null; }

用Wukong(悟空)軟體程式碼安全檢測修復系統檢測上述程式程式碼,則可以發現程式碼中存在著“表示式永假/永真” 導致的程式碼缺陷,如下圖:
Wukong(悟空)軟體程式碼安全檢測修復系統
表示式永假/永真缺陷在CWE中被編號為CWE-570:Expression is Always False

更多的資訊請參考CWE官網:http://cwe.mitre.org/data/definitions/570.html

瞭解更多安全資訊 請關注公眾號 中科天齊軟體安全中心