Atheris,Python代碼測試工具包

谷歌揭幕 最近發布 Atheris項目,這是 一套開源工具 專業的 用於對Python代碼進行模糊測試 和用C / C ++編寫的CPython擴展。

該項目 使用基於libFuzzer的引擎 並可以與Address Sanitizer和Undefined Behavior Sanitizer工具一起使用,以檢測其他錯誤。 該代碼在Apache 2.0許可下打開。

關於Google Atheris

用Google Atheris的話來說,它是一個工具包,可用於自動查找Python代碼和本機擴展中的錯誤。 Atheris是一個“覆蓋率驅動”的模糊器,這意味著Atheris將在觀看程序運行時反复嘗試對程序進行各種輸入,並嘗試找到有趣的路徑。

支持Python 2.7和Python 3.3+的代碼審查,但要獲得完整的指導性覆蓋,我們建議使用Python 3.8和3.9分支,它們現在支持按操作碼進行操作碼統計。

正在進行中, Atheris列出輸入數據的可能組合併生成報告 所有檢測到的故障和未檢測到的異常。

例如,當檢查Atheris中的YAML解析庫時,發現某些YAML構造(例如指定“ -_”而不是整數值或使用列表而不是鍵)會引發意外的異常,而不是YAMLErrors標準錯誤。

模糊測試是一種發現編程錯誤的眾所周知的技術。 這些可檢測的錯誤中有許多具有嚴重的安全隱患。 使用此技術時,Google已發現成千上萬個安全漏洞和其他錯誤。 Fuzzing傳統上用於C或C ++等本地語言,但去年我們創建了一個新的Python Fuzzing引擎。 今天,我們發布了開源的Atheris模糊引擎。

雅典娜 也可以用來識別行為差異 針對相同任務的庫。 例如,對執行國際化域名解碼任務的Python軟件包“ idna”和庫“ libidn2”的摘要檢查發現,它們並不總是產生相同的結果。

Atheris的最佳用途之一是用於差分擴散器。 這些是模糊測試,目的是尋找打算做同一件事的兩個庫的行為不同。 與Atheris捆綁在一起的示例模糊器之一正是這樣做的,目的是將Python的“ idna”軟件包與C“ libidn2”軟件包進行比較。

特別是,如果域使用Unicode序列,則“ idna”和“ libidn2”會將國際化域名轉換為其他主機。

通常,Atheris在純Python代碼中很有用,只要它能夠表達什麼是“正確的”行為,或者至少表達出哪些行為絕對是不正確的。 這可能與評估庫輸出的準確性的模糊器中的自定義代碼一樣複雜,也可能與檢查是否未引發意外異常一樣簡單。

重要的是要考慮到 模糊測試產生輸入數據的各種隨機組合的流, 接近實際數據(例如帶有隨機標記參數的html頁面,標題異常的文件或圖像等),並修復過程中可能出現的故障。

如果任何序列導致異常或與預期的響應不匹配,則此行為很可能表明存在錯誤或漏洞。

最後,如上所述 Atheris使用2.7和3.3+版本的Python代碼, 儘管Google強烈建議使用3.8+和為CPython編寫的本機擴展。

Windows尚未受支持的操作系統之中,因此該引擎目前僅對Linux和Mac OS X用戶感興趣。

要在這些平台上使用它,開發人員必須安裝最新版本的Clang編譯器前端。

如果您想了解更多,您可以在 以下鏈接。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。