Google所釋出的開源模糊測試(Fuzzing)服務OSS-Fuzz,現在也支援Java和其他JVM程式語言,像是由Kotlin和Scala等編寫的應用程式,開發者只要依照Google所提供的文件操作,就可以將JVM程式語言所編寫的開源專案,加到OSS-Fuzz中進行模糊測試。

OSS-Fuzz是Google在2016年釋出的模糊測試服務,讓開源開發者可用來尋找軟體中的錯誤,其結合了各種模糊測試技術,像是libFuzzer模糊引擎和AddressSanitizer,並利用ClusterFuzz分散式執行環境,來擴展模糊測試的規模。

現在Google開源安全團隊和自動安全測試公司Code Intelligence合作,將Jazzer模糊器整合到OSS-Fuzz中,使得以JVM程式語言開發的開源專案,現在也可以使用OSS-Fuzz進行連續模糊測試。Google提到,OSS-Fuzz已經在開源專案中發現超過25,000個錯誤,而在擴展OSS-Fuzz對JVM程式語言的支援後,使得更多專案也能獲得保護和改進。

Jazzer能夠讓用戶使用libFuzzer,對JVM語言程式碼進行模糊處理,Jazzer支援所有編譯成為JVM位元組碼的語言,因為檢測是在位元組碼層級完成,因此Java、Kotlin、Scala和Clojure都沒問題,Jazzer還可以透過JNI執行的原生程式碼覆蓋率(Code Coverage)回饋,在非記憶體安全的原生程式碼中,發現記憶體漏洞。

Google提到,在記憶體安全程式碼進行模糊測試,對於尋找行為錯誤或是崩潰臭蟲很有用。Jazzer找到了json-sanitizer中行為錯誤臭蟲,可被用於跨站腳本攻擊上,而最近更發現了以太坊中的崩潰臭蟲,該臭蟲可能導致大部分網路離線。

對記憶體安全的程式碼進行模糊測試時,可以使用典型對非記憶體安全程式碼進行模糊測試的方法,將變異輸入傳遞給程式碼,等待程式崩潰,或是採用類似單元測試的方法,模糊器將會驗證程式碼是否正確運作。

也可以使用差異模糊測試(Differential Fuzzing)在JVM程式碼中發現臭蟲,使用該方法模糊測試器會將變異的輸入資料,傳遞給具有相同功能實作的多個函式庫,以比較每個函式庫結果的差異。

熱門新聞

Advertisement