扫描报告
38 /100
crewai-team
使用 CrewAI 多 Agent 团队进行产品需求分析和 PRD 生成
Skill contains hardcoded API credentials and undocumented network access, but implements a legitimate CrewAI workflow wrapper without malicious code execution.
谨慎使用
Remove all hardcoded API keys from source files and migrate to environment variables or a secrets manager. Declare network access in SKILL.md. Pin all dependency versions. Audit the hardcoded key sk-sp-e0fb4e4a6dba43fb9bd707b8ef48bd6b — if real, rotate immediately as it appears in 15 Python files.
攻击链 3 步
◎
入口 Attacker reads any Python source file to extract hardcoded API key
team_config_discussion.py:12⬡
提权 Attacker uses extracted DashScope API key for unauthorized LLM API calls
N/A◉
影响 Victim incurs unauthorized billing charges on DashScope account
N/A安全发现 4 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 高危 | Hardcoded API credential in 15 Python files 凭证窃取 | team_config_discussion.py:12 |
| 高危 | Network access not declared in SKILL.md 文档欺骗 | SKILL.md:1 |
| 中危 | All dependencies unpinned 供应链 | requirements.txt:1 |
| 低危 | curl|sh pattern documented without justification 文档欺骗 | USAGE.md:16 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 文件系统 | NONE | READ | ✓ 一致 | Uses os.path operations and open() for file writes (prd_*.md output files) |
| 网络访问 | NONE | WRITE | ✗ 越权 | Makes HTTPS POST to https://coding.dashscope.aliyuncs.com/v1 without SKILL.md de… |
| 命令执行 | NONE | NONE | — | No subprocess/shell execution in any Python code; curl|sh only in documentation |
| 环境变量 | NONE | WRITE | ✓ 一致 | Sets os.environ['OPENAI_API_KEY'] and ['OPENAI_API_BASE'] in run_*.py files |
| 数据库 | NONE | NONE | — | No database access |
| 技能调用 | NONE | NONE | — | No cross-skill invocation |
| 剪贴板 | NONE | NONE | — | No clipboard access |
| 浏览器 | NONE | NONE | — | No browser automation |
1 严重 4 高危 9 项发现
严重 危险命令 危险 Shell 命令
curl -LsSf https://astral.sh/uv/install.sh | sh USAGE.md:16 高危 API 密钥 疑似硬编码凭证
API_KEY="sk-your-actual-key-here" COMPLETE.md:55 高危 API 密钥 疑似硬编码凭证
API_KEY="sk-your-openai-key-here" SETUP.md:47 高危 API 密钥 疑似硬编码凭证
API_KEY = "sk-sp-e0fb4e4a6dba43fb9bd707b8ef48bd6b" team_config_discussion.py:12 高危 API 密钥 疑似硬编码凭证
api_key = "sk-sp-e0fb4e4a6dba43fb9bd707b8ef48bd6b" team_config_simple.py:13 中危 外部 URL 外部 URL
https://dashscope.console.aliyun.com/ COMPLETE.md:52 中危 外部 URL 外部 URL
https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions SETUP.md:83 中危 外部 URL 外部 URL
https://astral.sh/uv/install.sh USAGE.md:16 中危 外部 URL 外部 URL
https://coding.dashscope.aliyuncs.com/v1 USAGE.md:124 目录结构
29 文件 · 146.5 KB · 4670 行 Python 15f · 2520L
Markdown 13f · 2145L
Text 1f · 5L
├─
COMPLETE.md
Markdown
├─
HOWTO_WORK.md
Markdown
├─
PARALLEL_DISCUSSION.md
Markdown
├─
prd_minimal_20260310_160645.md
Markdown
├─
prd_minimal_20260310_160746.md
Markdown
├─
prd_mobile_20260310_162722.md
Markdown
├─
prd_mobile_20260310_163256.md
Markdown
├─
prd_sequential_20260310_154832.md
Markdown
├─
README.md
Markdown
├─
requirements.txt
Text
├─
run_discussion.py
Python
├─
run_hierarchical.py
Python
├─
run_interactive.py
Python
├─
run_minimal.py
Python
├─
run_mobile.py
Python
├─
run_openclaw.py
Python
├─
run_team.py
Python
├─
run_with_log.py
Python
├─
SETUP.md
Markdown
├─
SKILL.md
Markdown
├─
team_config_discussion.py
Python
├─
team_config_hierarchical.py
Python
├─
team_config_minimal.py
Python
├─
team_config_mobile.py
Python
├─
team_config_multi_model.py
Python
├─
team_config_simple.py
Python
├─
team_config.py
Python
├─
USAGE.md
Markdown
└─
VIEW_DISCUSSION_LOG.md
Markdown
依赖分析 5 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
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 |
安全亮点
✓ No actual shell command execution in Python code — the curl|sh is only in documentation
✓ No access to sensitive paths (~/.ssh, ~/.aws, .env) — only writes to cwd for PRD output files
✓ No base64-encoded payloads, eval(), or obfuscated code
✓ No reverse shell, C2 communication, or data exfiltration infrastructure
✓ DuckDuckGo search is used via langchain tool (documented API), not raw HTTP exfiltration
✓ PRDs are written to local files in cwd only, not sent to external servers