본문으로 건너뛰기
cccskills
무료GitHub에 공개

security-audit

Security audit — vulnerability scan, pentest review, attack-surface sweep; explicit request only, not regular feature work. Pre-implementation threat pass → threat-modeling.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(2)

  • SKILL.md8.8 KB
  • evals/triggers.json3.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

security-audit

Mission

Find real security vulnerabilities in code before they are exploited. This skill is proactive — it audits code for security weaknesses, not just responds to incidents.

For writing secure code patterns (policies, auth, CSRF), use the security skill instead.

When to use

Use this skill when:

  • Auditing a codebase or module for security risks
  • analysis-autonomous-mode routes here after detecting risky patterns
  • Reviewing code that handles user input, authentication, or authorization
  • Checking for vulnerabilities before a release or deployment

Do NOT use when:

  • Writing new auth/policy code — route to security
  • Hunting for functional bugs — route to bug-analyzer (proactive mode)
  • Investigating performance — route to performance-analysis
  • You need a pre-implementation threat model for a new feature — route to threat-modeling
  • You need end-to-end authorization analysis for one route/action — route to authz-review

Procedure: Security audit

0. False-positive gate — restate the claim before reporting

Before any finding enters the report, restate it as one falsifiable sentence naming all three of:

  1. Privilege level — what access the attacker already has (anonymous, authenticated user, tenant admin, CI runner).
  2. Execution context — where the vulnerable code runs (request handler, queue worker, sandboxed template, build step).
  3. Attacker precondition — the concrete state or input the attacker must control to trigger it.

If any of the three cannot be named concretely, the item is not a finding yet — trace further or drop it with a one-line reason.

Rationalizations to Reject:

RationalizationReality
"It looks dangerous"Pattern-recognition is not analysis — trace the full data flow from entry to sink first
"This is clearly critical"Complete a devil's-advocate pass — models systematically overrate severity
"Report it just in case"Over-reporting erodes trust; an unverifiable finding is noise, not diligence
"Same pattern as a known CVE"Same pattern ≠ same preconditions — verify the preconditions hold in THIS codebase

Standard vs. Deep verification routing:

  • Standard — traced data flow + all three claim elements named → report with the normal field list.
  • Deep — severity would be High/Critical, OR the precondition chain crosses a trust boundary you did not personally trace → run a devil's-advocate pass first: actively try to refute the finding (existing middleware? framework default? type system? config?). Report only what survives; findings the pass killed are listed one-line under Rejected candidates so the triage is auditable.

1. Map attack surface

Identify all entry points where untrusted data enters:

  • HTTP request parameters, headers, cookies
  • File uploads
  • API payloads (JSON, XML, form data)
  • Webhook callbacks
  • Queue job payloads from external sources
  • Import files (CSV, Excel, XML)
  • URL path segments and query strings

2. Trace trust boundaries

For each entry point, trace where user input flows:

User Input → Controller → Validation → Service → DB/File/External
                 ↓              ↓           ↓
            Is it sanitized?  Complete?  Used safely?

3. Check vulnerability categories

