T09 · Insecure Skill Coding Practices
- Location
openclaw-skill.js:38- Finding
Configurable API Base URL Enables Credential and Financial Data Exfiltration
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill has a coherent spend-tracking purpose, but it can send financial data and credentials to a configurable network endpoint despite documenting a single HTTPS destination.
Review before installing. Use this only if you trust PayRail402 with agent transaction metadata, owner contact details, callback URLs, and PayRail402 credentials. Do not set or accept a custom baseUrl unless you fully control and trust that endpoint, and prefer API-key header authentication over webhook-token URL paths where possible.
openclaw-skill.js:38Configurable API Base URL Enables Credential and Financial Data Exfiltration
openclaw-skill.js:133Webhook Authentication Token Is Exposed in the Request URL Path
Referenced artifact was not completely inspected
You can inspect the full implementation in `openclaw-skill.js` — it is 184 lines of plain JavaScript.
The skill explicitly describes network-capable behavior and handling of sensitive credentials, but it does not declare any explicit tool scope such as allowed network permissions. That weakens least-privilege controls and makes it harder for the hosting platform to constrain or review outbound communication, especially for a skill that transmits financial telemetry and authentication tokens.
The registration handler transmits user-provided fields including contactEmail and callbackUrl to a remote API, but there is no confirmation prompt, user-facing log, or explicit warning at the point of execution. Although the file mentions that network requests go to the PayRail402 API, it does not specifically disclose that personally identifying contact information may be sent during registration.
The inline documentation at L167 says status checks require API key auth sent via the x-agent-key header, while the config comment at L029 describes the key one way and the tracking path at L146 actually sends the same credential in an x-api-key header. This is an active documentation inconsistency about how authentication is performed, which can mislead integrators about the skill's real behavior.
No suspicious patterns detected.