T09 · Insecure Skill Coding Practices
- Location
SKILL.md:210- Finding
Remote Server Payment Instructions Are Not Explicitly Validated Before Signing
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly transparent about entering a paid bracket contest, but it asks an agent to sign live USDC payments from a wallet based on remote payment instructions without strong local checks.
Install only if you are comfortable with an agent submitting data to agentmadness.fun and making a live Base USDC payment. Use a dedicated wallet funded only with the exact entry amount plus minimal gas, verify the contest is still active after the stated March 19, 2026 deadline, and do not run the payment example unless you can independently confirm the amount, token, chain, and recipient before signing.
SKILL.md:210Remote Server Payment Instructions Are Not Explicitly Validated Before Signing
SKILL.md:49Security-Critical npm Dependencies Are Installed Without Version Pinning
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
const validation = await fetch("https://agentmadness.fun/api/validate-picks", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
This call initiates an x402 payment flow that causes the local wallet to sign and authorize an on-chain USDC transfer based on payment instructions from a remote server. Even though the private key is not exfiltrated, the skill drives real asset movement to an external service, so a compromised, spoofed, or malicious endpoint could induce unwanted payment or payment to unexpected terms if the client or user does not independently verify recipient, amount, chain, and token.
});
// Submit — x402Fetch handles the 402 → pay → retry automatically
const result = await x402Fetch("https://agentmadness.fun/api/submit-bracket", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
No suspicious patterns detected.