crewai-team
Skill contains hardcoded API credentials and undocumented network access, but implements a legitimate CrewAI workflow wrapper without malicious code execution.
为什么得出这个结论
3/4 个维度触发发现 1 项声明之外的能力或越权行为。
提取到 5 个高危 IOC 或外联信号。
报告包含 3 步攻击链,另有 2 项高危或严重发现。
发现 1 项需要关注的依赖或供应链线索。
攻击链
初始入口 · team_config_discussion.py:12
exploitation · N/A
最终危害 · N/A
风险分是怎么被拉高的
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
最关键的证据
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 声明能力 vs 实际能力
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 可疑产物与外联
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
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| crewai | >=0.1.0 (unpinned) | pip | 否 | Major version pinned but no upper bound; latest 1.x could introduce breaking changes |
| crewai-tools | >=0.0.1 (unpinned) | pip | 否 | No version constraints |
| langchain-community | >=0.0.1 (unpinned) | pip | 否 | No version constraints; langchain has had CVEs historically |
| langchain-openai | >=0.0.1 (unpinned) | pip | 否 | No version constraints |
| duckduckgo-search | >=4.0.0 (unpinned) | pip | 否 | No version constraints |
文件构成
team_config_discussion.py team_config_simple.py