security-review
Security review of a codebase or a target you are authorized to test: OWASP Top 10, secrets, auth, input validation, supply chain, infra hygiene. Use for a security audit, vulnerability or CVE check,
Files2
View on GitHubSKILL.mdskills/security-review/SKILL.md
GitHubSecurity review
For a general break-it pass use adversarial-review. Per-category commands and grep patterns live in references/checklist.md; work from it during the pass.
Authorization gate
Codebase review (static) needs no gate; read freely. Before testing any running system, confirm in writing:
- The system is ours, a CTF, a personal lab, or a paid engagement.
- The in-scope targets and the explicitly out-of-scope ones.
- The allowed methods (DoS, social engineering and supply-chain attacks are out by default) and the disclosure rules.
If any of it is unclear, stop and ask before sending packets.
Decision rules
- String-built SQL, shell commands or templates fed user input are blockers: parameterized queries and argument arrays only.
- Validate every external input at the boundary with a schema; type coercion is not validation.
- Authorization is per request: every endpoint asks whether this user may touch this resource.
- Secrets live in env or a secret store, scoped per environment, never echoed to logs. Hardcoded fallbacks and committed
.envfiles are blockers. Rotate on departure or runner replacement. - Library crypto only; never
Math.random()for tokens, never fast hashes for passwords. - Wildcard CORS with credentials is a blocker. Verify JWT signature,
algandexpbefore reading claims. - Server-side fetches of user URLs are SSRF until proven otherwise: allowlist hosts, block metadata and link-local ranges.
- JSON is safe to deserialize; any richer format on untrusted input needs scrutiny.
- Untrusted LLM input is data, not instructions: delimit it, and verify model output before acting on it.
- CI: workflow
permissions:least-privilege, third-party actions pinned to a commit SHA, base images pinned by digest, lockfile committed, no publishing from a laptop and no secrets exposed to fork builds.
Categories
Codebase: secrets, input validation, injection, authn and authz, XSS and encoding, CSRF and CORS, SSRF, crypto, deserialization, supply chain, logging, LLM-specific.
Live target (authorized only): recon, auth surface, web app, API, infra.
Findings
Severity: Blocker (correctness, security, data loss) / Should-fix (compounding design debt) / Nit.
Each finding: severity with reasoning, location (path:line or URL and parameter), reproduction (steps or a curl one-liner), attacker impact, and the specific fix.
Out of bounds
Unauthorized targets, mass exploitation or destructive payloads, detection evasion for malicious use, compromising third-party packages, and DoS testing without written approval.