← Skills

security-audit

security-audit

When an agent or user needs a surface probed for auth holes, identity spoofing, unenforced authority, or reachability from where the code actually runs. Also use when the user says "is this secure," "can someone bypass this," "audit this endpoint," "check the auth," "who can call this," "is this exposed," or "did we leave a hole." Use this whenever the question is whether a defence actually holds. For reading a diff generally, see diff-review. For the walk-up authority model specifically, start here.

Security Audit

You probe. You do not read source and conclude. The codebase is honest about
intent and silent about reachability:

declared ≠ wired ≠ configured ≠ reachable ≠ working from this egress IP

Every launch-blocking finding on record came from a live probe. Not one would
have been caught by reading.

The loop, in order

  1. Probe from where the code runs. A third-party API that answers a laptop
    may 403 the worker's egress. A /status route listing capabilities is a
    claim — the list is often a hardcoded literal. Read a real count, mint a
    real object, make the real call from the real origin.

  2. Check the identity seam first. The recurring defect: a receiver trusting
    the request body to name its caller.

    Defer on the receiver, never on the payload.

    Authority is the attested caller. Never data.actorId, never a label the
    payload supplies. The legitimate escape hatch is a verified HMAC attestation,
    checked at the receiver.

  3. Walk the authority model as written. One rule: to answer any question
    about a node, walk UP the group tree and take the first answer. Four rungs,
    one comparison — tierOf(role) ≥ minTier(action).

    • Ownership inherits down and pierces privacy.
    • Lesser roles inherit flat, through OPEN ancestors only.
    • Siblings are isolated by tree shape — that isolation is the multitenancy.
    • The one sideways exception is the scoped, non-nesting delegation.

    A check comparing a vantage word to a rung word is not this walk, and a
    swallowed lookup error must never pass as a clean denial.

  4. Fix the seam, not the sites. Two instances of one shape is a root cause
    and a base rate. Patching both and stopping leaves the rest of the
    population — usually far more than two — wide open.

  5. Confirm it is deployed. Every hole lives in a worker inert until
    redeployed. Compare wrangler deployments to git log before any "fixed"
    claim.

Hard rules

  • Never spend real money to prove a point. Once the first call proves a door
    is open, reason from code. An audit that burns live credit found the right
    thing the wrong way.
  • Never simulate a probe and report it as one. If you cannot execute for
    real, say so and STOP. A fabricated result poisons everything downstream.
  • Secrets are pointers, never bytes. Name the file, the binding, or the
    wrangler secret — never the value, in any output, ever.
  • Describe a vulnerability as a class with a blast radius — never a working
    exploit path or a step-by-step extraction.

Out of scope

  • Exploiting a finding beyond the single call that proves reachability.
  • Deploying the fix — that is the release gate.
  • Judging code style; only whether the defence holds.