安全决策报告

video-to-text

The skill has significant doc-to-code mismatch with undeclared shell execution via execSync and undeclared filesystem writes, though the underlying functionality appears legitimate for video transcription.

安装决策优先 来源: 手动上传 扫描时间: 2026/4/3
文件 6
IOC 4
越权项 2
发现 4
最直接的威胁证据

为什么得出这个结论

1/4 个维度触发
阻止
声明与实际能力

发现 2 项声明之外的能力或越权行为。

复核
隐藏执行与外联

提取到 4 个一般风险产物,需要结合上下文判断。

通过
攻击链与高危发现

没有形成明确的恶意路径。

通过
依赖与供应链卫生

依赖结构存在,但暂未看到明显高危告警。

风险分是怎么被拉高的

Undeclared shell execution +20

SKILL.md does not mention execSync usage in tool.js; only declares the video_to_text tool interface

Undeclared filesystem writes +10

Downloads files to os.tmpdir() without declaring filesystem:WRITE capability

Command injection risk pattern +10

execSync(args.join(' ')) pattern is dangerous; args are joined to string before execution

Hidden credential handling +5

Python script accepts --api-key for AssemblyAI but not declared in SKILL.md

最关键的证据

中危

Undeclared subprocess execution via execSync

tool.js uses child_process.execSync() to execute shell commands but SKILL.md only declares the tool interface without mentioning this implementation detail.

tool.js:24
Declare shell:WRITE capability in _meta.json tools section, or refactor to use child_process.spawn() with explicit argument arrays to avoid string injection risk.
中危

Command injection risk pattern

The execSync(args.join(' ')) pattern joins array elements into a single string before execution. While currently safe (URLs are passed as separate array items), this pattern is fragile and could become exploitable if parameters are modified.

tool.js:24
Use child_process.spawn() with explicit argument array instead of execSync with string joining.
低危

Undeclared filesystem write to temp directory

index.js downloads files to os.tmpdir() using fs.createWriteStream but this filesystem:WRITE usage is not declared in SKILL.md.

index.js:44
Add filesystem:WRITE to declared capabilities in _meta.json or document this behavior in SKILL.md.
低危

Hidden credential parameter in Python script

scripts/video2text.py accepts --api-key parameter for AssemblyAI but this capability is not documented in SKILL.md.

scripts/video2text.py:64
Document API key support in SKILL.md or remove if not needed.

声明能力 vs 实际能力

网络访问 通过
声明 READ
推断 READ
SKILL.md mentions API calls to api.myshell.ai and api.openai.com
命令执行 阻止
声明 NONE
推断 WRITE
tool.js:24 - execSync(args.join(' '))
文件系统 阻止
声明 NONE
推断 WRITE
index.js:44 - fs.createWriteStream(tempFile), index.js:103 - fs.unlink()
环境变量 通过
声明 NONE
推断 NONE
No os.environ access detected

可疑产物与外联

中危 外部 URL
https://api.myshell.ai/v1/audio/transcriptions

SKILL.md:53

中危 外部 URL
https://api.assemblyai.com/v2/upload

scripts/video2text.py:49

中危 外部 URL
https://api.assemblyai.com/v2/transcript

scripts/video2text.py:58

中危 外部 URL
https://api.assemblyai.com/v2/transcript/

scripts/video2text.py:69

依赖与供应链

包名版本来源漏洞备注
node system system Required runtime, no vulnerability scanning applicable

文件构成

6 个文件 · 602 行
JavaScript 2 个文件 · 328 行Python 1 个文件 · 141 行JSON 2 个文件 · 70 行Markdown 1 个文件 · 63 行
需关注文件 · 4
index.js JavaScript · 252 行
Undeclared filesystem write to temp directory
scripts/video2text.py Python · 141 行
Hidden credential parameter in Python script · https://api.assemblyai.com/v2/upload · https://api.assemblyai.com/v2/transcript · https://api.assemblyai.com/v2/transcript/
SKILL.md Markdown · 63 行
https://api.myshell.ai/v1/audio/transcriptions
tool.js JavaScript · 76 行
Undeclared subprocess execution via execSync · Command injection risk pattern
其他文件 · _meta.json · package.json

安全亮点

No evidence of credential exfiltration or data theft
No base64-encoded payloads or obfuscated code
No attempts to access ~/.ssh, ~/.aws, or other sensitive paths
No curl|bash remote script execution
No hidden instructions in comments or HTML
Legitimate video transcription functionality with documented API endpoints
Proper file cleanup after processing (fs.unlink)