Conceptos Básicos
本文介紹 FlowFusion,這是一個自動模糊測試框架,專為偵測 PHP 解譯器中的記憶體錯誤而設計,透過資料流融合技術,結合現有測試案例以產生更複雜的測試情境,進而發現潛在的記憶體錯誤。
研究論文摘要
文獻資訊: Yuancheng Jiang, Chuqi Zhang, Bonan Ruan, Jiahao Liu, Roland Yap, Zhenkai Liang, and Manuel Rigger. (2024). Fuzzing the PHP Interpreter via Dataflow Fusion. arXiv preprint arXiv:2410.21713.
研究目標: 本文旨在提出一個名為 FlowFusion 的自動模糊測試框架,用於偵測 PHP 解釋器中的記憶體錯誤。
方法: FlowFusion 利用資料流融合技術,將現有的 PHP 測試案例進行合併,創造出具有更複雜程式碼語義的新測試案例,並透過變異測試、介面模糊測試和環境交叉測試等策略,進一步提高偵測記憶體錯誤的效率。
主要發現: FlowFusion 成功在 PHP 解釋器中發現了 56 個先前未知的記憶體錯誤,其中 38 個已修復,4 個已確認。與官方測試套件和單純的測試案例串聯方法相比,FlowFusion 能夠偵測到更多錯誤,並實現更高的程式碼覆蓋率。此外,FlowFusion 的效能也優於現有的模糊測試工具 AFL++ 和 Polyglot。
主要結論: FlowFusion 是一個有效的 PHP 解釋器記憶體錯誤偵測工具,能夠顯著提高 PHP 解釋器的安全性。
意義: 本研究為 PHP 解釋器的安全測試提供了一個新的方向,並為開發更安全的軟體系統提供了參考價值。
限制和未來研究: 未來可以進一步研究如何將 FlowFusion 應用於其他程式語言的解釋器,以及如何進一步提高 FlowFusion 的效率和準確性。
研究背景
PHP 是一種廣泛使用的網頁開發語言,其官方解釋器主要使用 C 語言編寫,因此容易受到記憶體錯誤的影響。
現有的 PHP 安全研究主要集中在應用程式層面的問題,例如程式碼注入,而較少關注解釋器本身的記憶體錯誤。
PHP 官方測試套件雖然包含大量測試案例,但這些案例大多語義簡單,難以觸發複雜的記憶體錯誤。
FlowFusion 的運作原理
資料流融合: FlowFusion 分析現有測試案例的資料流,並將不同案例的資料流進行合併,創造出具有更複雜程式碼語義的新測試案例。
變異測試: FlowFusion 對測試案例進行變異,例如替換運算元或運算式,以增加測試案例的多樣性。
介面模糊測試: FlowFusion 使用融合後的程式碼語義,對 PHP 解釋器的內部函數進行模糊測試。
環境交叉測試: FlowFusion 合併不同測試案例的執行環境,並隨機插入配置選項,以模擬更真實的執行環境。
實驗結果
FlowFusion 成功在 PHP 解釋器中發現了 56 個先前未知的記憶體錯誤,其中 38 個已修復,4 個已確認。
與官方測試套件和單純的測試案例串聯方法相比,FlowFusion 能夠偵測到更多錯誤,並實現更高的程式碼覆蓋率。
FlowFusion 的效能也優於現有的模糊測試工具 AFL++ 和 Polyglot。
結論
FlowFusion 是一個有效的 PHP 解釋器記憶體錯誤偵測工具,能夠顯著提高 PHP 解釋器的安全性。
Estadísticas
PHP 被全球超過 70% 的網站使用。
PHP 官方解釋器包含超過一百萬行程式碼。
PHP 官方測試套件包含超過 18,000 個測試案例。
FlowFusion 發現了 56 個先前未知的記憶體錯誤,其中 38 個已修復,4 個已確認。
FlowFusion 發現的錯誤影響了 PHP 解釋器中的 40 個原始程式碼檔案,並導致開發者修改了超過 1,539 行程式碼。