# dsh-daiyi-aimy-skill
> **DeepSeek Harness 向けの、認可スコープ内での偵察と Web 脆弱性検出:8 つのネイティブツール + 8 つのスキル、既定で拒否(deny-by-default)、検出のみ。** `dsh-daiyi-aimy-skill` は、[zxz0119/aimy-sikll](https://github.com/zxz0119/aimy-sikll)(Python CLI、v2.0.0)から再開発した **DeepSeek Harness (DSH) の Cordis プラグイン**です。上流のコマンドラインスクリプトを常駐型のネイティブツールに作り替え、さらに上流にはなかったものを追加しました。それが **認可スコープゲート**で、スコープが登録されていなければネットワーク系ツールは一切実行されません。 - 形態: ESM の Cordis プラグイン、**実行時のサードパーティ依存はゼロ**(`node:` 組み込みのみ)。 - ホスト: DSH `>=0.2.0-rc.1 <0.3.0`、Node `^22.19 || >=24`。 - バージョン: `3.0.0`、MIT、著者 戴亿。 ## 機能 | 機能 | 説明 | |---|---| | **8 つのモデル呼び出し可能ツール** | スコープ、偵察、ポート、ディレクトリファジング、クロール、Web スキャン、JWT 監査、レポート | | **既定で拒否(deny-by-default)** | すべてのネットワーク対象は `aimy_scope` を通じて登録する必要があります。未登録の対象はヒント付きで拒否されます | | **認可記録と監査** | 各スコープエントリには書面による認可メモ(8 文字以上)と任意の有効期限が必要で、変更は監査ログに記録されます | | **12 の検出 + 3 の偵察モジュール** | 検出: sqli / xss / cmdi / ssti / ssrf / nosqli / lfi / cors / jwt / graphql / proto-pollution / headers、偵察: crawler / param-miner / tech-fingerprint。ポートとディレクトリの探査はツール層にあります | | **単一のネットワーク出口** | すべてのリクエストは `lib/http.js` のガード付きプローブを通ります。リクエストごとのスコープ検査、予算、タイムアウト、ボディ上限、リダイレクトの再検査 | | **8 つの中国語スキル** | 認可スコープ、偵察ワークフロー、Web トリアージ、認証と JWT、API と GraphQL、レポート、初心者モード、熟練者モード | | **3 つのレポート形式** | Markdown / JSON / SARIF、既定で機微情報をマスク | | **実行時依存ゼロ** | `requests` なし、サードパーティ HTTP クライアントなし。ホストが `dsh-tools` と `dsh-skill` を提供します | | **検出のみ** | リバースシェル、デシリアライズ攻撃チェーン、SSRF ピボット、OOB コールバック、WAF バイパスはありません | | **UI パネルなし** | ツール、スキル、レポートファイルのみで、グラフィカルなインターフェースはありません | ## インストール 前提条件: DSH デスクトップ(`>=0.2.0-rc.1 <0.3.0`)と Node `^22.19 || >=24`。ビルド手順も実行時依存もありません。 ### オプション A: DSH プラグインマネージャー(推奨) DSH デスクトップの **設定 → プラグイン**を開き、プラグインマネージャーから次のいずれかをインストールします。 - **ローカルディレクトリ**: このリポジトリ(`package.json` と `cordis.patch.yml` を含みます)を指定します。 - **git リポジトリ**: `https://github.com/DaiYiqq/dsh-daiyi-aimy-skill`。 インストール後、プラグインマネージャーの reconcile がこのパッケージの `dsh.bundle.patch` を読み取り、`cordis.patch.yml` の挿入エントリ(`id: daiyi-aimy-skill`)をプロファイルに追加します。 ### オプション B: 手動でのプラグインディレクトリ配置 1. このディレクトリを DSH のプラグインディレクトリ(例: `~/.dsh/plugins/dsh-daiyi-aimy-skill`)に置きます。 2. プロファイルの `package.json` の dependencies に追加します。 ```json { "dsh-daiyi-aimy-skill": "file:~/dsh/plugins/dsh-daiyi-aimy-skill" } ``` > `file:` より後ろの部分は、あなたのマシン上の**絶対パス**である必要があります。上記の `~/...` は例示です。 3. プロファイルのディレクトリで `pnpm install` を実行します。 4. DSH を再起動/再読み込みします。このパッケージは `dsh.bundle.patch` を宣言しているため、プラグインマネージャーの reconcile がパッケージ名を `dsh.profile.bundles` に追加します。 読み込まれると、セッションは 8 つの `aimy_*` ツールと 8 つの `aimy-*` スキルを公開します。 ## クイックスタート(5 行) ```text // Step 1: register the authorized scope — without it every network tool refuses aimy_scope(action="add", target="example.com", authorization="Client authorization letter #A-1024, scope: example.com", expiresInHours=72) aimy_recon(target="https://example.com") aimy_crawl(target="https://example.com/", maxPages=10) aimy_web_scan(target="https://example.com/search?q=test", checks=["xss", "sqli"]) aimy_report(action="report", format="md", outputPath="reports/example-com.md") ``` ツール呼び出し結果の完全な例(一部省略): ```json { "target": "https://example.com/search?q=test", "checks": ["xss", "sqli"], "skipped": [], "params": [{ "name": "q", "location": "query", "sample": "test" }], "findings": [ { "module": "xss", "checkId": "xss-reflected", "title": "Reflected XSS (HTML context)", "severity": "high", "confidence": "high", "url": "https://example.com/search?q=test", "param": "q", "payload": "aimy1337", "evidence": "Parameter q was reflected verbatim in an HTML context; the payload appeared unencoded in the response (200).", "cwe": "CWE-79", "remediation": "Apply context-aware HTML/attribute/JS encoding, allowlist filtering, and CSP as defense in depth." } ], "requests": 9, "notes": ["runId=run-1a2b3c4d", "mode=rookie"] } ``` > 上記の検出結果はフィールドの形を示すための例にすぎず、`example.com` にこの問題があると主張するものではありません。実際の出力は対象と設定によって異なります。 ## ツール | ツール | 用途 | スコープが必要 | |---|---|---| | `aimy_scope` | 認可スコープの追加/一覧/削除/クリア、対象のドライラン | いいえ(これがゲート本体です) | | `aimy_recon` | DNS、HTTP ベースライン、セキュリティヘッダー、技術フィンガープリント、robots.txt | はい | | `aimy_port_scan` | TCP コネクトによるポート探査(ハンドシェイクのみ)、危険ポートの検出 | はい | | `aimy_dir_fuzz` | ソフト 404 ベースラインを用いたパス列挙と機微パスの検出 | はい | | `aimy_crawl` | 同一オリジンクロール: ページ、リンク、フォーム、パラメータ、JS エンドポイント | はい | | `aimy_web_scan` | 1 つの URL に対して Web チェック群(12 種類のチェック)を実行 | はい | | `aimy_jwt_audit` | オフライン JWT 監査: alg、弱いシークレット、クレーム、外部鍵ソース | いいえ(ローカルのみ) | | `aimy_report` | 集計、検出結果の一覧、Markdown / JSON / SARIF のエクスポート | いいえ | パラメータの詳細表、戻り値の形、エラーコード、制限: [docs/TOOLS.md](docs/TOOLS.md)(中国語)。 ## スキル | スキル | 読み込むタイミング | |---|---| | `aimy-authorized-scope` | セッション開始時、対象の変更/拡張時、または `NO_SCOPE` / `NO_MATCH` / `EXPIRED` / `PRIVATE_BLOCKED` の結果が出たとき | | `aimy-recon-workflow` | スコープ登録済みで、アセットマップ(ホスト、ポート、ディレクトリ、ページ、パラメータ、技術情報)が必要なとき | | `aimy-web-vuln-triage` | パラメータ付き URL があり、Web の検出結果が本物かどうか、深刻度はどれくらいかを判断する必要があるとき | | `aimy-auth-and-jwt` | ログイン状態、Bearer トークン、JWT、セッションやオブジェクトレベルの認可についての疑問があるとき | | `aimy-api-and-graphql` | `/api`、`/graphql`、`/swagger` 形式のインターフェースが存在するとき | | `aimy-finding-report` | スキャン 1 回分が終わり、レポートや CI 向け SARIF が必要なとき | | `aimy-rookie-mode` | 初心者、本番対象、または `mode=rookie` のとき | | `aimy-veteran-mode` | 明確な認可があり、ステージング/ラボ環境で、より高いカバレッジと連鎖チェックを行うとき | スキルは **手法のガイダンス**です。ツールを自動実行することはなく、`aimy_scope` をバイパスすることもできません。 ## 上流からのアップグレード | 観点 | 上流 `aimy-sikll` v2.0.0 | 本プラグイン v3.0.0 | |---|---|---| | 形態 | Python CLI、`python main.py