T09 · Insecure Skill Coding Practices
- Location
SKILL.md:258- Finding
Unrestricted Remote Specification Fetching Enables Server-Side Request Forgery
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This OpenAPI scanner is mostly purpose-aligned, but its URL scanning can fetch arbitrary HTTP/HTTPS locations from the agent's environment without safeguards or a clear warning.
Review this before installing if you will scan URLs from a CI runner, cloud VM, corporate network, or agent environment with access to internal services. Prefer local spec files, avoid scanning untrusted URLs, and use network egress controls or a sandbox if remote URL scanning is needed. Install PyYAML in an isolated environment and pin dependencies where reproducibility matters.
SKILL.md:258Unrestricted Remote Specification Fetching Enables Server-Side Request Forgery
SKILL.md:153Unpinned PyYAML Installation Creates a Mutable Supply-Chain Dependency
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
============================================================
── CRITICAL (1) ────────────────────────────────────────────
🔴 OS008 [CRITICAL] DELETE /admin/users/{id}
Admin/internal path '/admin/users/{id}' has no authentication requirement.
CWE: CWE-285: Improper Authorization
Fix: Add strict authentication + scope requirement to this endpoint.
Output size or generation rate is not bounded. Unbounded output enables denial-of-service through resource exhaustion, log flooding, or context-window stuffing.
### OS008 — Admin/Internal Path Without Auth (CRITICAL)
Flags paths matching `/admin`, `/internal`, `/debug`, `/_internal`, `/_debug`, `/management`, `/actuator`, `/metrics`, `/health/detail`, `/swagger-ui`, `/api-docs` that have no security requirement. These are the most exploited endpoints in API breaches.
### OS009 — File Upload Without Size Limit
`multipart/form-data` and `application/octet-stream` endpoints where binary fields lack `maxLength` or `maximum`. An unbound upload endpoint is a trivial denial-of-service vector.
### OS010 — Wildcard OAuth Scope
Skill grants unrestricted tool access without appropriate constraints. An agent with unfettered tool access can perform arbitrary actions including file modification, network requests, and code execution.
check_id="OS010",
severity="HIGH",
path=f"securitySchemes/{name}/scopes/{scope}",
message=f"OAuth scope '{scope}' is overly broad. A compromised client with this scope has unrestricted API access.",
cwe="CWE-272: Least Privilege Violation",
fix="Replace wildcard scopes with specific resource:action scopes (e.g. 'users:read', 'orders:write'). Never grant * or bare admin scope.",
))
The skill explicitly supports fetching OpenAPI specs from arbitrary HTTP/HTTPS URLs, which causes an outbound network request to attacker-controlled destinations. While this is expected functionality for a scanner, failing to clearly warn users about the network contact can enable unintended requests to internal, sensitive, or monitored endpoints and may expose requester metadata.