工程開發
address-sanitizer avatar

address-sanitizer

整合 AddressSanitizer (ASan) 以偵測 C/C++ 專案中的記憶體安全漏洞,如緩衝區溢位與使用後釋放錯誤。

簡介

AddressSanitizer (ASan) 是一套關鍵的運行時檢測工具,專為發現 C、C++ 和 Rust 程式碼庫中嚴重的記憶體損毀錯誤而設計。此技能提供自動化工作流程,將 ASan 整合到您的模糊測試 (fuzzing) 與測試管線中,確保記憶體安全違規(通常是可利用安全漏洞的根本原因)能在開發階段早期被攔截。本工具適用於開發系統級程式碼、需要手動記憶體管理的軟體工程師、資安研究人員與品保測試人員。

  • 於編譯時對原始碼進行插裝 (instrumentation) 以監控記憶體分配,實現即時偵測非法記憶體操作。

  • 提供堆疊緩衝區溢位 (heap-buffer-overflow)、堆疊緩衝區溢位 (stack-buffer-overflow)、使用後釋放 (use-after-free)、重複釋放 (double-free) 與記憶體洩漏的深度診斷報告。

  • 簡化 ASAN_OPTIONS 的設定,以應對不同環境的需求,例如詳細資訊輸出 (verbosity)、洩漏檢測管理與錯誤中斷設定。

  • 支援整合 libFuzzer 與 AFL++ 等工業級模糊測試引擎。

  • 提供將 ASan 與 UndefinedBehaviorSanitizer (UBSan) 等其他消毒器結合的指引,以構建全面的安全防護。

  • 在模糊測試或單元測試期間,使用此技能透過 -fsanitize=address 進行編譯插裝。

  • 需要謹慎管理記憶體限制(例如在 libFuzzer 中設定 -rss_limit_mb=0),因為 ASan 會保留約 20TB 的虛擬記憶體。

  • 由於潛在的效能開銷(通常約 2-4 倍的減速)以及若錯誤報告暴露可能導致的安全性風險,不建議在生產環境中使用。

  • 非常適合用於除錯間歇性崩潰、審核舊有程式碼庫的安全回歸問題,以及建立穩健的測試工具鏈。

  • 限制包括對 Windows 與 macOS 等非 Linux 平台的支援有限或尚處實驗階段,且其效能開銷可能不適用於資源受限的環境。

倉庫統計

Star 數
4,874
Fork 數
424
Open Issue 數
21
主要語言
Python
預設分支
main
同步狀態
閒置
最近同步時間
2026年4月29日 上午06:42
在 GitHub 查看