From appsec
This skill should be used when the user asks to "check for information disclosure", "analyze data leakage risks", "find data exposure vulnerabilities", or mentions "information disclosure" in a security context. Maps to STRIDE category I.
npx claudepluginhub florianbuetow/claude-code --plugin appsecThis skill uses the workspace's default tool permissions.
Analyze source code for information disclosure threats where sensitive data leaks to unauthorized parties. Maps to **STRIDE I** -- violations of the **Confidentiality** security property.
Acquire memory dumps from live systems/VMs and analyze with Volatility 3 for processes, networks, DLLs, injections in incident response or malware hunts.
Provides x86-64/ARM disassembly patterns, calling conventions, control flow recognition for static analysis of executables and compiled binaries.
Identifies anti-debugging checks like IsDebuggerPresent, NtQueryInformationProcess in Windows binaries; suggests bypasses via patches/hooks/scripts for malware analysis, CTFs, authorized RE.
Analyze source code for information disclosure threats where sensitive data leaks to unauthorized parties. Maps to STRIDE I -- violations of the Confidentiality security property.
Read ../../shared/schemas/flags.md for the full flag specification. This skill supports all cross-cutting flags including --scope, --depth, --severity, --format, --fix, --quiet, and --explain.
Read ../../shared/frameworks/stride.md, specifically the I - Information Disclosure section, for the threat model backing this analysis. Key concerns: data breaches, directory traversal, error message leaks, timing attacks, memory dumps, cleartext transmission.
Parse flags and resolve the target file list per the flags spec. Filter to files likely handling sensitive data:
For each in-scope file, apply the Analysis Checklist below. At --depth standard, examine each file for data exposure patterns. At --depth deep, trace data flows from database/store through processing to API response to confirm sensitive fields are filtered before transmission across trust boundaries.
Output findings per ../../shared/schemas/findings.md using the DISC ID prefix (e.g., DISC-001). Set references.stride to "I" on every finding.
Work through these questions against the scoped code. Each "yes" may produce a finding.
catch blocks. Check if NODE_ENV=production or DEBUG=False actually suppresses detail.SELECT *, ORM .toJSON(), serialize(), or spreading entire model objects into responses without field allowlists. Compare the API response shape against the model definition to identify leaked internal fields (password_hash, internal_id, created_by)./debug, /health with excessive detail, phpinfo(), /actuator, /graphiql, /__debug__, /metrics, /_profiler, Swagger UI without auth.fs.readFile, open(), file_get_contents where the path incorporates req.params, request.args, or URL segments without path canonicalization and containment checks (realpath + prefix validation).key, secret, password, token, credential. Check .env files, config files, and test fixtures.Server, X-Powered-By, X-AspNet-Version, or other headers that reveal technology stack details? Check response header configuration and whether helmet/equivalent suppression is applied.if statements on secret bytes.window.__CONFIG__ objects./health, /status, /info, /env endpoints..map files in build output and sourceMappingURL references in bundled JavaScript.DEBUG=True or equivalent when it appears in production configuration or when there is no environment gating.SELECT * is not always a disclosure risk. It depends on whether the full result is serialized to the API response. If application code filters fields before responding, the query itself is not the issue.low unless the source contains hardcoded secrets or sensitive business logic.X-Powered-By) are low severity on their own but contribute to reconnaissance. They matter more in combination with known vulnerabilities in the disclosed versions.Concrete code patterns and grep heuristics to surface information disclosure risks:
traceback.format_exc(), e.stack, err.message sent in HTTP responses, DEBUG = True in production config, app.use(errorHandler) without production mode filtering. Grep: (stack|traceback|stackTrace)\b near response serialization.res.json(user), return JsonResponse(model.__dict__), JSON.stringify(record) without field selection -- compare against the model definition to see if password_hash, ssn, internal_notes fields leak.logger.debug(f"token={token}"), console.log(req.headers.authorization), log.info("password: " + pwd). Grep: log\w*\.\w+\(.*\b(password|token|secret|key|authorization|ssn|credit.?card)\b.open(os.path.join(base, request.args['file'])) without os.path.realpath containment, fs.readFile(req.params.name) without validation. Grep: (readFile|open|fopen)\s*\(.*req\.(params|query|body)./debug/, /admin/phpinfo, /_profiler, /graphiql, /swagger, /actuator without auth guards. Grep: (debug|profiler|phpinfo|actuator|graphiql) in route definitions.SELECT * FROM users returned directly via API, .find({}) in MongoDB without projection, Sequelize findAll without attributes restriction. Grep: SELECT \*|\.find\(\s*\{\s*\}\s*\)|findAll\(\s*\).X-Powered-By, Server: Apache/2.4.51, X-AspNet-Version -- check for helmet, removeHeader, or equivalent suppression. Grep: X-Powered-By|x-powered-by|server.*header..map files in build/dist directories, sourceMappingURL= in production JS bundles. Grep: sourceMappingURL|\.js\.map.Each finding must conform to ../../shared/schemas/findings.md.
id: DISC-<NNN>
severity: critical | high | medium | low
confidence: high | medium | low
location: file, line, function, snippet
description: What data is exposed and through which channel
impact: What sensitive information an attacker can obtain
fix: Concrete remediation with diff when possible
references:
stride: "I"
cwe: CWE-200 (Exposure of Sensitive Info), CWE-209 (Error Messages), or relevant CWE
metadata:
tool: info-disclosure
framework: stride
category: I
| Severity | Criteria |
|---|---|
critical | Hardcoded production secrets in source, directory traversal exposing arbitrary files, PII/credentials in API responses |
high | Stack traces with internal paths/queries in production errors, sensitive data in logs, debug endpoints without auth |
medium | Excessive API fields exposing non-critical internal data, technology stack headers, timing side channels |
low | Verbose health check responses, minor information in HTTP headers, source maps in production, client-side comments |
| CWE | Description |
|---|---|
| CWE-200 | Exposure of Sensitive Information to Unauthorized Actor |
| CWE-209 | Generation of Error Message Containing Sensitive Info |
| CWE-532 | Insertion of Sensitive Info into Log File |
| CWE-22 | Path Traversal |
| CWE-215 | Insertion of Sensitive Info Into Debugging Code |
| CWE-312 | Cleartext Storage of Sensitive Information |
| CWE-319 | Cleartext Transmission of Sensitive Information |
| CWE-548 | Exposure of Information Through Directory Listing |