crewai-team
Skill contains hardcoded API credentials and undocumented network access, but implements a legitimate CrewAI workflow wrapper without malicious code execution.
Why this conclusion was reached
3/4 dimensions flagged1 undeclared or violating capabilities were inferred.
5 high-risk artifacts or egress signals were extracted.
The report includes 3 attack-chain steps and 2 severe findings.
1 dependency or supply-chain issues need attention.
Attack Chain
Entry · team_config_discussion.py:12
exploitation · N/A
Impact · N/A
What drove the risk score up
DASHSCOPE_API_KEY='sk-sp-e0fb4e4a6dba43fb9bd707b8ef48bd6b' is hardcoded inline in team_config_*.py and run_*.py files; if this is a real key it enables unauthorized API usage and billing fraud
SKILL.md declares network:NONE but code makes outbound HTTPS calls to dashscope.aliyuncs.com without disclosure
requirements.txt has no version constraints: crewai>=0.1.0, crewai-tools>=0.0.1, etc., enabling supply chain attacks
USAGE.md:16 instructs pipe curl to sh for uv installation; not actual code execution but documents dangerous pattern
Most important evidence
Hardcoded API credential in 15 Python files
The DashScope API key 'sk-sp-e0fb4e4a6dba43fb9bd707b8ef48bd6b' is hardcoded inline in all team_config_*.py and run_*.py files. This key is written directly into source code, making it trivially extractable by anyone with read access to the skill. If this is a real key, it enables unauthorized API usage and potential billing fraud on the account owner's DashScope subscription.
team_config_discussion.py:12 Network access not declared in SKILL.md
SKILL.md declares 'network: NONE' but the skill makes outbound HTTPS API calls to https://coding.dashscope.aliyuncs.com/v1. This is the primary functionality of the skill (calling LLM APIs), yet it is completely undeclared in the skill definition.
SKILL.md:1 All dependencies unpinned
requirements.txt has zero version constraints for all 5 packages (crewai>=0.1.0, crewai-tools>=0.0.1, langchain-community>=0.0.1, langchain-openai>=0.0.1, duckduckgo-search>=4.0.0). This enables supply chain attacks through dependency confusion or malicious package updates.
requirements.txt:1 curl|sh pattern documented without justification
USAGE.md:16 documents 'curl -LsSf https://astral.sh/uv/install.sh | sh' for installing the uv package manager. While this is a documented CLI tool, it is not declared as necessary shell access in SKILL.md and is not executed by any Python code — only described in prose.
USAGE.md:16 Declared capability vs actual capability
Uses os.path operations and open() for file writes (prd_*.md output files) Makes HTTPS POST to https://coding.dashscope.aliyuncs.com/v1 without SKILL.md declaration No subprocess/shell execution in any Python code; curl|sh only in documentation Sets os.environ['OPENAI_API_KEY'] and ['OPENAI_API_BASE'] in run_*.py files No database access No cross-skill invocation No clipboard access No browser automation Suspicious artifacts and egress
curl -LsSf https://astral.sh/uv/install.sh | sh USAGE.md:16
API_KEY="sk-your-actual-key-here" COMPLETE.md:55
API_KEY="sk-your-openai-key-here" SETUP.md:47
API_KEY = "sk-sp-e0fb4e4a6dba43fb9bd707b8ef48bd6b" team_config_discussion.py:12
api_key = "sk-sp-e0fb4e4a6dba43fb9bd707b8ef48bd6b" team_config_simple.py:13
https://dashscope.console.aliyun.com/ COMPLETE.md:52
https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions SETUP.md:83
https://astral.sh/uv/install.sh USAGE.md:16
https://coding.dashscope.aliyuncs.com/v1 USAGE.md:124
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| crewai | >=0.1.0 (unpinned) | pip | No | Major version pinned but no upper bound; latest 1.x could introduce breaking changes |
| crewai-tools | >=0.0.1 (unpinned) | pip | No | No version constraints |
| langchain-community | >=0.0.1 (unpinned) | pip | No | No version constraints; langchain has had CVEs historically |
| langchain-openai | >=0.0.1 (unpinned) | pip | No | No version constraints |
| duckduckgo-search | >=4.0.0 (unpinned) | pip | No | No version constraints |
File composition
team_config_discussion.py team_config_simple.py