5款最流行編程語(yǔ)言出現(xiàn)漏洞
這周在 Black Hat Europe 2017 安全會(huì)議上,一名安全研究員公開(kāi)了幾款目前非常流行的解釋型編程語(yǔ)言中出現(xiàn)的漏洞。這些編程語(yǔ)言上存在的問(wèn)題,可能讓運(yùn)用這些語(yǔ)言開(kāi)發(fā)的應(yīng)用程序因此也很容易遭受攻擊。
這項(xiàng)研究的作者是 IOActive 的高級(jí)安全顧問(wèn) Fernando Arnaboldi。這位專家表示他使用了自動(dòng)化的模糊測(cè)試工具在解釋器中對(duì)五種編程語(yǔ)言進(jìn)行了測(cè)試:JavaScript,Perl,PHP,Python和Ruby。在對(duì)默認(rèn)庫(kù)和內(nèi)置函數(shù)進(jìn)行模糊測(cè)試之后,他在研究中公布了每種語(yǔ)言存在的一些問(wèn)題。
使用 XDiFF 對(duì) 5 款語(yǔ)言進(jìn)行模糊測(cè)試
使用模糊測(cè)試工具,對(duì)軟件進(jìn)行測(cè)試通常需要檢測(cè)到不尋常的行為,以及對(duì)內(nèi)存崩潰以及溢出進(jìn)行檢測(cè)。目前比較流行的測(cè)試工具(如AFL和Peach)通常需要在尋找漏洞的時(shí)候的時(shí)候采用相同的邏輯,而這些工具無(wú)法存儲(chǔ)執(zhí)行過(guò)的測(cè)試用例的信息。
在這位研究員的研究過(guò)程中,他自定義了自己的模糊測(cè)試工具 XDiFF(擴(kuò)展差分模糊測(cè)試框架),以此適應(yīng)這幾款不同的編程語(yǔ)言。在測(cè)試過(guò)程中,他將每種編程語(yǔ)言都分解成了最基本的功能,然后使用XDiFF來(lái)提供各種payload輸入來(lái)進(jìn)行測(cè)試。
在這次測(cè)試中,我們的的輸入中主要使用了不到 30 種的原始數(shù)據(jù)類型,但也有一些特別的payload。這些特別的payload 是用于測(cè)試程序獲取外部數(shù)據(jù)資源時(shí)是否會(huì)出現(xiàn)問(wèn)題。
以上這些測(cè)試都是用于分析測(cè)試目標(biāo)——是否會(huì)出現(xiàn)“暴露本地文件、未授權(quán)的代碼注入、未授權(quán)的系統(tǒng)代碼執(zhí)行操作”等安全問(wèn)題。
測(cè)試結(jié)果:均暴露出問(wèn)題
而從他的測(cè)試結(jié)果來(lái)看,我們確實(shí)可以看到JavaScript、PHP、Ruby、Perl、Python分別在經(jīng)歷了多項(xiàng)測(cè)試之后,暴露出來(lái)了哪些問(wèn)題。
Python中存在可用于OS命令執(zhí)行的未記錄方法和本地環(huán)境變量。
Perl 中有一種可執(zhí)行如 eval() 的 typemap 函數(shù)。
NodeJS 中輸出的錯(cuò)誤信息會(huì)泄露部分文件內(nèi)容。
JRuby 可以加載和執(zhí)行并非設(shè)計(jì)為遠(yuǎn)程代碼執(zhí)行的代碼
PHP中常量的名字可以用來(lái)執(zhí)行遠(yuǎn)程命令。
最安全的應(yīng)用層序也會(huì)因此“倒下”
Arnaboldi 表示攻擊者可以利用這些編程語(yǔ)言上的漏洞來(lái)“放倒”最安全的應(yīng)用程序。
一些軟件開(kāi)發(fā)者可能會(huì)在沒(méi)有意識(shí)到的情況下將代碼包含在應(yīng)用程序中,而這些代碼可能導(dǎo)致的后果卻是開(kāi)發(fā)者沒(méi)有考慮到的。
即便是按照安全指南來(lái)進(jìn)行開(kāi)發(fā)的最安全的應(yīng)用程序也可能會(huì)因此出現(xiàn)“安全隱患”。
即便開(kāi)發(fā)者沒(méi)有惡意企圖,但這些漏洞也可能因?yàn)殚_(kāi)發(fā)者無(wú)意識(shí)或試圖簡(jiǎn)化開(kāi)發(fā)而引入進(jìn)來(lái)。
目前XDiFF已經(jīng)作為開(kāi)源項(xiàng)目公布在GitHub上。
更具體的演講和演示內(nèi)容也可以在Arnaboldi的論文中了解。
參考資料:
http://securityaffairs.co/
https://www.bleepingcomputer.com/
本文轉(zhuǎn)載自FreeBuf.COM