T09 · Insecure Skill Coding Practices
- Location
scripts/market_breadth_analyzer.py:53- Finding
Arbitrary URL Fetching Enables Server-Side Request Forgery
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill appears to be a real market-breadth analyzer, but it needs review because it can fetch arbitrary URLs, write reports/history locally, and gives fairly prescriptive investment guidance.
Install only if you are comfortable with a financial-analysis skill that runs Python, uses outbound network access, and writes reports/history locally. Prefer running it with the default TraderMonty URLs in an isolated workspace, avoid passing untrusted custom URLs, and treat the equity exposure guidance as informational rather than investment advice.
scripts/market_breadth_analyzer.py:53Arbitrary URL Fetching Enables Server-Side Request Forgery
scripts/csv_client.py:50Unbounded Remote CSV Downloads Can Exhaust Memory and CPU
README.md:20Unpinned and Unnecessary Dependency Installation Creates Supply-Chain Risk
A skill that claims to fetch TraderMonty data and compute a 0-100 breadth score but instead performs testing/report validation or otherwise lacks the primary analysis logic is a material integrity problem. In this context, the danger is less classic code execution and more deceptive or unreliable operation: users may receive financial-health conclusions that are ungrounded in the stated data source or methodology, while still granting network/file privileges based on the advertised purpose.
A skill that claims to fetch TraderMonty data and compute a 0-100 breadth score but instead performs testing/report validation or otherwise lacks the primary analysis logic is a material integrity problem. In this context, the danger is less classic code execution and more deceptive or unreliable operation: users may receive financial-health conclusions that are ungrounded in the stated data source or methodology, while still granting network/file privileges based on the advertised purpose.
A skill that claims to fetch TraderMonty data and compute a 0-100 breadth score but instead performs testing/report validation or otherwise lacks the primary analysis logic is a material integrity problem. In this context, the danger is less classic code execution and more deceptive or unreliable operation: users may receive financial-health conclusions that are ungrounded in the stated data source or methodology, while still granting network/file privileges based on the advertised purpose.
Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.
Scoring (100 = healthy):
Base:
Signal=False & Trend=1 -> 85 (all clear)
Signal=False & Trend=-1 -> 50 (no warning but downtrend)
Signal=True & Trend=1 -> 30 (warning in uptrend)
Signal=True & Trend=-1 -> 10 (fully bearish)
Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.
if not signal_active and trend == 1:
return 85 # All clear
elif not signal_active and trend == -1:
return 50 # No warning but downtrend
elif signal_active and trend == 1:
return 30 # Warning in uptrend
else: # signal_active and trend == -1
The skill declares no tool scope or permissions, yet its documented workflow explicitly invokes a Python script that downloads remote data and writes JSON/Markdown reports to disk. This creates an authority/visibility gap: hosts or reviewers may treat the skill as low-privilege while it actually depends on network and file-write capabilities, increasing the chance of unintended data access, persistence, or unsafe execution in a broader agent environment.
The module’s documented scoring rules diverge from the actual implemented logic, which can cause downstream users, reviewers, or other components to make decisions based on incorrect assumptions about how market breadth health is computed. In a financial-analysis skill, this is a real integrity issue because users may rely on the published scoring model to interpret signals, validate outputs, or compare results, and the mismatch can silently produce misleading assessments.
The scorer returns explicit trading posture recommendations such as equity exposure ranges, profit-taking, hedging, and sector rotation without any built-in disclaimer, suitability check, or requirement for independent validation. In a skill marketed for assessing market health, this can cause users to treat the output as prescriptive investment advice and make harmful financial decisions based on incomplete or stale data.
The helper writes a temporary markdown file, reads it back, and unlinks it in cleanup. Although this is test code, the safety-relevant file operations have no visible user-facing notice beyond a generic docstring, so the behavior is not explicitly disclosed under the code-file warning criterion.
No suspicious patterns detected.