T09 · Insecure Skill Coding Practices
- Location
scripts/wp-verify-receipt.mjs:79- Finding
Unrestricted URL Fetch Enables Blind Server-Side Request Forgery
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly coherent for WordPress publishing, but its receipt verifier can treat any HTTP 200 URL as success and the publisher posts live by default.
Review this before installing if you plan to rely on receipts for automation. Use API-based verification by post ID or date, avoid URL-only success checks, restrict the WordPress API base and credentials to the intended site, and consider defaulting posts to draft or requiring an explicit publish flag for unattended workflows.
scripts/wp-verify-receipt.mjs:79Unrestricted URL Fetch Enables Blind Server-Side Request Forgery
scripts/wp-verify-receipt.mjs:79URL-Only Verification Accepts Unrelated HTTP 200 Pages as WordPress Publication Receipts
Referenced artifact was not completely inspected
node scripts/wp-publish-receipt.mjs \
Referenced artifact was not completely inspected
node scripts/wp-verify-receipt.mjs --env-file .env.wordpress --date 2026-07-01
Referenced artifact was not completely inspected
node scripts/wp-verify-receipt.mjs --env-file .env.wordpress --date 2026-07-01
Referenced artifact was not completely inspected
node scripts/wp-verify-receipt.mjs --env-file .env.wordpress --date 2026-07-01
Referenced artifact was not completely inspected
node scripts/wp-verify-receipt.mjs --env-file .env.wordpress --date 2026-07-01
Referenced artifact was not completely inspected
node scripts/wp-verify-receipt.mjs --env-file .env.wordpress --date 2026-07-01
The skill clearly instructs the use of network-capable helper scripts against the WordPress REST API, but it does not declare an explicit tool scope such as permissions or allowed-tools. In an agent environment, that mismatch weakens least-privilege controls and can allow broader-than-expected network use, making unintended outbound requests or abuse of stored credentials more likely.
This code defaults the post status to 'publish' and immediately sends a POST request to create the post, which is a user-data-affecting and externally visible operation. There is no confirmation prompt, warning message, or other user disclosure in the script before publication occurs.
No suspicious patterns detected.