skills/reviewing-security/SKILL.md
OWASP Top 10 security review. Use when: security, OWASP, XSS, SQL injection, セキュリティ, 脆弱性, cloud security, AWS, IAM, Terraform, クラウドセキュリティ, インフラ. Do NOT use for readability (reviewing-readability), type errors (reviewing-type-safety), or test design (reviewing-testability).
npx skillsauth add thkt/dotclaude reviewing-securityInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| ID | Category | Pattern | Fix |
| --- | ------------------------- | -------------------------------------------------------- | --------------------------------------- |
| A01 | Broken Access Control | Missing auth, IDOR, path traversal | Auth middleware, ownership check |
| A02 | Cryptographic Failures | password: 'plaintext' | bcrypt/argon2 hashing |
| A03 | Injection | db.query(\SELECT...${id}`) | Parameterized query, ORM | | A03 | Injection |exec(`ping ${host}`) | Input validation, library instead | | A03 | XSS |dangerouslySetInnerHTML(static presence) | Default escaping, DOMPurify | | A05 | Security Misconfiguration |cors({ origin: '*' }) | Explicit origin allowlist | | A05 | Security Misconfiguration |cookie: {}(no options) | secure, httpOnly, sameSite: 'strict' | | A05 | Security Misconfiguration |err.stackin error response withoutNODE_ENVguard | Generic message in prod, log internally | | A09 | Logging Failures |logger.info({ password }) | Exclude sensitive fields | | A10 | SSRF |fetch(userInputUrl) | URL validation, allowlist | | A03 | XSS (Taint) |dangerouslySetInnerHTML={{ __html }}without sanitizer | DOMPurify.sanitize() at boundary | | A03 | XSS (Taint) | Function arg →innerHTMLwithout sanitization | Sanitize at function boundary | | A03 | XSS (Taint) |<a href={variable}>with user-controlled URL | Protocol allowlist (https/http only) | | A01 | Open Redirect (Taint) | URL param →location.hrefwithout validation | Domain allowlist or relative-only | | A04 | Insecure Design |postMessagehandler without origin check | Strictevent.origin` comparison |
| A02 | Sensitive Data Exposure | JWT stored in localStorage/sessionStorage | httpOnly cookie instead |
Report findings with confidence >=0.60. For 0.60-0.80: include verification_hint. For >=0.80: include full exploit scenario and fix recommendation. Always include file:line.
| Topic | Scope | File |
| --------- | ---------------- | ------------------------------------------------------------ |
| 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 |
tools
Delegate implementation to codex (coder) via the herdr-agentchat plugin and drive a two-pane conversation to completion.
development
Extract recurring patterns from past closed PRs/issues and the research findings in workspace/research/, verify them against the latest code, and propose them to docs/wiki/ via PR.
development
Create Decision Records (DR) in MADR v4 format with auto-numbering.
development
Detect flaky tests by shaking them — repeated runs under varied order, parallelism, and seed — plus a static smell scan that flags latent flakiness in tests that currently pass. Classify each target as confirmed-flaky, latent-flaky, or stable and fix the root cause without weakening the test. Do NOT use to fix a confirmed single bug (use /fix) or for static-only code review (use /audit).