JavaScript、PHP、Python等主流程式語言爆安全漏洞
沒有不漏的鍋,如果底層的程式語言如果出現問題,頂層的應用程式還能倖免於難嗎?
這周在 Black Hat Europe 2017 安全會議上,一名安全研究員公開了幾款目前非常流行的解釋型程式語言中出現的漏洞。這些程式語言上存在的問題,可能讓運用這些語言開發的應用程式因此也很容易遭受攻擊。
這項研究的作者是 IOActive 的高階安全顧問 Fernando Arnaboldi。這位專家表示他使用了自動化的模糊測試工具在直譯器中對五種程式語言進行了測試:Java,Perl,PHP,Python和Ruby。在對預設庫和內建函式進行模糊測試之後,他在研究中公佈了每種語言存在的一些問題。
使用 XDiFF 對 5 款語言進行模糊測試
使用模糊測試工具,對軟體進行測試通常需要檢測到不尋常的行為,以及對記憶體崩潰以及溢位進行檢測。目前比較流行的測試工具(如AFL和Peach)通常需要在尋找漏洞的時候的時候採用相同的邏輯,而這些工具無法儲存執行過的測試用例的資訊。
在這位研究員的研究過程中,他自定義了自己的模糊測試工具 XDiFF(擴充套件差分模糊測試框架),以此適應這幾款不同的程式語言。在測試過程中,他將每種程式語言都分解成了最基本的功能,然後使用XDiFF來提供各種payload輸入來進行測試。
在這次測試中,我們的的輸入中主要使用了不到 30 種的原始資料型別,但也有一些特別的payload。這些特別的payload 是用於測試程式獲取外部資料資源時是否會出現問題。
以上這些測試都是用於分析測試目標——是否會出現“暴露本地檔案、未授權的程式碼注入、未授權的系統程式碼執行操作”等安全問題。
測試結果:均暴露出問題
而從他的測試結果來看,我們確實可以看到Java、PHP、Ruby、Perl、Python分別在經歷了多項測試之後,暴露出來了哪些問題。
Python中存在可用於OS命令執行的未記錄方法和本地環境變數。
Perl 中有一種可執行如 eval() 的 typemap 函式。
NodeJS 中輸出的錯誤資訊會洩露部分檔案內容。
JRuby 可以載入和執行並非設計為遠端程式碼執行的程式碼
PHP中常量的名字可以用來執行遠端命令。
最安全的應用層序也會因此“倒下”
Arnaboldi 表示攻擊者可以利用這些程式語言上的漏洞來“放倒”最安全的應用程式。
一些軟體開發者可能會在沒有意識到的情況下將程式碼包含在應用程式中,而這些程式碼可能導致的後果卻是開發者沒有考慮到的。
即便是按照安全指南來進行開發的最安全的應用程式也可能會因此出現“安全隱患”。
即便開發者沒有惡意企圖,但這些漏洞也可能因為開發者無意識或試圖簡化開發而引入進來。
目前XDiFF已經作為開源專案公佈在GitHub上。
更具體的演講和演示內容也可以在Arnaboldi的論文中瞭解。
參考資料:
http://securityaffairs.co/
https://www.bleepingcomputer.com/
*本文作者Elaine
相關文章
- 那些主流程式語言的知識,C語言(Ⅰ)C語言
- JS、PHP、Python等五大程式語言爆漏洞;中興 70 後程式設計師墜亡;雷軍平定迅雷內亂 | 一週業界事JSPHPPython程式設計師
- 三大主流程式語言Python為啥這麼牛?Python
- Python vs PHP vs Ruby — 程式語言大對決PythonPHP
- Python程式語言Python
- Python和Java、PHP、C、C#、C++等其他語言的對比?PythonJavaPHPC#C++
- Python 是增長最快的主流程式語言 | StackOverflow 重磅調查Python
- 效能對比 Go、Python、PHP、C/C++、C# .Net、Java、Node.js、… 等多程式語言GoPythonPHPC++C#JavaNode.js
- 學習遊戲要學習程式語言嗎?十大主流程式語言解析遊戲
- 用JavaScript、Java和Python程式語言的年薪都多少?JavaScriptPython
- 主流程式語言的介紹及特點
- 主流程式語言的“介紹”與“選擇”
- 用 PHP 寫一個"程式語言"PHP
- 程式語言“鐵三角”,JavaScript 力壓 Java和PythonJavaScriptPython
- Philip Guo:2014年美國主流大學最流行程式語言是Python行程Python
- javascript函數語言程式設計JavaScript函數程式設計
- JavaScript 函數語言程式設計JavaScript函數程式設計
- 5種方式將機器學習帶到Java、Python以及Go等程式語言機器學習JavaPythonGo
- 再談非主流工業語言
- [譯]用javascript實現一門程式語言-語言構想JavaScript
- 程式語言擬人化:Java、C++、Python、Ruby、PHP、C#、JSJavaC++PythonPHPC#JS
- python程式語言基礎Python
- java、.net、php等語言開發商城系統優劣勢JavaPHP
- 用JavaScript實現一門程式語言 2 (λanguage語言簡介)JavaScript
- 主流程式語言的優勢與劣勢對比
- 侃一侃主流的程式語言都各自有何特點?
- 幾種主流程式語言的優點和缺點
- JavaScript 函數語言程式設計(二)JavaScript函數程式設計
- JavaScript 函數語言程式設計(一)JavaScript函數程式設計
- JavaScript 函數語言程式設計(三)JavaScript函數程式設計
- JavaScript函數語言程式設計(二)JavaScript函數程式設計
- JavaScript函數語言程式設計(一)JavaScript函數程式設計
- JavaScript函數語言程式設計(三)JavaScript函數程式設計
- Spring框架爆安全漏洞Spring框架
- 程式語言擬人化(1):Java、C++、Python、Ruby、PHP、C#、JSJavaC++PythonPHPC#JS
- C++/Php/Python語言執行shell命令C++PHPPython
- 為什麼初學者應該學習Python?7大主流程式語言對比!Python
- 怎麼學python程式語言?Python