Snapchange,AWS 的開源模糊測試工具

Amazon Web Services,發布了一個新的開源 KVM 支持的模糊測試工具

發布的消息是e 亞馬遜發布了一款名為 Snapchange 的新模糊測試工具,它允許您在不修改可執行文件且不存在應用程序源代碼的情況下檢查它們。 此舉部分旨在解決對軟件供應鏈安全性的擔憂。

在亞馬遜帖子中提到, Snapchange 最初是一項實驗 來自 AWS Find and Fix (F2) 開源安全研究團隊,探索使用 KVM 啟用快照模糊測試的潛力。

今天,我們很高興地宣布推出 Snapchange,這是一個新的開源項目,可以使基於快照的模糊測試變得更加容易。 Snapchange 允許以最少的修改對目標二進製文件進行模糊測試,提供有助於模糊測試的有用見解。

Snapchange 是一個 Rust 框架,用於創建播放物理內存快照的模糊器,以提高效率並降低模糊多種目標的複雜性。 Snapchange 使用 Linux 內核的內置虛擬機管理器的功能,稱為內核虛擬機或 KVM。 

關於 Snapchange

據說, Snapchange 允許使用派生的可執行代碼加載物理內存轉儲 並組織, 使用 KVM 管理程序,循環執行代碼 出現在垃圾場, 迭代輸入數據的各種組合,跟踪出現的故障或異常並在下一次迭代後重新開始檢查,每次內存段和 CPU 寄存器都恢復到原始狀態。

一個迭代在異常結束後重置並重新開始, 等待時間或某個事件的發生。 將輸入的數據直接替換到內存中,以節省初始化時的資源到內存的初始狀態,在執行下一次迭代後,確定內存中有哪些數據發生了變化。

初始內存轉儲是通過保存虛擬機的快照創建的 被測應用程序執行的環境,運行在VirtualBox或QEMU下,輸入數據的替換邏輯是通過創建特殊的腳本來確定的,循環執行的起始位置是通過調試器中的斷點設置來設置的。

例如,如果需要檢查網絡請求的多狀態處理,研究人員在 VirtualBox 或 QEMU 中啟動客戶系統上的應用程序,在調試器中找到請求處理程序執行的開始(例如,調用recv函數後),在其上打斷點,確定接收到的網絡包加載到的內存區域。 之後,來賓系統的快照被創建並上傳到 Snapchange。

為了驗證,編寫了一個腳本,將枚舉期間的數據直接寫入緩衝區。 的網絡數據包,其中 允許您模擬真實網絡數據包的處理。 Snapchange 從它停止的地方開始,每次更改緩衝區中的數據內容並將內存狀態重置為其原始狀態。

支持各種策略來生成輸入數據。 可以通過並行執行枚舉綁定到不同 CPU 內核的多個環境。 除了檢測代碼執行過程中的故障外,它還支持性能指標的收集、覆蓋率統計的累積以評估可執行代碼的覆蓋率以及可執行代碼的逐步跟踪。

對項目感興趣,您應該知道該項目的代碼是用 Rust 編寫的,並在 Apache 2.0 許可下通過 GitHub上.

Snapchange 在 Linux 中運行,但需要直接訪問底層 KVM 原語。 因此,它支持在沒有管理程序的情況下運行的 EC2 裸機實例類型,但不支持 EC2 虛擬化實例。

最後,如果大家有興趣可以詳細了解一下,可以查閱原公告 在下面的鏈接中。


發表您的評論

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

*

*

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