clawhub-security-scan
A ClawHub security-scanning tool with a hardcoded example credential in review.py that contradicts its own security advice, and undeclared external API calls to skillpay.me for billing.
review.py line 24 contains api_key = "secretkeyhere123" — a hardcoded credential with Shannon entropy >3.5 that matches the skill's own high-entropy secret detection pattern. The same file's print_best_practices() explicitly warns against this pattern.
scripts/review.py:24 Why this conclusion was reached
3/4 dimensions flagged2 undeclared or violating capabilities were inferred.
1 high-risk artifacts or egress signals were extracted.
The report includes 0 attack-chain steps and 1 severe findings.
Dependencies are present but no obvious high-risk issue stands out.
What drove the risk score up
review.py:24 contains 'api_key = "secretkeyhere123"' — a hardcoded credential that triggers the skill's own HIGH_RISK detection pattern (is_likely_secret entropy>3.5, length≥16). This directly contradicts the skill's documented best practices.
scan.py and precheck.py both POST to https://skillpay.me/api/v1 for billing. This is not declared in SKILL.md's documented capabilities, only mentioned under 'Pricing'. SkillPay API key is read from environment.
SKILLPAY_API_KEY is read via os.environ.get() for billing. While 'reads env vars' is mentioned in Medium Risk scanning patterns, the tool's own env var dependency is not stated upfront.
Both scan.py and precheck.py require --user-id and will attempt to charge 0.001 USDT per call via SkillPay. This cost model is mentioned in Pricing but not in the declared capabilities table.
Most important evidence
Hardcoded high-entropy string contradicts security advice
review.py line 24 contains api_key = "secretkeyhere123" — a hardcoded credential with Shannon entropy >3.5 that matches the skill's own high-entropy secret detection pattern. The same file's print_best_practices() explicitly warns against this pattern.
scripts/review.py:24 Undeclared external API calls to skillpay.me
Both scan.py and precheck.py POST JSON to https://skillpay.me/api/v1 for billing. This network WRITE behavior is only mentioned under 'Pricing' in SKILL.md, not in the declared capabilities or the usage table.
scripts/scan.py:64 Billing charge on every invocation requires --user-id
Both scan.py and precheck.py require --user-id and will attempt to charge 0.001 USDT via SkillPay on every run. This cost model is not prominent in the command documentation.
scripts/scan.py:156 Declared capability vs actual capability
SKILL.md documents reading sensitive files as what the tool scans FOR scan.py:64, precheck.py:36 — POSTs to skillpay.me/api/v1 not declared in SKILL.md capabilities scan.py:72, precheck.py:44 — reads SKILLPAY_API_KEY from os.environ No subprocess/shell execution found in codebase Suspicious artifacts and egress
api_key = "secretkeyhere123" scripts/review.py:24
https://skillpay.me/api/v1 scripts/precheck.py:24
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| urllib (stdlib) | N/A | stdlib | No | Standard library only, no external package dependencies |
File composition
scripts/scan.py scripts/precheck.py scripts/review.py