沒有一個APP是安全的!PHP、Python等編碼語言出現重大漏洞
Black Hat Europe 2017安全會議的成果可謂是成果滿滿,這不又有專家發現多種編碼語言(JavaScript, Perl, PHP, Python, Ruby)都存在嚴重漏洞,這意味著使用這些語言所編寫的各種應用程序也都存在同樣的漏洞。
發表該研究的作者是美國安全公司 IOActive 的高級安全顧問Fernando Arnaboldi,他是通過模糊測試找到了目前最流行的5種解釋型語言中的漏洞。
模糊測試(fuzz testing)是一種安全測試方法,它介於完全的手工測試和完全的自動化測試之間。為什麼是介於那兩者之間?首先完全的手工測試即是滲透測試,測試人員可以模擬黑客惡意進入系統、查找漏洞,這對測試人員的要求比較高。能力強的測試人員可以發現比較多或者高質量的安全性問題,但是如果測試人員的能力不夠,可能就不能找到足夠多、威脅大的安全漏洞。
雖然模糊測試已經在軟體測試領域使用了許多年,不過最近才在安全研究人員的圈子中流行開來,特別是在Google的安全團隊和Linux社區中。因為使用模糊測試可以有效地發現崩潰、掛起或內存損壞等問題。一般情況下,我們會認為發生這些問題是因為應用程序的源代碼太冗長需要優化,而不會想到是編寫代碼的語言出現了問題。
5種解釋型語言中的漏洞
在Arnaboldi進行的模糊測試中,他為了弄清5種編程語言的結構和運行方式,還專門編寫了自己的 XDiFF (Extended Differential Fuzzing Framework,可擴展差異化模糊測試框架)。Arnaboldi首先將每種編程語言都分解為最基本的函數,然後使用XDiFF向每一種語言進行多種類型的輸入(即 payload)。
Arnaboldi對此的解釋如下:
發現有趣的漏洞完全取決於如何選擇正確的輸入,在這次測試中,我使用了差不多30組原始值的組合,它們是數字、字母等和特殊的有效載荷的組合。
之所以要和有效載荷組合,是因為它可以檢測到應用程序何時會訪問外部資源,並識別出本地文件內容、檢測未授權代碼執行並發現那些未授權的操作系統代碼執行
經過這些測試,他最後發現了5種解釋型語言中的漏洞:
1.Python 包含可用於操作系統命令執行的違規方法和本地環境變數。2.Perl 中包含能執行如eval()代碼的typemaps函數。3.NodeJS 可以輸出暴露部分文件內容的錯誤信息。4.JRuby會載入並執行一些遠程代碼,而這些代碼的初始設計並不是執行遠程代碼。5.PHP常量中包含可被用於執行遠程命令的名稱。
世界上沒有一個APP是安全的
Arnaboldi認為,一個經過嚴格訓練的攻擊者完全有可能利用這些編程語言的漏洞,對構建在其之上的所有應用程序發起底層攻擊。
Arnaboldi表示:
我相信很多程序開發人員都不知道其中的這些漏洞,他們可能會在不知情的情況下,將漏洞編寫在程序中。而由於目前的開發都是工業大規模化的,所以可以預測很多程序都會又被攻擊的風險。
現在,Arnaboldi已在 GitHub 上開源了XDiFF,另外,他還發表了《通過差異化模糊測試技術來發現編程語言的隱藏行為》的論文。
本文翻譯自:https://www.bleepingcomputer.com/news/security/secure-apps-exposed-to-hacking-via-flaws-in-underlying-programming-languages/ ,如若轉載,請註明原文地址: http://www.4hou.com/info/news/9221.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※如何發現Active Directory中的隱身管理員賬戶(二)
※當心!騙子正在使用Instagram進行銀行詐騙活動
※2017年度最不安全密碼報告出爐,你中了幾個?
※web滲透測試常規套路
※OpenSSL 的 Heartbleed 漏洞的影響到底有多大?
TAG:信息安全 |