OpenSource-Hub

shannon

CLI ツール

KeygraphHQ/shannon

ソースコードを分析し、実弾攻撃を実行する自律型AIペネトレーションテストツール。

概要

Shannon Lite は自律型ホワイトボックスAIペネトレーションテストツールで、ソースコードを分析してアタックサーフェスを特定し、実行中のアプリケーションに対して実際の脆弱性悪用を実行します。インジェクション、XSS、SSRF、認証バイパスなどのOWASP脆弱性をカバーする再現可能なPoCエクスプロイトを提供します。オンデマンドのセキュリティテストに適しており、手動ペネトレーションテストの合間の空白を埋めることができます。

README プレビュー

>[!NOTE]\n> **[📢 Sunsetting Router Mode (claude-code-router)`. →](https://github.com/KeygraphHQ/shannon/discussions/301)**\n\n\n\n\n\n# Shannon — AI Pentester by Keygraph\n\n\n\nShannon is an autonomous, white-box AI pentester for web applications and APIs. \nIt analyzes your source code, identifies attack vectors, and executes real exploits to prove vulnerabilities before they reach production.\n\n---\n\n\n\n\n---\n\n\n## What is Shannon?\n\nShannon is an AI pentester developed by [Keygraph](https://keygraph.io). It performs white-box security testing of web applications and their underlying APIs by combining source code analysis with live exploitation.\n\nShannon analyzes your web application's source code to identify potential attack vectors, then uses browser automation and command-line tools to execute real exploits (injection attacks, authentication bypass, SSRF, XSS) against the running application and its APIs. Only vulnerabilities with a working proof-of-concept are included in the final report.\n\n**Why Shannon Exists**\n\nThanks to tools like Claude Code and Cursor, your team ships code non-stop. But your penetration test? That happens once a year. This creates a *massive* security gap. For the other 364 days, you could be unknowingly shipping vulnerabilities to production.\n\nShannon closes that gap by providing on-demand, automated penetration testing that can run against every build or release.\n\n## Shannon in Action\n\nShannon identified 20+ vulnerabilities in OWASP Juice Shop, including authentication bypass and database exfiltration. [Full report →](sample-reports/shannon-report-juice-shop.md)\n\n\n\n## Features\n\n- **Fully Autonomous Operation**: A single command launches the full pentest. Shannon handles 2FA/TOTP logins (including SSO), browser navigation, exploitation, and report generation without manual intervention.\n- **Reproducible Proof-of-Concept Exploits**: The final report contains only proven, exploitable findings with copy-and-paste

FAQ (4)

トラブル対応
`shannon stop` の実行時に "Could not inspect the scan worker" エラーが発生する場合の解決方法

これは @keygraph/shannon v3.4.0 の既知のバグで、docker ps --format が {{ index .Labels "..." }} を使用しているにもかかわらず、Docker が .Labels を文字列として公開するため、テンプレートが失敗し、worker コンテナと Temporal ワークフローが実行され続けている間に stop が誤解を招く 'Could not inspect' エラーを報告します。**修正:** 最新バージョンに更新してください — このバグは PR #494 で修正されました(npx @keygraph/shannon@latest を使用してください)。**回避策(手動停止):** 1) worker コンテナを停止します: docker stop <shannon-worker-container> 2) Temporal ワークフローを終了します: docker exec shannon-temporal temporal workflow terminate -w <workspace> --reason "manual stop"。なお、stop --all およびワークスペースを指定しない stop も同じバグの影響を受けます。

参照 Issue #493
トラブル対応
Shannon実行時の「pnpm: command not found」および「EACCES: permission denied」エラーの修正方法

pnpmをhttps://pnpm.io/installationからインストールしてください。残っているShannonディレクトリを削除します: rm -rf ~/shannon。手動ビルドを省略するためにnpxショートカットを使用します: npx @keygraph/shannon setup の後、npx @keygraph/shannon start -u <URL> -r <REPO_PATH>。リポジトリパスは現在のユーザーが所有していることを確認してください。.shannon/deliverablesでEACCESエラーが発生した場合、ディレクトリは別のユーザー(例:sudo経由)によって作成された可能性があります。同じユーザーでリポジトリをクローンするか、sudo chown -R $USER:$USER /path/to/repoで所有権を修正してください。

参照 Issue #320
トラブル対応
シャノンがローカルLLMを使用している際にOutputValidationErrorでリトライループに陥ってしまうのはなぜですか?

これは非Claudeモデルを使用した場合の期待される動作です。ShannonはAnthropic Claudeモデル(haiku, sonnet, opus各階層)向けに最適化およびテストされています。ローカルLLMは無効な出力を生成する可能性があり、出力検証の失敗やTemporalのリトライを引き起こします。ハングアップを防ぐには、デフォルトのClaudeモデル階層を使用してください。このようなループを防ぐためのローカルLLMの直接サポートは現在予定されていません。

参照 Issue #260
ハウツー
Shannon (KeygraphHQ) のセキュリティ脆弱性を報告する方法

GitHubのプライベート脆弱性報告機能を使用してください: https://github.com/KeygraphHQ/shannon/security/advisories/new にアクセスし、プライベートセキュリティアドバイザリを送信してください。脆弱性の詳細を公開Issueに投稿しないでください。メンテナーはshannonとshannon-actionの両方のリポジトリでプライベート報告を有効にしており、問題がトリアージされ解決されるまで、詳細を非公開に保つよう求めています。

参照 Issue #500