
意図的に脆弱性を含むアプリ群を対象としたDASTベンチマークで、スキャナーのスコアリング用に正解キーを備えています。
意図的に脆弱性を持たせたアプリによるDASTベンチマーク。スキャナのスコアリング用に正解キーを備えたもの。
⚠️ このリポジトリには意図的に安全でないアプリケーションが含まれています。 これらは セキュリティツール(DASTスキャナ、SASTエンジン、LLMセキュリティエージェント)の ベンチマークのみを目的として存在しています。すべてのアプリは
127.0.0.1にバインドされ、 目立つバナーを表示し、実データを一切保持していません。これらのいずれも公開ネットワーク上に デプロイしないでください。
19個の意図的に脆弱性を持たせたアプリのスイートで、スタックごとに1つずつ、それぞれに 文書化された機械検証可能な**正解(ground truth)**を備えています。目的は、スキャナやエージェントが (a) 仕込まれたバグをどれだけ見つけられるか、(b) そのすぐ隣にある安全なニアミスコードをどれだけ 無視できるか、(c) 修正済みの双子に対して誤検知(ハルシネーション)を起こさないか、を測定することです。
19アプリ · 559個の仕込み脆弱性 · 155個のニアミス · 556個の実行可能なPoC ·
634個のカタログ化されたエンドポイント。 すべてのアプリは 127.0.0.1:13311 で起動し、
vuln/+safe/ の双子ペアとシングルイメージの --solo ビルドを備えています。
dynast-bench list はこの表をライブで出力し、dynast-bench surface <app> はそのエンドポイント
カタログを出力します。
| アプリ | スタック | データストア | 脆弱性 | ニアミス | ドキュメント |
|---|---|---|---|---|---|
| aspnet | C# / ASP.NET Core Razor Pages | SQL Server | 28 | 12 | plan |
| fastapi | Python / FastAPI + Jinja2 | Postgres | 26 | 5 | plan |
| gin | Go / Gin | Postgres | 17 | 12 | readme |
| golang | Go / chi | Postgres | 26 | 4 | plan |
| graphql | Node / GraphQL 16 API-only | Postgres | 31 | 6 | plan |
| jsp | Java / JSP + Servlets (Tomcat) | Postgres | 28 | 6 | plan |
| laravel | PHP 8.3 / Laravel 11 + Blade | MySQL | 25 | 7 | plan |
| llmagent | Node / Fastify + AI SDK + MCP | Postgres | 29 | 8 | plan |
| llmchat | Python / FastAPI + LangChain RAG | Postgres+pgvector | 30 | 9 | plan |
| nestjs | Node / NestJS + Handlebars | Postgres | 23 | 6 | plan |
| network | シミュレートされたマルチホストネットワークレンジ | 混在フリート | 32 | 5 | plan |
| nextjs | Node / Next.js 15 (リファレンス実装) | Postgres | 40 | 19 | plan |
| php | PHP / 手続き型LAMP | MySQL | 21 | 5 | plan |
| rails | Ruby / Rails 7.2 | Postgres | 26 | 6 | plan |
| springboot | Java / Spring Boot + Thymeleaf | Postgres | 30 | 4 | plan |
| swagger | OpenAPI / Swagger UI + スペック読み込み | Postgres | 19 | 5 | plan |
| websocket | Node 22 / ws + Socket.IO リアルタイム | Postgres | 28 | 6 | plan |
| weirdproxy | nginx + Apache + Traefik を単一オリジン上で | なし | 16 | 4 | plan |
| wordpress | PHP / WordPress + カスタムプラグイン | MySQL | 28 | 6 | plan |
スタックごとの追加サイドカー(Mailpit、MinIO、Redis、Jenkins、Prometheus、Ollama など)は 下記のアプリに記載されています。
スタックごとの設計ドキュメントは benchmark-plans/ にあります -
各アプリの完全な脆弱性カタログについてはそこから始めてください。このREADMEは
運用ガイドです。リポジトリのレイアウトと、アプリの実行およびスコアリング方法について説明します。
植え込まれた各バグには CWE と OWASP カテゴリが付与されています。クラスごとに集計すると(各バグは主たる CWE の下で一度だけカウント)、植え込まれたバグの内訳はおおよそ次のとおりです(集計は 480 バグ時点で最後に再生成されたもので、上記のアプリ別件数が最新です):
| クラス | CWE | バグ数 | アプリ数 |
|---|---|---|---|
| 機密データの露出(エラー、ログ、デバッグエンドポイント、バックアップ、ソース) | 200, 209, 489, 524, 532, 538, 540, 548 | 39 | 16 |
| デフォルト/ハードコード/漏洩した認証情報 | 321, 522, 798, 1104, 1392 | 38 | 18 |
| 認可の欠如または不備(BFLA、垂直+水平) | 269, 284, 285, 668, 862, 863 | 37 | 18 |
| クロスサイトスクリプティング(反射型・蓄積型・DOM) | 79 | 28 | 16 |
| 認証バイパス・弱いセッション・JWT 検証 | 287, 288, 290, 306, 347, 384, 613, 614, 1385 | 28 | 13 |
| SQL インジェクション(二次、ORDER BY、NoSQL を含む) | 89, 943 | 27 | 17 |
| プロキシ/パーサの解釈競合(パスの混同、ヘッダの信頼) | 345, 348, 349, 436, 441, 693, 697, 706, 807 | 27 | 10 |
| SSRF(ブラインド、リダイレクトチェーン、内部専用シンクを含む) | 918 | 20 | 17 |
| IDOR/BOLA(ユーザー制御のオブジェクトキー) | 639 | 19 | 17 |
| パストラバーサル・LFI/RFI・zip slip | 22, 98 | 19 | 16 |
| マスアサインメント/オーバーポスティング・プロトタイプ汚染 | 915, 1321 | 18 | 16 |
| ブルートフォース・レート制限の欠如・リソース枯渇 | 307, 400, 406, 674, 770 | 17 | 11 |
| ビジネスロジック、価格設定、クォータの悪用 | 625, 840 | 15 | 14 |
| OS コマンド/引数インジェクション | 78 | 14 | 12 |
| 安全でないデシリアライゼーション(pickle・PHP・Java・YAML) | 470, 502 | 14 | 11 |
| CORS の設定不備 | 942 | 14 | 14 |
| 競合状態/TOCTOU | 362 | 14 | 14 |
| オープンリダイレクト | 601 | 14 | 14 |
| ユーザーおよびリソースの列挙(応答の差異から観測可能) | 204, 598 | 13 | 12 |
| コードインジェクション・SSTI・式言語 | 94, 917, 1059, 1336 | 11 | 10 |
| 弱い暗号と乱数・平文通信 | 295, 319, 327, 330, 338 | 11 | 6 |
| パスワードリセット+アカウント回復の欠陥 | 184, 640 | 9 | 9 |
| 無制限/安全でないファイルアップロード | 434 | 9 | 9 |
| CSRF(クロスサイト WebSocket ハイジャックを含む) | 352 | 8 | 8 |
| プロンプトインジェクションと LLM ツールの悪用(直接・間接・RAG) | 1427 | 7 | 2 |
| XXE/XML 外部エンティティ | 611 | 5 | 5 |
| サプライチェーンと完全性(署名なし更新、脆弱な依存関係) | 494, 1035 | 2 | 2 |
| 安全でないネットワーク露出(バインド、サービス設定不備) | 1327 | 2 | 1 |
| ログ記録の不足/ログインジェクション | 117 | 1 | 1 |
OWASP カテゴリ別(Web アプリは 2021 Top 10、API 専用アプリは API Top 10 2023):
| OWASP | バグ数 | OWASP API | バグ数 | |
|---|---|---|---|---|
| A01 アクセス制御の不備 | 118 | API8 セキュリティ設定の不備 | 21 | |
| A03 インジェクション | 89 | API5 機能レベルの認可の不備 | 6 | |
| A05 セキュリティ設定の不備 | 72 | API1 オブジェクトレベル/プロパティレベルの認可の不備 | 4 | |
| A07 識別と認証の失敗 | 65 | API2 認証の不備 | 4 | |
| A04 安全でない設計 | 34 | API7 サーバーサイドリクエストフォージェリ | 4 | |
| A08 ソフトウェアとデータの整合性の失敗 | 17 | API9 インベントリ管理の不備 | 3 | |
| A10 SSRF | 15 | API3 オブジェクトプロパティレベルの認可の不備 | 2 | |
| A02 暗号化の失敗 | 15 | API4 リソース消費の無制限 | 2 | |
| A09 ログ記録と監視の失敗 | 4 | API6 機密ビジネスフローへの無制限アクセス | 1 | |
| A06 脆弱で古いコンポーネント | 3 | API10 API の安全でない消費 | 1 |
これらに加えて、Web 以外の 2 つのトラックがあります。network アプリはネットワークスキャナ向けにホスト/ポートおよびサービスレベルの所見を 32 件植え込み、2 つの LLM アプリ(llmchat、llmagent)はプロンプトインジェクション、ツール悪用、RAG ポイズニングのバグを植え込み、別のインジェクションチャネルトラックで採点されます。