CategoryWhat to look for
SQL InjectionRaw queries with concatenation, missing parameter binding
XSSUnescaped template output (Blade {!! !!}, JSX dangerouslySetInnerHTML, Jinja `
CSRFMissing middleware, API endpoints without token verification
Auth bypassMissing policy checks, broken gate logic, withoutMiddleware()
IDORDirect object access without ownership verification
Mass assignmentMissing $fillable/$guarded, request()->all() in create/update
File uploadMissing type validation, path traversal, executable uploads
SSRFUser-controlled URLs passed to HTTP client
DeserializationUnserializing user input, unsafe queue payloads
Secret exposureHardcoded credentials, secrets in logs, .env in public dir
Rate limitingMissing throttle on auth endpoints, password reset, API
Header injectionUser input in response headers, email headers
Insecure defaults / fail-openGuards that allow on error (catch { return true } in an authz check), default-allow matchers, debug mode defaulting on, permissive CORS/verify=false fallbacks, feature flags whose missing value grants access

Worked example (fail-open): if (!$gate->check($user)) { … } wrapped in a try/catch that logs and continues fails open — an exception in the gate grants access. Finding shape: Category Insecure defaults, Evidence the catch block file:line, Fix fail closed — rethrow or deny on gate error.

3b. Out of scope — route, do not guess

The table above names vulnerability classes, which are stable. This package carries no cryptographic parameter, key size, work factor, cipher suite, or TLS version floor: a value copied here reads authoritative long after it stops being true. Report the finding, route the fix to https://cheatsheetseries.owasp.org/ — Cryptographic Storage, Transport Layer Security, Password Storage, XML External Entity Prevention — and never name a value from memory. Rationale and reopening condition: ADR-238.

4. Framework-specific checks

→ Laravel-specific checks: see laravel § Security audit checks.

5. Dependency audit

  • Check composer.lock for known vulnerable packages
  • Check package-lock.json for frontend vulnerabilities
  • Identify outdated packages with known CVEs
  • Check if security patches are available

Output format

  1. Emit one entry per vulnerability using the field list below; one finding = one block, never merge.
  2. Category must map to an OWASP Top 10 (or LLM Top 10) bucket; Severity must use Low / Medium / High / Critical with a single Exploitability tag.
  3. Close with a Recommended Fix Order ranked by exploitability × blast radius and tag each line with Confidence.

For each vulnerability:

  • Vulnerability: concise title
  • Category: OWASP category (Injection, Broken Auth, etc.)
  • Location: file and line
  • Severity: Low / Medium / High / Critical
  • Exploitability: How easy to exploit (trivial / requires auth / complex)
  • Impact: What an attacker could achieve
  • Evidence: code reference showing the weakness
  • Fix: concrete mitigation
  • Confidence: Low / Medium / High

After the findings, add a Rejected candidates section: one line per look-dangerous-but-benign pattern the Step-0 gate killed, with the traced reason ("raw SQL string is a static migration constant — no user input reaches it"). An audit that rejects nothing has usually skipped the gate.

Integration with other skills

  • analysis-autonomous-mode — routes here when security concerns are detected
  • security — complementary: security is about writing secure code, this is about finding holes
  • universal-project-analysis — provides context about packages and framework usage
  • bug-analyzer — some bugs have security implications (chain when found)
  • untrusted-input-defense / lethal-trifecta-guard (rules) — prompt-injection / agent-config defense; consult when the audited code ingests untrusted content or wires an autonomous egress path

Gotcha

  • Don't report theoretical vulnerabilities without a concrete attack vector — false positives erode trust.
  • The model tends to flag framework-handled security as issues (e.g., Laravel's CSRF or Rails' protect_from_forgery is already handled).
  • Always check if a finding is already mitigated by middleware or configuration before reporting it.

Do NOT

  • Do NOT report theoretical risks that require impossible preconditions
  • Do NOT ignore user input flows — always trace from entry to usage
  • Do NOT assume frameworks handle everything — verify middleware and config
  • Do NOT confuse code quality issues with security vulnerabilities
  • Do NOT skip dependency checking — known CVEs are real risks

See also

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

event4u-app/agent-config122026년 10월 19일 업데이트

Use when defining or auditing the activation event — aha-moment selection, retention correlation, falsifiable definition. Triggers on 'what is our aha moment', 'redefine activation'.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

event4u-app/agent-config122026년 10월 19일 업데이트

Use when capturing an architectural decision — file naming, next ADR number, Status / Context / Decision / Consequences, index regen; fires even without saying 'ADR'.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

event4u-app/agent-config122026년 10월 19일 업데이트

Adversarial critique — devil's advocate, stress-test, honest teardown ('poke holes', 'be brutal', 'was hältst du davon'); explicit request only. Routine code or design review → code-review.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

event4u-app/agent-config122026년 10월 19일 업데이트

Use when reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md. Understands the full .augment/, agents/, and copilot-instructions structure.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

event4u-app/agent-config122026년 10월 19일 업데이트

Use for an adversarial red-team / blue-team / auditor review of an AI agent's CONFIG + behaviour (rules, skills, MCP, hooks, permissions) — attack-chain → defensive-gap list, not a code audit.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

event4u-app/agent-config122026년 10월 19일 업데이트

event4u-app의 스킬 모두 보기

이 스킬의 문제 신고