華文網

沒有一個APP是安全的!PHP、Python等編碼語言出現重大漏洞

導語

Black Hat Europe 2017安全會議的成果可謂是成果滿滿,這不又有專家發現多種編碼語言(JavaScript, Perl, PHP, Python, Ruby)都存在嚴重漏洞,這意味著使用這些語言所編寫的各種應用程式也都存在同樣的漏洞。

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表示:

我相信很多程式開發人員都不知道其中的這些漏洞,他們可能會在不知情的情況下,將漏洞編寫在程式中。而由於目前的開發都是工業大規模化的,所以可以預測很多程式都會又被攻擊的風險。

世界上沒有一個APP是安全的

Arnaboldi認為,一個經過嚴格訓練的攻擊者完全有可能利用這些程式設計語言的漏洞,對構建在其之上的所有應用程式發起底層攻擊。

Arnaboldi表示:

我相信很多程式開發人員都不知道其中的這些漏洞,他們可能會在不知情的情況下,將漏洞編寫在程式中。而由於目前的開發都是工業大規模化的,所以可以預測很多程式都會又被攻擊的風險。