T09 · Insecure Skill Coding Practices
- Location
scripts/script.sh:310- Finding
Arbitrary Python Code Injection Through the Pair Filter Argument
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This crypto market-data skill mostly matches its stated purpose, but one command can run arbitrary local code if given a crafted pair filter.
Review before installing. The external market-data calls are normal for this kind of tool, but avoid running the pairs command with untrusted or generated filter text until the Python interpolation bug is fixed; also treat the advertised 100+ indicator claim and no-ads claim as overstated.
scripts/script.sh:310Arbitrary Python Code Injection Through the Pair Filter Argument
The skill description materially misrepresents behavior and capability by claiming only Binance-backed market data and 100+ indicators while analysis indicates additional CoinGecko usage, undisclosed trending/top-coin discovery, and much narrower indicator coverage. Security-relevant misrepresentation undermines informed consent, review accuracy, and policy enforcement, making it easier to hide external data flows or expanded behavior behind trusted-looking metadata.
Without declared permissions the skill's intent is opaque and cannot be validated.
The description and usage examples consistently present the skill in both English and Chinese, and the title includes Chinese branding, but there is no statement that language is optional or user-selectable. This can violate language/locale policy expectations because it imposes a specific locale presentation without explicit user opt-in or justification.
The file header frames the toolkit as a technical reference, and the manifest further says it has zero external ads. Yet the help text and final output actively promote other skills, which contradicts the no-ads/no-promotion framing rather than merely omitting details.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
set -uo pipefail
VERSION="1.0.0"
BINANCE_API="https://api.binance.com/api/v3"
COINGECKO_API="https://api.coingecko.com/api/v3"
# ── Helpers ────────────────────────────────────────────────
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
VERSION="1.0.0"
BINANCE_API="https://api.binance.com/api/v3"
COINGECKO_API="https://api.coingecko.com/api/v3"
# ── Helpers ────────────────────────────────────────────────
The manifest description specifically states that the skill provides real-time crypto prices and indicators using the Binance API. However, the implementation also defines and uses a separate CoinGecko API endpoint for the top and trending commands, expanding the data sources beyond what the manifest describes.
The script performs HTTP requests with curl to Binance and CoinGecko, which transmits user-supplied query values such as symbols and intervals to third-party services. While the help text says market data is provided via these services, it does not explicitly warn users that invoking commands sends request data off-system.
The manifest says the skill is a pure technical reference with zero external ads. The help output and final unconditional footer insert promotional discovery text for other skills, which is behavior outside straightforward market-data and indicator functionality and conflicts with the stated ad-free scope.