agentleFS
ashrafiucseashrafiucse/security-audit-skills/skills/data-exposure/SKILL.md

data-exposure

Skill2 starsChanged 49 days agoMITView on GitHub

Finds sensitive data exposure risks — PII/secrets written to logs, over-returning API responses, data at rest without encryption, sensitive data in URLs, test fixtures with real data, secrets in git history, and temporary/backup file leaks. Use when auditing how a project handles, stores, logs, or transmits sensitive data.

The file

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If the stack/domain implies a regime, add a short mapping section: GDPR (lawful basis hints, right-to-erasure reachability of PII), HIPAA …

    line 55

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Data Exposure Review

1 — Map sensitive data

From recon, identify what the project considers sensitive: PII (names, emails, phones, addresses), auth data (tokens, passwords, SSNs, card numbers), health/financial records, internal identifiers. Check models/schemas/DTOs for field names to build this list before grepping flows.

2 — Logs

rg -n "console\.(log|error|info)|logger\.(info|warn|error)|logging\.|print\(" | rg -i "password|token|secret|ssn|card|authorization|api.?key|session"
  • Tokens/passwords/full PII logged → HIGH (logs ship to aggregators with broader access and longer retention than the DB)
  • Full request/response bodies logged (debug middleware like morgan dev+body, axios interceptors logging config) → HIGH if auth flows pass through
  • Stack traces with SQL → MEDIUM
  • Recommend structured logging with field-level redaction/allowlists.
  • Deep A09 checks (audit-event coverage, log forging, verbosity, monitoring): references/logging-a09.md.

3 — API responses

rg -n "res\.(json|send)\(|JSONResponse|serializer|to_json|to_dict|as_dict|@JsonProperty"
  • Endpoints returning full ORM objects (res.json(user) instead of a DTO) → HIGH when the model has password hashes, tokens, reset codes, or PII beyond need — even if "unused today"
  • to_json/__dict__ serialization on models with sensitive fields → same
  • Over-returning list endpoints (100+ records/page without pagination) → LOW
  • IDs that are sequential integers for sensitive objects → LOW/MEDIUM (enumeration, see ../auth-review/SKILL.md)

4 — Data at rest & in transit

  • DB files / SQLite in repo or mounted volumes without encryption → MEDIUM (judged by data class)
  • Backups/exports (dump.sql, *.csv exports) committed → HIGH if real data, LOW if synthetic
  • Sensitive data in URLs (GET query params: ?token=, ?email=, ?ssn=) → HIGH (URLs hit logs, proxies, browser history, referrers)
  • Internal service calls over plain HTTP inside the cluster → MEDIUM
  • Sensitive data sent to third parties (analytics/error trackers capture request bodies: Sentry send_default_pii, loggers to SaaS) → MEDIUM/HIGH

5 — Files, history, fixtures

git ls-files | rg -i '\.(sql|csv|xlsx?|dump|bak|sqlite3?|db)$'
rg -n -i "lorem|john.?doe|test@test|555-|4111 ?1111 ?1111 ?1111|0000-0000" tests/ fixtures/ 2>/dev/null | head -20
  • Real-looking PII in fixtures/tests (real emails, real card numbers beyond obvious test patterns) → MEDIUM
  • Git history secrets — already covered by ../secrets-detection/SKILL.md; here verify large data files aren't in history: git rev-list --objects --all | head + look for big blobs
  • Temp files written to shared/world-readable locations, /tmp with predictable names → MEDIUM
  • TODO/FIXME near data handling mentioning "encrypt"/"hash later" → report as confirmation of known debt

6 — Compliance overlays (optional, if project context implies)

If the stack/domain implies a regime, add a short mapping section: GDPR (lawful basis hints, right-to-erasure reachability of PII), HIPAA (PHI at rest/in transit), PCI-DSS (card data scope). Keep it a checklist of "likely gaps" — not legal advice — and recommend expert review.

Reporting

Per finding: data class involved, where it's exposed (file:line), exposure path (logs/response/history), severity by data class, and the fix (redact, DTO-allowlist, encrypt, purge). Include a one-paragraph "sensitive data inventory" summary — teams usually don't have one and it's instantly useful.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.