Shannon 是 Keygraph 釋出的自主滲透測試代理,在 GitHub 累積五萬一千三百二十一顆星標。它以「沒有利用就沒有報告」為原則,先讀原始碼找出攻擊路徑,再對執行中的應用實際執行利用,只有取得可重現證明的漏洞才進入報告。專案採 AGPL-3.0 授權,可完全在本機或 CI/CD 流程中自行執行。

Shannon 的 GitHub 儲存庫 README 開頭,頂部為 Keygraph 的橘色 ASCII 標誌與專案名稱,中間以粗體標示這是網頁應用與 API 的自主 AI 滲透測試工具,說明它會分析原始碼、找出攻擊路徑並執行真實利用,接著是 npx 啟動指令與 Join Discord、Keygraph.io 兩顆按鈕

Shannon 是什麼?

Shannon 是 Keygraph 的自主滲透測試代理,結合原始碼分析與實際利用,針對網頁應用與 API 找出可驗證漏洞,在本地以命令列執行,採 AGPL-3.0。

專案定位在開發流程的持續檢測,而非取代專業滲透測試人員。官方在文件中明確說明,人類測試者的價值在於理解業務脈絡與設計非預期的攻擊鏈,這部分目前仍無法由模型替代。

名稱取自資訊理論之父 Claude Shannon。團隊把滲透測試描述為資訊問題:每一次探測都在降低對系統狀態的不確定性,工具的好壞取決於能否用最少的請求換到最多的訊號。

專案於二零二五年九月建立,主要語言為 TypeScript,官方同時經營雲端版本 Keygraph Pro 與企業版,開源版本則保留完整的代理引擎。

「沒有利用就沒有報告」代表什麼?

意思是報告只收錄已成功執行的漏洞,無法示範利用的假設一律丟棄。這條規則把掃描器的推測噪音排除在外,也讓 CI/CD 的嚴重度門檻只計算真正被利用的發現。

傳統掃描器輸出的是可能性清單。規則比對命中之後,工具會列出可疑端點,交由人工判斷是否成立,團隊往往在數百條告警中耗掉時間。

Shannon 的做法相反。它先把原始碼分析與執行期偵察兩條線的候選合併去重,再交由利用代理逐條嘗試,沒有成功即從結果中移除,最終報告只保留附有證據的條目。

這條規則同時影響流程整合。官方文件說明,程式碼分析的假設不會令管線失敗,嚴重度門檻只統計狀態標記為已利用的發現,避免每次提交都被理論風險攔下。

Shannon 的技術架構如何運作?

架構分六階段:偵察與漏洞分析、代理式原始碼分析、發現合併去重、利用代理實測、驗證淘汰、輸出報告。兩條分析線並行後匯入同一條利用佇列,全程在臨時容器內執行。

第一階段探索執行中的應用,把運行時行為對回原始碼,並派出針對注入、跨站腳本、伺服器端請求偽造、認證與授權五類問題的專門代理。

第二階段處理靜態結構。代理會先描繪應用架構、信任邊界、對外介面、依賴關係、資料流向與高風險資產,再針對這些位置開啟定向調查。

第三與第四階段是整個設計的關鍵。兩條來源的候選經過合併與去重後形成利用佇列,再由利用代理對執行中的應用發動真實攻擊,每一步都在可重現的前提下記錄。

第五與第六階段負責收尾。無法示範的候選會被驗證環節淘汰,通過者進入報告,同時輸出 PDF、Markdown、JSON 與 SARIF 二點一版四種格式,供下游系統讀取。

支援哪些漏洞類型與測試場景?

覆蓋以 OWASP 為主的可利用漏洞,包含注入、跨站腳本、伺服器端請求偽造、認證失效與授權缺失。支援登入流程、一次性密碼、電郵驗證、指定測試範圍與交戰規則。

覆蓋範圍集中在能實際造成影響的類型。官方把重心放在可執行利用的注入與存取控制問題,而非完整性掃描,這也是開源版與商業版的功能分界。

需要登入的系統同樣可以測試。設定檔支援帳號密碼、登入流程腳本、一次性密碼、電郵驗證,並可指定關注區域與交戰規則,讓代理在授權範圍內行動。

工作區具備續跑能力。掃描中斷後可以從既有工作區恢復,已完成的分析不會重複執行,對於單次執行需時一至一點五小時的場景相當實用。

如何在 CI/CD 流程中啟用 Shannon?

官方提供 GitHub Actions 與 GitLab CI/CD 元件,在管線中分析原始碼並攻擊測試環境,保留 PDF、Markdown 與 SARIF 報告,可設嚴重度門檻。

GitHub Actions 版本以 KeygraphHQ/shannon-action@v1 呼叫,需傳入目標網址、模型憑證與嚴重度門檻,並可選擇把結果上傳到程式碼掃描。

管線預設使用檢出目錄作為原始碼來源,同時對已部署的測試環境發動攻擊。這種組合令分析與實測能夠對齊同一份提交,避免版本錯配。

執行環境需具備 Docker 與 Docker Compose 第二版,且目標須為可連線的測試或開發環境。官方要求使用私有儲存庫,並把模型憑證存放在 Actions 密鑰中。

部署與執行需要什麼條件?

需要 Docker 與 Node.js 二十二以上,自備模型憑證,內建 Anthropic、OpenAI、xAI 與 Bedrock 四家供應商,也可指向本地端點。

