【悟空雲課堂】第三十三期:表示式永假/永真(CWE-570:Expression is Always False)
阿新 • • 發佈:2021-01-23
關注公眾號“中科天齊軟體安全中心”(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(悟空)軟體程式碼安全檢測修復系統檢測上述程式程式碼,則可以發現程式碼中存在著“表示式永假/永真” 導致的程式碼缺陷,如下圖:
表示式永假/永真缺陷在CWE中被編號為CWE-570:Expression is Always False
更多的資訊請參考CWE官網:http://cwe.mitre.org/data/definitions/570.html
瞭解更多安全資訊 請關注公眾號 中科天齊軟體安全中心