use-context-reviewer-security
OWASP Top 10 のセキュリティ レビュー。可読性は use-context-reviewer-readability、テスト設計は use-context-reviewer-testability に使う。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
OWASP Top 10 のセキュリティ レビュー。可読性は use-context-reviewer-readability、テスト設計は use-context-reviewer-testability に使う。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | use-context-reviewer-security |
| description | OWASP Top 10 のセキュリティ レビュー。可読性は use-context-reviewer-readability、テスト設計は use-context-reviewer-testability に使う。 |
| when_to_use | security, OWASP, XSS, SQL injection, prompt injection, LLM security, セキュリティ, 脆弱性, cloud security, AWS, IAM, Terraform, クラウドセキュリティ, インフラ |
| allowed-tools | Read Task Bash(ugrep:*) Bash(bfs:*) |
| agent | reviewer-security |
| context | fork |
| background | false |
| user-invocable | false |
LLM01 は信頼できないコンテンツを LLM に渡すアプリを対象とする。sink はプロンプトそのものであり、データと指示の境界なく連結された信頼できないテキストや、システムプロンプトに補間された呼び出し側の値が該当する。fetch_url のような LLM ツールは、A10 SSRF など非 LLM の対応物と同じように制約する。sink はツールであってプロンプトではない。
| ID | カテゴリ | パターン | 修正 |
|---|---|---|---|
| A01 | Broken Access Control | 認証なし、IDOR、path traversal | 認証ミドルウェア、所有権チェック |
| A02 | Cryptographic Failures | password: 'plaintext' | bcrypt/argon2 ハッシュ化 |
| A03 | Injection | db.query(\SELECT...${id}`)` | パラメータ化クエリ、ORM |
| A03 | Injection | exec(\ping ${host}`)` | 入力バリデーション、ライブラリで代替 |
| A03 | XSS | 静的に存在する dangerouslySetInnerHTML | デフォルト エスケープ、DOMPurify |
| A05 | Security Misconfiguration | cors({ origin: '*' }) | 明示的な origin 許可リスト |
| A05 | Security Misconfiguration | オプションなしの cookie: {} | secure, httpOnly, sameSite: 'strict' |
| A05 | Security Misconfiguration | エラー応答の err.stack で NODE_ENV ガードなし | 本番では汎用メッセージ、内部だけにログ |
| A09 | Logging Failures | logger.info({ password }) | センシティブ フィールドを除外 |
| A10 | SSRF | fetch(userInputUrl) | URL バリデーション、許可リスト |
| A07 | Authentication Failures | 認証エンドポイント (login, register, password-reset) にレート制限なし | auth ルートグループに rate limiter ミドルウェア |
| A01 | CSRF | 状態変更リクエスト (POST/PUT/PATCH/DELETE) に CSRF トークン検証なし | Double Submit Cookie |
| A02 | Timing Attack | トークン/署名の === 比較 | 定数時間比較。全バイトを XOR し最後に判定 |
| A08 | Prototype Pollution | ...body スプレッドでリクエストオブジェクト構築 | 明示的なフィールド代入 |
| A03 | XSS (Taint) | サニタイザなしの dangerouslySetInnerHTML={{ __html }} | 境界で DOMPurify.sanitize() を呼ぶ |
| A03 | XSS (Taint) | 関数引数 → innerHTML でサニタイズなし | 関数境界でサニタイズ |
| A03 | XSS (Taint) | ユーザー制御 URL を持つ <a href={variable}> | https/http のみのプロトコル許可リスト |
| A01 | Open Redirect (Taint) | URL パラメータ → location.href でバリデーションなし | ドメイン許可リストまたは相対のみ |
| A04 | Insecure Design | origin チェックなしの postMessage ハンドラ | event.origin の厳密比較 |
| A02 | Sensitive Data Exposure | localStorage/sessionStorage に保存された JWT | httpOnly cookie に置き換える |
| LLM01 | Prompt Injection (LLM) | RAG ドキュメント・取得コンテンツ・ツール結果・role 引数など、信頼できない値や呼び出し側が制御する値が、データとしての枠付けなしにプロンプトへ到達 | 信頼できないコンテンツをデータとして区切る。呼び出し側の値は固定の列挙された指示にマッピングする |
重大度スケールは critical / high / medium。常に file:line を含める。独立した脆弱性はそれぞれ個別の finding として報告する。1 つのファイルに別個の問題が 2 つある場合 (例: path traversal と別の prompt injection)、一方を他方の注記に畳み込まず、両方を別々の finding として列挙する。
| シグナル | 重大度 | 必須出力 |
|---|---|---|
| 確実な悪用 | critical | 完全な悪用シナリオ + 具体的な修正 |
| 明確な脆弱性 | high | 攻撃ベクター + 具体的な修正 |
| 可能性のある問題 | medium | verification_hint + 修正提案 |
| 投機的のみ | none | 報告しない |
| トピック | 範囲 | ファイル |
|---|---|---|
| Basic | A01, A02, A07 | ${CLAUDE_SKILL_DIR}/references/owasp-basic.md |
| Injection | A03 | ${CLAUDE_SKILL_DIR}/references/owasp-injection.md |
| Advanced | A04-A06, A08-A10 | ${CLAUDE_SKILL_DIR}/references/owasp-advanced.md |
| Cloud | IAM, IaC, CI/CD | ${CLAUDE_SKILL_DIR}/references/cloud-infrastructure.md |
| Frontend | Taint analysis | ${CLAUDE_SKILL_DIR}/references/frontend-taint-checklist.md |
issue が build に投入できる形かを検分し、verdict (build-ready / needs-plan / needs-fix) と指摘を返す。起票には使わない (/issue)。PR のスクリーニングには使わない (/preview)。
Inspect whether an issue is in shape to hand to build, returning a verdict (build-ready / needs-plan / needs-fix) and the findings. Do NOT use to file an issue (use /issue) or to screen a PR (use /preview).
critic-design による敵対的批判を伴う設計探索。生き残った案を構造化 plan にまとめ、自己点検して呼び出し元に返す。plan の永続先は issue の Plan 節が唯一。計画意図のないコードベース調査には使わない (代わりに /research)。
Design exploration with adversarial critique by critic-design. Assembles the surviving approach into a structured plan, self-checks it, and returns it to the caller. The issue's Plan section is the plan's only persistent home. Do NOT use for codebase investigation without planning intent (use /research instead).
構造化されたタイトルと本文で GitHub Issue を生成する。単独で成立し、前段を要求しない。challenge / research の成果物が会話にあれば本文の根拠に使い、/think の plan 下書きがあれば `## Plan` 節へ移設する。issue 番号を渡すと、起票済みで Plan 節を持たない issue へ plan を転記する。
Generate GitHub Issue with structured title and body. Standalone; requires no upstream stage. When challenge / research artifacts exist in the conversation, they feed the body's evidence; when a /think plan draft exists, it is transferred into the `## Plan` section. Given an issue number, it transfers a plan into a filed issue that has no Plan section.