AWS發布新的開源專案Snapchange,供開發者可以將快照模糊測試簡單地整合到自己的專案。Snapchange讓開發者只要對目標二進位檔案進行少量的修改,就能夠開始進行模糊測試,找出系統臭蟲。Snapchange仰賴KVM快照,因此需要在有KVM存取權限的機器上執行,並且僅支援x64主機,可用於EC2英特爾處理器的裸機執行個體。

Snapchange是一個用來建構模糊測試工具的Rust框架,能夠重播實體記憶體快照,高效地對目標進行模糊測試。模糊測試是一種自動化軟體測試技術,透過對目標程式提供一系列隨機的輸入,試圖引發程式錯誤、漏洞或是故障,藉此發現程式中未知的漏洞。

所謂的快照模糊測試,是透過將系統和應用程式的記憶體狀態保存下來,在後續的測試中,重複使用這些裝態,使得開發者可以在相同的條件下多次執行測試,準確地找出程式發生錯誤的原因。Snapchange需要利用Linux核心內建的虛擬機器管理器KVM,因此Snapchange的快照是指正在運作的虛擬機器實體記憶體轉存,以及相對應的暫存器狀態。

Snapchange透過在虛擬機器中注入變異資料,對目標進行模糊測試,提供中斷點Hook機制,以及多種格式的即時覆蓋率報告,還有在除錯很實用的單步驟追蹤功能。開發者可以同時在多個CPU核心上進行模糊測試,大幅提高測試的效率和速度,Snapchange還能同時監控測試結果,當程式發生崩潰,出現像是記憶體區段錯誤或是呼叫Address Sanitizer報告時,Snapchange都能立刻偵測並且回報用戶。

Snapchange模糊測試的循環,從快照初始化KVM虛擬機器記憶體狀態開始,接著供用戶在載入的訪客記憶體中寫入變異資料,當程式出現崩潰、逾時或是重置事件發生時,虛擬機器將恢復到乾淨狀態,並為下一次輸入做準備。Snapchange僅會重置經過修改的記憶體分頁,如此便能明顯減少需要恢復的記憶體量,加速模糊測試周期。

Snapchange最初是由AWS Find and Fix開源安全研究團隊,所開始的一項實驗性專案,目的是探索KVM快照模糊測試的潛力,而現在Snapchange已經成為一個可供研究人員和開發人員,試驗快照模糊測試的專案。

熱門新聞

Advertisement