SAST Skills is a collection of agent workflows that inspect web and mobile application code for security vulnerabilities, where SAST means static application security testing. Developers and security reviewers use it to map a codebase, verify possible flaws, and produce a severity-ranked remediation report. The catalogue entries are the project's vulnerability-detection and reporting skills.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add utkusen/sast-skills --skill sast-ssrfgit clone --depth 1 https://github.com/utkusen/sast-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/utkusen/sast-skills/sast-ssrf)<a href="https://agentmods.dev/skills/utkusen/sast-skills/sast-ssrf"><img src="https://agentmods.dev/badge/skills/utkusen/sast-skills/sast-ssrf/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/utkusen/sast-skills/sast-ssrf"><img src="https://agentmods.dev/badge/skills/utkusen/sast-skills/sast-ssrf.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00099 | $0.06880 |
| Opus 5 | $0.00049 | $0.03440 |
| Sonnet 5 | $0.00020 | $0.01376 |
| Haiku 4.5 | $0.00010 | $0.00688 |
Grade B, and why
sast-ssrf scanned grade B with 3 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Cloud metadata endpointmediumServer-side request forgery
One request to 169.254.169.254 can return temporary IAM credentials.
> - **Blocklist of private IP ranges / metadata endpoints**: `169.254.169.254`, `10.0.0.0/8`, `192.168.0.0/16`, etc. — **not** sufficient. Bypassable via DNS rebinding, alternate IP representations, and redirect chains. Downgraded: this mod is about security review, or the phrase is quoted, so it is likely naming the pattern rather than instructing it.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
- HTTP client calls where the URL or host is built from user input: `requests.get(user_url)` Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
> - `subprocess.run(["curl", url, ...])`, `subprocess.Popen(["wget", url, ...])` Copies of this mod
1 near-identical copy found in the catalogue:
- sast-ssrf — 89% identical, 103 lines differ
How it starts
The opening of the file, as written. The whole thing — 544 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Server-Side Request Forgery (SSRF) Detection
You are performing a focused security assessment to find SSRF vulnerabilities in a codebase. This skill uses a three-phase approach with subagents: recon (find all places that make outbound TCP, DNS, or HTTP requests), batched verify (trace whether user-supplied input reaches those call sites, in parallel batches of 3), and merge (consolidate batch reports into one file).
Prerequisites: sast/architecture.md must exist. Run the analysis skill first if it doesn't.
What is SSRF
SSRF occurs when an attacker can cause the server to make outbound network requests to an arbitrary destination — including internal services, cloud metadata endpoints, or other external targets — by supplying or influencing the URL, hostname, IP, or port used in a server-side request.
The core pattern: unvalidated, user-controlled input reaches the destination argument of an outbound network call.
What SSRF IS
- HTTP client calls where the URL or host is built from user input:
requests.get(user_url) - Fetching a resource whose location is provided by the client:
fetch(req.body.webhook_url) - DNS lookups on a hostname supplied by the user:
dns.lookup(req.query.host) - Raw TCP connections to a host/port derived from user input:
socket.connect((user_host, user_port)) - File-fetching functions used with HTTP/FTP URLs from user input:
file_get_contents($user_url) - URL redirectors that forward to a user-supplied destination without validation
- Webhooks, import-from-URL, screenshot services, PDF renderers, image proxies — any feature that fetches a remote resource on behalf of the user
What SSRF is NOT
Do not flag these:
- Open redirects: Redirecting the browser (HTTP 302) to a user-supplied URL — that's a client-side redirect, not a server-side request
- XSS via URL: Rendering a user-supplied URL in an
<a>tag without escaping — that's XSS - IDOR: Accessing another user's data by changing an object ID — separate vulnerability class
- Hardcoded outbound calls: HTTP requests to fixed, fully hardcoded URLs with no user influence — not SSRF
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 544 lines · 99 tokens per session scan B 57f9a5ef09e1
sast-ssrf is a skill published in the GitHub repository utkusen/sast-skills (1,307 stars, last pushed 5mo ago), licensed MIT. It adds 99 tokens to every session and 6,880 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it B with 3 findings (cloud metadata endpoint, makes network calls, runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
argus
Argus — the all-seeing scanner suite. Six automated scanners for high-value web + LLM bug classes — CORS misconfiguration (origin reflection / null / credentialed read), CRLF & host-header injection, NoSQL injection (operator auth-bypass / $where blind), JWT attacks (alg:none / RS256→HS256 confusion / secret crack)…
debug-rule
Debug a rule or approximation that behaves unexpectedly by tracing where taint is dropped. Use when its samples won't pass after repeated attempts, or it passes tests but is wrong on a real scan.
ffuf-claude-skill
Skill "ffuf-claude-skill" from Agent-Threat-Rule/agent-threat-rules, covering ffuf claude skill, when to use this skill and instructions.
report-analyzer-issue
Write a self-contained OpenTaint engine-issue report from an analysis diagnosis or a full-scan failure. Use when an engine-side issue needs a report.
assess-patch-risk
Assess an immutable patch artifact's program impact, regression risk, and auto-merge eligibility. Use for generated patch files, provider pull-request diffs, or commit ranges when reviewers need evidence about affected runtime paths, contracts, tests, and recoverability. This skill is read-only and does not generate…
codeql-expert
Expert-level CodeQL for static analysis, vulnerability detection, and security code scanning. Use when the user mentions static analysis, SAST, vulnerability detection, or github security, or when the task involves writing CodeQL queries, building a CodeQL database, taint tracking, or scanning for injection and…