資安漏洞獵人 是做什麼的?
當目標是進行實用的漏洞發現,以利於負責任揭露或提交漏洞獎勵時使用,而非廣泛的最佳實務審查。
使用時機
- 掃描儲存庫以尋找可被利用的漏洞
- 準備提交給 Huntr、HackerOne 或類似漏洞獎勵平台的報告
- 進行事件分級,判斷重點在於「這真的能獲得獎金嗎?」而非「這在理論上不安全嗎?」
運作方式
傾向於尋找遠端可達、使用者可控的攻擊路徑,並丟棄那些平台通常會標記為「資訊性」或「超出範圍」的模式。
範圍內模式
以下是持續具有重要性的問題類型:
| 模式 | CWE | 典型影響 |
|---|---|---|
| 透過使用者可控的 URL 造成的 SSRF | CWE-918 | 內部網路存取、雲端中繼資料竊取 |
| 中介軟體或 API 防護中的身分驗證繞過 | CWE-287 | 未經授權的帳戶或資料存取 |
| 遠端反序列化或上傳至 RCE 路徑 | CWE-502 | 程式碼執行 |
| 可達端點中的 SQL 注入 | CWE-89 | 資料外洩、身分驗證繞過、資料破壞 |
| 請求處理器中的命令注入 | CWE-78 | 程式碼執行 |
| 檔案服務路徑中的路徑遍歷 | CWE-22 | 任意檔案讀取或寫入 |
| 自動觸發的 XSS | CWE-79 | 會話竊取、管理員帳戶被入侵 |
跳過這些
除非漏洞獎勵計畫另有規定,這些通常屬於低訊噪或超出懸賞範圍的項目:
- 僅限本機的
pickle.loads、torch.load或類似功能,且無遠端路徑 - CLI 工具中的
eval()或exec() - 完全硬編碼命令上的
shell=True - 僅缺少安全性標頭
- 不具利用影響的一般性速率限制問題
- 需要受害者手動貼上程式碼的自我型 XSS
- 不屬於目標計畫範圍的 CI/CD 注入
- 示範、範例或僅供測試的程式碼
工作流程
- 首先確認範圍:計畫規則、SECURITY.md、揭露管道及排除項目。
- 找出真實進入點:HTTP 處理器、上傳功能、背景任務、Webhook、解析器及整合端點。
- 在有用之處執行靜態工具,但僅將其視為分級輸入。
- 從頭到尾閱讀真實的程式碼路徑。
- 證明使用者控制能抵達有意義的接收器。
- 以最小的安全概念驗證 (PoC) 確認可利用性與影響。
- 在撰寫報告前檢查是否與現有報告重複。
範例分級迴圈
semgrep --config=auto --severity=ERROR --severity=WARNING --json
然後手動篩選:
- 移除測試、示範、測試用固定程式碼、供應商程式碼
- 移除僅限本機或不可達的路徑
- 僅保留具有明確網路或使用者控制路由的發現
報告結構
## 描述
[漏洞是什麼以及為何重要]
## 有漏洞的程式碼
[檔案路徑、行數範圍以及一小段程式碼]
## 概念驗證
[最小可行的請求或腳本]
## 影響
[攻擊者可以達成什麼]
## 受影響版本
[測試時的版本、提交或部署目標]
品質閘門
提交前:
- 程式碼路徑可從真實使用者或網路邊界觸及
- 輸入確實由使用者控制
- 接收器有意義且可被利用
- PoC 可行
- 該問題尚未被公告、CVE 或已開啟的工單涵蓋
- 目標實際上在漏洞獎勵計畫的範圍內