污點(diǎn)分析是什么神奇的代碼檢查技術(shù)?
在代碼檢查領(lǐng)域,經(jīng)常會(huì)被提及一個(gè)專業(yè)術(shù)語“污點(diǎn)分析”,對(duì)于一個(gè)剛接觸的小伙伴來說會(huì)很困惑這是什么“高大上”的技術(shù)?為什么它會(huì)在整個(gè)軟件開發(fā)生命周期里起到一個(gè)重要的作用呢?
本文嘗試為大家做個(gè)簡單的講解:概述、優(yōu)勢(shì)、支持識(shí)別的漏洞(舉例)、污點(diǎn)分析的步驟。
概述
污點(diǎn)分析 Taint Analysis,作為一種SAST靜態(tài)代碼分析里基于數(shù)據(jù)流分析的技術(shù),用于識(shí)別和跟蹤應(yīng)用程序中的輸入和輸出數(shù)據(jù),以及與其相關(guān)聯(lián)的敏感信息,檢測這些數(shù)據(jù)在整個(gè)處理過程中是否被篡改胡污染。通過對(duì)程序中輸入和輸出數(shù)據(jù)的跟蹤,污點(diǎn)分析技術(shù)可以幫助研發(fā)人員識(shí)別軟件內(nèi)潛在的安全漏洞和錯(cuò)誤。
優(yōu)勢(shì)
污點(diǎn)分析技術(shù)的應(yīng)用,讓代碼檢查更加全面和深入。對(duì)于整個(gè)軟件開發(fā)過程里有如下這些優(yōu)勢(shì):
1、識(shí)別潛在的漏洞:污點(diǎn)分析技術(shù)通過檢測程序中哪些變量可以受到不可信輸入的影響,來識(shí)別出潛在的漏洞,幫助研發(fā)人員更好地了解軟件中可能存在的安全隱患。
2、自動(dòng)化分析:污點(diǎn)分析技術(shù)通過對(duì)程序進(jìn)行自動(dòng)化分析,可以減少漏洞檢測的人工工作量。
3、精細(xì)化的跟蹤:污點(diǎn)分析技術(shù)支持精細(xì)化的跟蹤可疑數(shù)據(jù),找出軟件中哪些變量和語句會(huì)影響這些數(shù)據(jù);同時(shí)支持追蹤代碼執(zhí)行路徑,幫助研發(fā)人員更好地了解程序運(yùn)行的方式。
4、監(jiān)測攻擊:污點(diǎn)分析技術(shù)可以監(jiān)測攔截攻擊并提供有關(guān)攻擊來源的信息,從而更好地保護(hù)軟件程序的安全性。
支持識(shí)別的漏洞
污點(diǎn)分析技術(shù)可以識(shí)別和注入相關(guān)的多種類型的漏洞和錯(cuò)誤,包括但不限于以下幾種:
1、跨站腳本攻擊(XSS):污點(diǎn)分析技術(shù)可以檢測哪些輸入數(shù)據(jù)會(huì)影響web頁面,并同時(shí)識(shí)別潛在的XSS漏洞。
2、SQL注入攻擊:污點(diǎn)分析技術(shù)可以檢測哪些輸入數(shù)據(jù)會(huì)影響SQL的查詢,并同時(shí)識(shí)別潛在的SQL注入漏洞。
3、路徑遍歷攻擊(directory traversal):污點(diǎn)分析技術(shù)可以檢測哪些輸入數(shù)據(jù)會(huì)影響文件路徑,并同時(shí)識(shí)別潛在的路徑遍歷漏洞。
4、代碼注入攻擊:污點(diǎn)分析技術(shù)可以檢測哪些輸入數(shù)據(jù)會(huì)被當(dāng)作代碼執(zhí)行,并同時(shí)識(shí)別潛在的代碼注入漏洞。
污點(diǎn)分析的步驟
污點(diǎn)分析技術(shù)的運(yùn)用一般會(huì)包括如下幾個(gè)步驟:
1、污點(diǎn)標(biāo)記:首先需要先標(biāo)記可能受到不可信輸入影響的變量和輸入數(shù)據(jù),將其標(biāo)記為“污點(diǎn)”;而污點(diǎn)通常是由用戶或其他程序傳遞輸入的數(shù)據(jù)。
2、污點(diǎn)傳播:這些被標(biāo)記為“污點(diǎn)”的數(shù)據(jù)之后會(huì)通過程序傳播,而我們要做的就是跟蹤污點(diǎn)的傳播路徑。舉個(gè)例子,如果被標(biāo)記為污點(diǎn)的數(shù)據(jù)被賦值給了一個(gè)新的變量,那么這個(gè)新變量也將被標(biāo)記為污點(diǎn)。
3、污點(diǎn)檢查:在程序執(zhí)行過程中,污點(diǎn)可能被用于不信任操作,因而導(dǎo)致潛在的漏洞。所以我們需要對(duì)污點(diǎn)進(jìn)行檢查,以確保不會(huì)被執(zhí)行于任何不安全的操作,比如輸出到非信任的設(shè)備或用于執(zhí)行危險(xiǎn)的操作。
4、污點(diǎn)輸出:最后,我們應(yīng)記錄所有與污點(diǎn)相關(guān)的數(shù)據(jù)和操作,用于后續(xù)的分析和調(diào)試。污點(diǎn)輸出將提供相關(guān)程序中潛在漏洞的詳細(xì)信息,這將有利于研發(fā)人員對(duì)軟件進(jìn)行修復(fù)與改進(jìn)。
總的來說,污點(diǎn)分析是一項(xiàng)在SAST領(lǐng)域里非常實(shí)用的技術(shù),可以幫助我們研發(fā)人員檢測和修復(fù)程序中的潛在漏洞,提高程序的安全性。
參考鏈接
1、?https://en.wikipedia.org/wiki/Taint_checking
2、?https://www.synopsys.com/blogs/software-security/taint-analysis/
華為云代碼檢查服務(wù)CodeArts Check體驗(yàn)通道:https://auth.huaweicloud.com/authui/login.html?locale=zh-cn&service=https%3A%2F%2Fwww.huaweicloud.com%2Fproduct%2Fcodecheck.html%3Futm_medium%3Dhdc#/login
參考鏈接
1、 https://en.wikipedia.org/wiki/Taint_checking
2、 https://www.synopsys.com/blogs/software-security/taint-analysis/
抽獎(jiǎng)活動(dòng)鏈接:https://bbs.huaweicloud.com/forum/thread-0228123477957050003-1-1.html