From appsec
This skill should be used when the user asks to "check for SSRF", "analyze server-side request forgery", "find URL fetching vulnerabilities", "check for internal network access", or mentions "SSRF", "URL fetching", "cloud metadata", "169.254.169.254", or "request forgery" in a security context. Maps to OWASP Top 10 2021 A10: Server-Side Request Forgery.
npx claudepluginhub florianbuetow/claude-code --plugin appsecThis skill uses the workspace's default tool permissions.
Analyze source code for server-side request forgery vulnerabilities including URL
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 server-side request forgery vulnerabilities including URL fetching from user input, missing URL validation, internal network access, redirect following, DNS rebinding, and cloud metadata endpoint access. SSRF is especially critical in cloud environments where metadata endpoints expose credentials and instance configuration.
Read ../../shared/schemas/flags.md for the full flag specification. This skill
supports all cross-cutting flags. Key flags for this skill:
--scope determines which files to analyze (default: changed)--depth standard reads code and checks URL fetch calls for user-controlled input--depth deep traces URL input from request parameters through all transformations to fetch calls--severity filters output (SSRF to cloud metadata is critical, general SSRF is high)Read ../../shared/frameworks/owasp-top10-2021.md, section A10:2021 - Server-Side
Request Forgery (SSRF), for the full category description, common vulnerabilities,
and prevention guidance.
Key CWEs in scope:
Read references/detection-patterns.md for the full catalog of code patterns,
search heuristics, language-specific examples, and false positive guidance.
Parse flags and resolve the file list per ../../shared/schemas/flags.md.
Filter to files likely to contain outbound HTTP request logic:
**/http/**, **/client/**, **/fetch/**, **/request/**)**/webhooks/**, **/callbacks/**)**/proxy/**, **/gateway/**)**/integrations/**, **/connectors/**, **/services/**)**/upload/**, **/import/**)**/preview/**, **/unfurl/**, **/embed/**)**/pdf/**, **/screenshot/**, **/render/**)Detect scanners per ../../shared/schemas/scanners.md:
semgrep -- primary scanner for SSRF patterns (taint analysis for URL flow)bandit -- Python-specific request patternsgosec -- Go HTTP client patternsRecord which scanners are available and which are missing.
If semgrep is available, run with rules targeting SSRF:
semgrep scan --config auto --json --quiet <target>
Filter results to rules matching SSRF, URL fetching, and request forgery patterns. Normalize output to the findings schema.
Regardless of scanner availability, perform manual code analysis:
http:// and
https:// only, blocking file://, gopher://, dict://, ftp://, and other
dangerous schemes.When --depth deep, additionally trace:
Format output per ../../shared/schemas/findings.md using the SSRF prefix
(e.g., SSRF-001, SSRF-002).
Include for each finding:
These are the high-signal patterns specific to server-side request forgery. Each
maps to a detection pattern in references/detection-patterns.md.
URL from user input passed to HTTP client -- Any HTTP request function (fetch, requests.get, http.Get, HttpClient) called with a URL that originates from user-controlled input without validation.
Missing URL scheme whitelist -- URL validation that does not restrict the scheme to http/https, allowing file://, gopher://, or other dangerous protocols.
No blocking of internal IP ranges -- Outbound requests to user-supplied URLs without checking the resolved IP against private/reserved ranges, enabling internal network scanning and service access.
Cloud metadata endpoint accessible -- No specific blocking of 169.254.169.254 (AWS/Azure/GCP metadata), metadata.google.internal, or 169.254.170.2 (ECS task metadata), allowing credential theft from cloud environments.
Redirect following on user-supplied URLs -- HTTP client configured to follow redirects when fetching user-supplied URLs, enabling attackers to bypass URL validation by redirecting from an allowed domain to an internal target.
DNS rebinding vulnerability -- URL validation resolves the hostname to check the IP, but the actual HTTP request resolves it again, allowing a DNS record with a short TTL to return a different (internal) IP on the second resolution.
Indirect SSRF via document processors -- PDF generators (wkhtmltopdf, Puppeteer), SVG renderers, XML parsers (XXE), or webhook registration endpoints that fetch URLs without SSRF protection.
| Scanner | Coverage | Command |
|---|---|---|
| semgrep | URL from user input, taint tracking through request calls | semgrep scan --config auto --json --quiet <target> |
| bandit | Python requests/urllib with user input | bandit -r <target> -f json -q |
| gosec | Go net/http with user input | gosec -fmt json ./... |
Fallback (no scanner): Use Grep with patterns from references/detection-patterns.md
to find HTTP client calls, URL construction from user input, and missing validation.
Report findings with confidence: medium.
Relevant semgrep rule categories:
python.requests.security.ssrf.*python.urllib.security.audit.ssrf.*javascript.fetch.security.ssrf.*java.net.security.audit.ssrf.*go.net.security.audit.ssrf.*Use the findings schema from ../../shared/schemas/findings.md.
SSRF (e.g., SSRF-001)ssrfowaspA10A10:2021I (Information Disclosure) or E (Elevation of Privilege)Severity guidance for this category: