安全决策报告
elevenlabs-toolkit
ElevenLabs语音API工具包存在未声明的MISTRAL_API_KEY环境变量访问,SKILL.md仅声明ELEVENLABS_API_KEY但代码实际还使用Mistral API进行对话增强功能,属于文档-行为差异。
最直接的威胁证据
为什么得出这个结论
1/4 个维度触发 阻止
声明与实际能力
发现 1 项声明之外的能力或越权行为。
复核
隐藏执行与外联
提取到 3 个一般风险产物,需要结合上下文判断。
通过
攻击链与高危发现
没有形成明确的恶意路径。
复核
依赖与供应链卫生
发现 3 项需要关注的依赖或供应链线索。
风险分是怎么被拉高的
未声明的环境变量访问 +20
代码访问MISTRAL_API_KEY但SKILL.md仅声明ELEVENLABS_API_KEY
文档-行为差异 +15
story_concierge功能使用了未声明的第三方API集成
最关键的证据
中危 文档欺骗
未声明的环境变量依赖
SKILL.md metadata仅声明ELEVENLABS_API_KEY为必需环境变量,但scripts/elevenlabs_api.py第162行还读取MISTRAL_API_KEY用于story_concierge功能的对话增强。
scripts/elevenlabs_api.py:162 在SKILL.md的requires.env数组中补充MISTRAL_API_KEY,或将Mistral集成改为可选功能并添加条件判断处理缺失情况。
低危 文档欺骗
安全说明与实际代码不符
SKILL.md安全备注声称使用base64编码音频数据,但实际elevenlabs_api.py代码中使用的是r.content直接获取bytes,无base64处理。
SKILL.md:33 移除或修正安全说明中的base64描述,使其与实际代码一致。
声明能力 vs 实际能力
网络访问 通过
声明 READ
→ 推断 READ
SKILL.md声明outbound调用elevenlabs.io 环境变量 阻止
声明 READ
→ 推断 READ
scripts/elevenlabs_api.py:162 - 额外读取MISTRAL_API_KEY 文件系统 通过
声明 NONE
→ 推断 NONE
无文件写入操作 可疑产物与外联
中危 外部 URL
https://api.elevenlabs.io/v1/voices SKILL.md:89
中危 外部 URL
https://api.elevenlabs.io/v1/user/subscription SKILL.md:227
中危 外部 URL
https://api.elevenlabs.io/v1 scripts/elevenlabs_api.py:13
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| httpx | 未锁定 | pip | 否 | 代码导入但无版本锁定 |
| fastapi | 未锁定 | pip | 否 | 代码导入但无版本锁定 |
| websockets | 未锁定 | pip | 否 | WebSocket流功能需要,无版本锁定 |
| mistralai | 未锁定 | pip | 否 | 隐藏依赖,SKILL.md未声明 |
文件构成
2 个文件 · 448 行
Markdown 1 个文件 · 267 行Python 1 个文件 · 181 行
需关注文件 · 2
SKILL.md 安全说明与实际代码不符 · https://api.elevenlabs.io/v1/voices · https://api.elevenlabs.io/v1/user/subscription
scripts/elevenlabs_api.py 未声明的环境变量依赖 · https://api.elevenlabs.io/v1
安全亮点
代码结构清晰,无混淆或隐蔽执行逻辑
无反向shell或远程代码执行
网络请求仅指向官方ElevenLabs API域名
依赖项为标准安全库(httpx, fastapi)
API密钥仅用于直接调用对应服务,无外传行为