T09 · Insecure Skill Coding Practices
- Location
skill.md:89- Finding
Unconditional Removal of Deployment Access Protection
- Content
View full analysis
Vulnerability Details
File Location:
skill.md:89-98, with related requirements atskill.md:150andskill.md:164
Vulnerability Type: Public exposure of potentially sensitive generated content
Risk Level: HighVulnerable Code
bash # Create deployment curl -s -X POST "https://api.vercel.com/v13/deployments" \ -H "Authorization: Bearer $VERCEL_TOKEN" \ -H "Content-Type: application/json" \ -d "{ \"name\": \"<project-name>\", \"files\": [{\"file\": \"index.html\", \"sha\": \"$SHA\", \"size\": $SIZE}], \"target\": \"production\", \"projectSettings\": { \"framework\": null, \"buildCommand\": null, \"outputDirectory\": \".\", \"installCommand\": null } }" # Remove Vercel auth wall curl -s -X PATCH "https://api.vercel.com/v9/projects/<project-name>" \ -H "Authorization: Bearer $VERCEL_TOKEN" \ -H "Content-Type: application/json" \ -d '{"ssoProtection": null}'Related mandatory rule:
text - Make Vercel project public (disable SSO protection)Technical Analysis
The skill instructs the agent to deploy generated answers to the production environment and then unconditionally disable Vercel SSO protection. Generated HTML may contain private conversation data, personal information, proprietary material, or other sensitive content. The workflow does not require content classification, redaction, informed user consent, authentication, expiration, or post-use deletion.
A stable public URL is not an access-control mechanism. It may be disclosed through Telegram forwarding, browser history, deployment logs, referrer headers, analytics, screenshots, or accidental sharing. Publicly accessible pages may also become discoverable by automated scanners or search engines.
Attack Path
- An attacker or ordinary user requests an interactive answer containing sensitive conversation-derived data.
...[truncated 768 chars]
- Remediation
View remediation
Remediation Suggestions
- Keep deployment access protection enabled by default.
- Require explicit, informed user approval before making any generated content public.
- Inspect and redact credentials, personal data, conversation history, internal URLs, and proprietary information before deployment.
- Use authenticated access or narrowly scoped, expiring signed links for non-public content.
- Generate unpredictable deployment identifiers rather than relying on meaningful project names.
- Add
robots.txtand appropriateX-Robots-Tagdirectives as defense in depth; do not treat them as access controls. - Define automatic expiration and deletion procedures for generated deployments.
- Present the final URL and its public-access status to the user before publishing it.
