
AI駆動のコードレビュー、バグバウンティ調査、エクスプロイト構築、および実行に基づく検証を行う自律型ホワイトハットセキュリティ監査ツール。
configs/ - オプションのコンテキストプロファイルこれらのJSONファイルは任意の、回答を含まないコンテキストプロファイルです。Flounderの製品モードではなく、デフォルトでは読み込まれません。オペレーターが意図的に、あるターゲットクラスに対してモデルに馴染みのある枠組みを与えたい場合のために存在します。
| ファイル | オプションのコンテキスト |
|---|---|
vulnerability-audit.default.json | 汎用セキュリティ監査コンテキスト(ドメイン非依存) |
zk-constraint-audit.default.json | ゼロ知識/制約システムの回路 |
solidity-contract-audit.default.json | Solidity / EVMスマートコントラクト |
thegraph-contracts.default.json | The Graph プロトコルのコントラクト |
cairo-starknet-audit.default.json | Cairo コントラクトと Starknet 関連コンポーネント |
それぞれはそのクラスのための projectContext スキャフォールドです。資産の種類、攻撃者の
能力、信頼境界、不変条件、そして既知のスタックが持ちがちなフォーカス領域を定義します。
監査戦略は依然としてモデルが担い、フレームワークは依然として実行による証明を要求します。
フレームワークはこれらを単体で読み込むことは決してありません。デフォルトの flounder run / flounder map /
flounder audit には既成のバグ知識は一切ありません: 実行はブラインドで実行に基づいているため、
モデルは監査の試行が何かを見つける前に、実際のソースから攻撃面を列挙しなければなりません。
バグが通常どこにあるかをあらかじめ書いたリストをモデルに渡すと、
リストに載っている領域に偏り、載っていない領域から遠ざかり、監査を
読むことではなくチェックリスト合わせにしてしまうリスクがあります。これはこのツールが
新しいバグを見つけるための意図とは逆なので、プロファイルは明示的に要求しない限りオフのままです。
これらは、そのトレードオフに価値があるケースのために存在します: よく踏まれた脆弱性 クラス は共通の攻撃面を事前に与えることが実際に有用であり、限られた予算では フォーカス/対象外の先取りが必要であり、あるいは馴染みのある スタックのスコープをすばやく枠組みする**ためのものです。Solidity/EVM と ZK のプロファイルは一般的な高シグナルの例です。そうした状況では、オプトインしてください:
flounder run --config ./configs/solidity-contract-audit.default.json \
--target my-protocol --source ./contracts --corpus ./docs
--config <file> は実行設定にマージされ(applyConfigOverrides)、その後コマンドライン
のフラグがそれを上書きします — つまりCLIで渡した --target / --source / --corpus / --max-steps は
ファイルよりも優先されます。projectContext のうち、現時点でモデルに届くのは summary、focusAreas、
outOfScope のみです(スコープ注記に織り込まれます)。以下のよりリッチなフィールドは
現時点ではドキュメント/スキャフォールドであり、人間の作成者のための脅威モデルを記録しますが、
プロンプトにはまだ注入されません。
{
"targetName": "…",
"sourcePaths": [], // usually left empty; pass the real target via --source
"corpusPaths": [], // usually left empty; pass the project's own docs via --corpus
"thinkingLevel": "xhigh",
"projectContext": {
"summary": "…", // ── injected into the model's scope note
"focusAreas": ["…"], // ── injected
"outOfScope": ["…"], // ── injected
"criticalAssets": ["…"], // scaffold only (declared, not yet prompted)
"attackerCapabilities": ["…"], // scaffold only
"trustBoundaries": ["…"], // scaffold only
"securityInvariants": ["…"], // scaffold only
"scenarioGuidance": ["…"] // scaffold only
}
}
プロファイル内では sourcePaths / corpusPaths を空のままにし、実際のターゲットと
プロジェクト自身の仕様書/ドキュメントをコマンドラインで渡してください。プロファイルは枠組みであり、
ターゲットの実際の資料の代わりにはなりません。
プロファイルは**コンテキストであり、決して判定ではありません。**モデルにどこを見るべきかを伝えることはできますが、
何が見つかるかを伝えることはできません。確認は依然として実行からのみ得られます — 発見
が本物なのはPoCが実行されたからであり、プロファイルに一致したからではありません。(プロファイル自身の
scenarioGuidance もそれを明言しています: 「発見を主張する静的バグルールを書いてはならない」)
ここはドメインコンテキストパックのオプトイン用の置き場所です。追加する場合は、クラスに対して汎用的に保ち、
回答を含まないようにしてください: クラスが持ちがちな攻撃面と不変条件を捉え、
特定のターゲットの特定の既知バグを決して含めないでください。ターゲット固有のものはすべて、
その監査の --corpus に属し、ここには属しません。