T09 · Insecure Skill Coding Practices
- Location
skill.json:15- Finding
Hardcoded SkillPay API Key Published in Project Files
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill does what it claims, but it ships a live-looking payment API key and exposes unauthenticated payment and subscription controls that could be abused.
Do not install or publish this skill as-is. Treat the embedded SkillPay key as compromised, rotate it, replace all examples with placeholders, add authentication and webhook verification before enabling payments or subscriptions, restrict CORS, and sanitize all scraped content before sending notifications.
skill.json:15Hardcoded SkillPay API Key Published in Project Files
src/index.js:169Unsigned Payment Callback Allows Payment Bypass
src/index.js:135Unauthenticated Subscription Endpoints Permit IDOR, Disclosure, and Deletion
src/notifiers/email.js:83Untrusted Scraped Data Is Embedded into HTML and Markdown Notifications Without Sanitization
A full API key is included in plaintext in the documentation with no warning or masking. This is a straightforward secret leak and is especially dangerous because the skill is designed to process paid transactions, making credential abuse immediately valuable.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
│ └── email.js # Email推送
├── package.json # 项目依赖配置
├── skill.json # Clawhub skill配置
├── .env # 环境变量(已配置SkillPay API Key)
├── .env.example # 环境变量示例
├── .gitignore # Git忽略文件
├── README.md # 项目说明
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
│ └── email.js # Email推送
├── package.json # 项目依赖配置
├── skill.json # Clawhub skill配置
├── .env # 环境变量(已配置SkillPay API Key)
├── .env.example # 环境变量示例
├── .gitignore # Git忽略文件
├── README.md # 项目说明
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
│ └── email.js # Email推送
├── package.json # 项目依赖配置
├── skill.json # Clawhub skill配置
├── .env # 环境变量(已配置SkillPay API Key)
├── .env.example # 环境变量示例
├── .gitignore # Git忽略文件
├── README.md # 项目说明
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
│ └── email.js # Email推送
├── package.json # 项目依赖配置
├── skill.json # Clawhub skill配置
├── .env # 环境变量(已配置SkillPay API Key)
├── .env.example # 环境变量示例
├── .gitignore # Git忽略文件
├── README.md # 项目说明
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
│ └── email.js # Email推送
├── package.json # 项目依赖配置
├── skill.json # Clawhub skill配置
├── .env # 环境变量(已配置SkillPay API Key)
├── .env.example # 环境变量示例
├── .gitignore # Git忽略文件
├── README.md # 项目说明
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
│ └── email.js # Email推送
├── package.json # 项目依赖配置
├── skill.json # Clawhub skill配置
├── .env # 环境变量(已配置SkillPay API Key)
├── .env.example # 环境变量示例
├── .gitignore # Git忽略文件
├── README.md # 项目说明
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
│ └── email.js # Email推送
├── package.json # 项目依赖配置
├── skill.json # Clawhub skill配置
├── .env # 环境变量(已配置SkillPay API Key)
├── .env.example # 环境变量示例
├── .gitignore # Git忽略文件
├── README.md # 项目说明
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
│ └── email.js # Email推送
├── package.json # 项目依赖配置
├── skill.json # Clawhub skill配置
├── .env # 环境变量(已配置SkillPay API Key)
├── .env.example # 环境变量示例
├── .gitignore # Git忽略文件
├── README.md # 项目说明
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
│ └── email.js # Email推送
├── package.json # 项目依赖配置
├── skill.json # Clawhub skill配置
├── .env # 环境变量(已配置SkillPay API Key)
├── .env.example # 环境变量示例
├── .gitignore # Git忽略文件
├── README.md # 项目说明
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
│ └── email.js # Email推送
├── package.json # 项目依赖配置
├── skill.json # Clawhub skill配置
├── .env # 环境变量(已配置SkillPay API Key)
├── .env.example # 环境变量示例
├── .gitignore # Git忽略文件
├── README.md # 项目说明
The summary explicitly states that a .env file with an already configured API key is part of the project. Shipping or encouraging distribution of pre-populated credential files is dangerous because .env files are commonly committed, copied, or deployed insecurely, which can lead to credential theft, unauthorized API usage, billing abuse, and compromise of connected services.
│ └── email.js # ✅ Email 推送
├── package.json # ✅ 依赖配置
├── skill.json # ✅ Clawhub 配置
├── .env # ✅ 环境变量(已配置 API Key)
├── test.js # ✅ 测试脚本
├── quickstart.sh # ✅ 快速启动脚本
└── 文档/
The documentation explicitly states that a SkillPay API key is already configured and encourages immediate use of paid functionality. Even though the concrete key appears later, this guidance normalizes using embedded credentials and can lead users to unknowingly consume someone else's billing quota or a leaked shared secret.
The quickstart endorses using a preconfigured paid API key without any security, ownership, or billing warning. In a monetized skill context, that creates real risk of unauthorized paid usage and trains users to accept embedded secrets as normal deployment practice.
This section presents required configuration as already completed while exposing a full live-looking API key in plaintext. Publishing a secret in documentation is a direct credential disclosure that can enable unauthorized API use, billing abuse, service impersonation, and downstream account compromise.
The README instructs users to supply multiple sensitive credentials, including bot tokens, webhook URLs, email passwords, and API keys, without guidance on secure storage, least privilege, or handling of personal data. While configuration itself is expected, the lack of security warnings increases the chance of unsafe deployment, credential leakage, or misuse of third-party accounts.
The README includes what appears to be an actual SkillPay API key rather than a placeholder, which can enable unauthorized use of the payment integration if the key is valid. Publishing secrets in documentation is especially dangerous because they are easy to scrape, reuse, and persist in git history even after later removal.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
复制 .env.example 到 .env 并填写配置:
cp .env.example .env
编辑 .env 文件:
The documentation contains a live-looking SkillPay API key embedded directly in the example .env file. Publishing what appears to be a real secret can enable unauthorized API use, billing abuse, account compromise, or downstream access depending on the key's privileges.
A real-looking API key is shown inline without any warning that it must be replaced and protected. Readers may mistakenly reuse the exposed key or normalize unsafe secret-handling practices, increasing the likelihood of credential leakage and unauthorized service consumption.
The lockfile pins undici 6.21.3, and the static analysis indicates multiple high-severity advisories affecting that exact version, including request/response smuggling and header injection classes of bugs. In a skill that performs outbound HTTP interactions and bot/API communications, a vulnerable HTTP client library can materially increase risk of SSRF-adjacent abuse, response confusion, or protocol-level attacks.
Axios 1.13.6 is flagged with multiple advisories, including SSRF-related proxy bypass and prototype-pollution-related impacts. Because this skill appears to monitor external crypto/web sources, it likely makes network requests to potentially variable endpoints, which makes HTTP client flaws more relevant than they would be in a purely local tool.
brace-expansion 5.0.4 is associated with several DoS-style issues, but here it appears in a dev dependency path related to tooling rather than runtime application logic. That makes the finding real at the package level but less dangerous in deployed skill execution unless untrusted patterns are processed during build or development automation.
form-data 4.0.5 is reported as vulnerable to CRLF injection through unescaped multipart names/filenames. If the skill constructs multipart requests using untrusted metadata, an attacker may be able to manipulate outbound request structure or smuggle unintended headers/body parts.
lodash 4.17.23 is flagged for prototype pollution and template-related code injection concerns. Whether exploitation is practical depends on the application code paths, but in a bot/monitoring skill that may transform external JSON or config-like data, prototype pollution can become a useful exploitation primitive.
No suspicious patterns detected.