最簡流程是兩道指令。先以互動精靈完成憑證設定,再以目標網址與儲存庫路徑啟動掃描,工具會從 Docker Hub 拉取工作映像,把儲存庫以唯讀方式掛載進臨時容器。

模型選擇具備彈性。四家供應商為內建選項,其他相容端點可透過自訂基礎網址接入,本地模型則可經 Ollama、vLLM 或 LM Studio 提供,並以自訂模型設定檔描述。

供應商端的資安審查是實際門檻。Anthropic 與 OpenAI 對資安用途設有即時防護機制,可能在掃描中途中斷,官方要求在首次執行前先完成合法測試者驗證,這一步在實務上最容易卡住。

單次掃描需時多久、成本如何?

官方指出完整執行約需一至一點五小時,費用取決於模型定價與應用複雜度。工具本身不收費,成本全部來自呼叫模型的 token 支出,可用訂閱方案或本地模型降低成本。

時間長度來自架構設計。多階段分析加上真實利用嘗試,每個候選漏洞都要經過偵察、嘗試與驗證,無法像規則掃描一樣在數分鐘內完成。

成本結構相對透明。Keygraph 不在模型流量中抽取費用,請求直接送往使用者設定的端點,帳單由供應商開立,選用便宜模型或本地模型可明顯壓低支出。

官方另提供訂閱路徑。最新版本支援 ChatGPT Plus 與 Pro 訂閱,也支援 xAI 訂閱;Claude Code 訂閱則需退回一點九點零版,該版本是最後一個建構於 Claude Agent SDK 的發行版。

授權條款與商業版本有什麼差別?

開源版採 AGPL-3.0,可自行部署,費用只有模型支出。Pro 版每人每月五十美元,加入黑箱測試、依賴與密鑰掃描、發現管理、修復拉取請求與 Jira 同步。

功能分界相當清楚。開源版聚焦有原始碼可讀的快速滲透測試,適合個人開發者與小型團隊;商業版補上沒有原始碼時的黑箱測試,以及跨掃描的漏洞生命週期管理。

社群方案值得留意。美國境內的 501(c)(3) 非營利組織,以及開發人員不超過二十人的種子輪或 A 輪前初創,可免費使用 Pro 版,期間不收取雲端服務費。

授權條款屬於強 copyleft。AGPL-3.0 要求以網路服務形式提供修改版本時須公開原始碼,若計劃把引擎包進商業產品或提供託管服務,需另行洽談商業授權。

Shannon 的專案數據與社群規模如何?

專案累積五萬一千三百二十一顆星標、五千九百七十六個分支、三十一個待處理議題,主要語言為 TypeScript,二零二五年九月建立,提交紀錄約三百二十次。

51,321星標
5,976分支數
31待處理議題
TypeScript主要語言
2025-09建立時間
AGPL-3.0授權模式

星標成長速度反映資安社群的需求缺口。專案在一年內突破五萬顆星標,分支數接近六千,說明不少團隊已把它納入內部流程試用,而非只當作閱讀材料。

議題數量維持低位。三十一個待處理議題對照五萬顆星標的規模屬於相當克制,官方表明目前不接受外部程式碼貢獻,僅接受錯誤回報與功能建議。

版本節奏密集。近三個正式版本分別為十月二十七日的三點五點零、十月六日的三點四點零與九月二十一日的三點三點零,改動集中在報告排版、命令列穩定性與實驗性探測功能。

出處連結與延伸閱讀有哪些?

原始碼位於 GitHub 的 KeygraphHQ 組織,官網為 keygraph.io,另提供 GitHub Action 與 GitLab 元件,技術文件集中在 docs 目錄。

Shannon 的 GitHub 儲存庫首頁,頁首顯示組織名稱與專案名稱,右側為星標約五萬一千、分支與關注按鈕,主欄列出專案描述、Trendshift 徽章、啟動指令與安裝前置條件,右側欄為 About 區塊與主題標籤

儲存庫內另附兩份給 AI 代理閱讀的索引檔。llms.txt 提供精簡的專案地圖,llms-full.txt 則把說明文件與 README 合併成單一檔案,方便代理一次讀完。

Shannon 儲存庫的貢獻者統計頁,顯示提交活躍度圖表與貢獻者名單,主要提交集中在專案建立後的前三個月,後續由維護團隊持續更新,頁面右側列出提交總數與參與人數

評測資料同樣公開。官方在儲存庫內放入 Photoview 二點四點零版本的掃描報告,分別以 DeepSeek v4 Flash、Grok 4.6 與 Claude Opus 5 三款模型執行,並附上 SARIF 輸出供比對。

參考來源:https://github.com/KeygraphHQ/shannon

總結:Shannon 適合什麼團隊?

有原始碼、有測試環境且部署頻繁的團隊最適合,可在每次發佈前跑一次有利用證明的檢測。若需黑箱測試、跨掃描漏洞管理或無法接受 AGPL 條款,則應考慮商業版。

這個專案的核心價值在驗證而非列舉。把「能否實際打穿」當成報告門檻,令輸出的數量大幅下降,也令工程團隊更願意在發佈前跑一次。

主要限制有三項。目標必須是可犧牲的測試環境,因為利用過程會建立帳號、提交表單並改變狀態;單次執行需一至一點五小時,不適合每次提交都觸發;模型能力直接影響結果,指令遵循較弱的模型會明顯降低命中率。

對於已經採用自動化部署的團隊,較務實的做法是先以 Docker 在本機對一個內部測試環境跑完整流程,觀察報告品質與模型成本,再決定是否接入 CI/CD 並設定嚴重度門檻。