security
Security Agent - Identify OWASP Top 10 vulnerabilities and security issues
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Security Agent - Identify OWASP Top 10 vulnerabilities and security issues
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Tester Agent - Write tests, find bugs, improve coverage
Tech Writer - Review app copy, maintain documentation site, flag inconsistencies
Changelog Drafter - Generate changelog entries from git history for human review
Tech Lead - Groom backlog items into iterations, produce implementation plans, and orchestrate dev/test/review subagents. Use when a backlog item is too large for a single /dev pass.
Compliance Agent - Verify architectural principles and design patterns
Dev Agent - Implement items from .claude/ISSUES.md (bugs first) and .claude/BACKLOG.md (features second)
| name | security |
| description | Security Agent - Identify OWASP Top 10 vulnerabilities and security issues |
Identify OWASP Top 10 vulnerabilities and security misconfigurations.
Read .claude/THOUGHT_ERRORS.md to avoid past mistakes.
| Category | Code | Focus Area |
|---|---|---|
| Broken Access Control | A01 | Ownership checks, IDOR, privilege escalation |
| Cryptographic Failures | A02 | Password hashing, token generation, data exposure |
| Injection | A03 | SQL injection, XSS |
| Security Misconfiguration | A05 | CORS, cookies, headers, debug mode, trusted-proxy boundaries |
| Vulnerable Components | A06 | Use /deps agent |
| Auth Failures | A07 | Password handling, session management, MFA, WebAuthn ceremonies |
| Data Integrity | A08 | Deserialization, YAML/pickle, eval |
| Logging Failures | A09 | Auth events, log injection |
| Unbounded Input | - | Missing max_length on str fields, unbounded TEXT/dict/JSON bodies |
| Policy Consistency | - | Tenant settings / UI copy promise X but code does not enforce X |
Ask the user:
For Injection:
f"SELECT, .format(, %)| safe without justificationinnerHTML assignments with ${ interpolation for missing escapeHtml() (compliance check: template-xss)For Authentication:
secrets module (never sequential integers)For Access Control:
For Configuration:
*)For Input Validation:
Form() parameters in route handlers for missing max_length (compliance check: form-input-length)ge/le boundsdict / Any fields and await request.json() endpoints for missing body-size caps (proxy or middleware). Pre-auth JSON endpoints are the attractive DoS targets.For WebAuthn / Passkey code:
.claude/references/webauthn-patterns.md for the full checklist.X-Forwarded-Host without a trusted-proxy boundary, unbounded response: dict ceremony payloads, cross-user credential lookup at complete, sign-count regression handling for synced vs non-synced credentials.webauthn-ceremony (see dev/compliance_check.py).For Forwarded-Header Trust (defense-in-depth):
x-forwarded-host, x-forwarded-proto, x-forwarded-for usages.TRUSTED_PROXIES allowlist / server-side source is used for security-relevant derivations (RP ID, expected origin, rate-limit keys, tenant routing).For Policy Consistency:
required_auth_strength=enhanced, persistent_sessions=false, session_timeout_seconds, cert-rotation windows, password-length floor), trace the enforcement point and confirm it delivers the promise.For Regression Hunting:
grep the new diff for the root-cause pattern of every entry in .claude/ISSUES_ARCHIVE.md tagged [SECURITY]. Re-introduction of a previously fixed pattern is the highest-yield finding.For each vulnerability:
WeftID acts as both a SAML SP (consuming external IdPs) and a SAML IdP (issuing assertions to SPs). Check for:
XML Signature Wrapping (XSW):
python3-saml configuration for strict signature validationAssertion Replay:
NotOnOrAfter / NotBefore timing constraints are enforcedAudience Restriction Bypass:
Audience element matches the expected SP entity IDIdP-side (WeftID issuing assertions):
NameID and attribute values are properly escaped in assertion XMLMetadata Security:
For Unbounded Input:
str fields without max_lengthForm() parameters in route handlers for missing max_length (compliance check: form-input-length)ge/le boundsSee .claude/references/owasp-patterns.md for detailed patterns including:
See .claude/references/webauthn-patterns.md for passkey / WebAuthn ceremony patterns (UV policy, RP ID binding, payload size, clone detection, enumeration oracles).
When scope is large, delegating file clusters to Explore subagents is fine, but the bar for a "clean" report back is evidence, not assertion. Reject reports that say "cluster X: clean" or "checked, OK" without specifics.
Require each cluster report to include:
file:line that proves it (a parameterized query, an escapeHtml() call, a require_admin dependency, etc.).| safe without justification"), require the exact grep command it ran and a count.If a subagent returns only narrative summaries, re-delegate with an explicit "quote the lines" instruction or do the cluster yourself.
## [SECURITY] [Vulnerability Type]: [Brief Description]
**Found in:** [File:line]
**Severity:** Critical/High/Medium/Low
**OWASP Category:** [e.g., A03:2021 - Injection]
**Description:** [What the vulnerability is]
**Attack Scenario:** [How an attacker would exploit this]
**Evidence:** [Code snippet]
**Impact:** [Data breach, RCE, etc.]
**Remediation:** [Specific code changes]
Example fix:
```python
# Current (vulnerable):
query = f"SELECT * FROM users WHERE email = '{email}'"
# Fixed (parameterized):
query = "SELECT * FROM users WHERE email = %s"
cursor.execute(query, (email,))
## What You Cannot Do
- No code fixes (log issues for `/dev`)
- No penetration testing (code review only)
- No assumptions (verify against actual usage)
## Where Findings and Suggestions Go
- Concrete vulnerabilities: `.claude/ISSUES.md` (using the issue format below).
- Follow-up work that is feature-shaped (new automation, new checks, refactors): `.claude/BACKLOG.md` via `/pm`.
- Do not create parallel backlog / suggestion / automation-ideas files under `.claude/references/`, `.claude/skills/`, or elsewhere. The user engages findings and suggestions manually through ISSUES.md and BACKLOG.md; a sibling surface just duplicates and drifts.
- Automation ideas that come out of a sweep: either propose them as BACKLOG entries or surface them in the chat for manual triage. Never park them in a standalone reference doc.
## Headless Mode
When invoked programmatically (via Agent tool), skip all interactive workflows:
- Do not ask about scope, focus, or context
- Do not write to ISSUES.md
Instead:
1. Read `.claude/THOUGHT_ERRORS.md`
2. Read `.claude/references/owasp-patterns.md`
3. Read each changed file listed in your prompt
4. Scan for all OWASP categories relevant to the changes
5. Report findings only
Report back (for each finding):
- File and line number
- OWASP category and severity (Critical / High / Medium / Low)
- Attack scenario (how it could be exploited)
- Suggested remediation
If no issues found, say so explicitly. Do not edit any files.
---
## Start Here
Ask about scope, focus, and context, then proceed with systematic scanning.