扫描报告
47 /100
wip-xai-grok
xAI Grok API. Search the web, search X, generate images, generate video.
Skill executes undeclared shell commands via 1Password CLI to resolve credentials without declaring shell:WRITE permission in SKILL.md, creating a doc-to-code mismatch on the most sensitive operation.
谨慎使用
Declare the 1Password CLI shell execution in SKILL.md's capabilities section, or use an environment-variable-only credential resolution strategy. The `op read` fallback is a legitimate 1Password integration but must be explicitly declared as it represents shell:WRITE-level access.
安全发现 4 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 高危 | Undeclared shell:WRITE via 1Password CLI execSync 权限提升 | core.mjs:28 |
| 中危 | SKILL.md declares zero dependencies but code requires 1Password CLI 文档欺骗 | SKILL.md:12 |
| 中危 | Silent local filesystem read in edit_image undeclared in docs 敏感访问 | core.mjs:252 |
| 低危 | process.env cached with the actual API key value 文档欺骗 | core.mjs:33 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 网络访问 | READ | READ | ✓ 一致 | core.mjs - all functions call https://api.x.ai/* for legitimate xAI API access |
| 命令执行 | NONE | WRITE | ✗ 越权 | core.mjs:28 - execSync('op read "op://Agent Secrets/X API/api key"') |
| 文件系统 | NONE | READ | ✗ 越权 | core.mjs:252-258 - edit_image reads local file paths and base64-encodes them |
| 环境变量 | NONE | READ | ✓ 一致 | core.mjs:25 - reads XAI_API_KEY from process.env |
| 技能调用 | NONE | NONE | — | No self-invocation detected |
10 项发现
中危 外部 URL 外部 URL
https://console.x.ai/ README.md:29 中危 外部 URL 外部 URL
https://clawhub.ai/castanley/grok README.md:122 中危 外部 URL 外部 URL
https://clawhub.ai README.md:122 中危 外部 URL 外部 URL
https://api.x.ai/v1 SKILL.md:8 中危 外部 URL 外部 URL
https://docs.x.ai/developers/tools/web-search SKILL.md:141 中危 外部 URL 外部 URL
https://docs.x.ai/developers/tools/x-search SKILL.md:142 中危 外部 URL 外部 URL
https://docs.x.ai/docs/guides/image-generations SKILL.md:143 中危 外部 URL 外部 URL
https://docs.x.ai/docs/guides/video-generations SKILL.md:144 中危 外部 URL 外部 URL
https://opencollective.com/express package-lock.json:137 中危 外部 URL 外部 URL
https://opencollective.com/fastify package-lock.json:448 目录结构
10 文件 · 74.2 KB · 2243 行 JSON 2f · 1183L
JavaScript 3f · 733L
Markdown 5f · 327L
├─
▾
_trash
│ └─
RELEASE-NOTES-v1-0-3.md
Markdown
├─
▾
ai
│ └─
▾
todos
│ └─
PUNCHLIST.md
Markdown
├─
CHANGELOG.md
Markdown
├─
cli.mjs
JavaScript
├─
core.mjs
JavaScript
├─
mcp-server.mjs
JavaScript
├─
package-lock.json
JSON
├─
package.json
JSON
├─
README.md
Markdown
└─
SKILL.md
Markdown
依赖分析 2 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
@modelcontextprotocol/sdk | ^1.27.1 | npm | 否 | Version loosely pinned with caret. Contains no known vulnerabilities at this version. |
op (1Password CLI) | any | system binary | 否 | Not declared in package.json or SKILL.md. Implicit runtime dependency for credential resolution. |
安全亮点
✓ All network requests go to legitimate, declared xAI API endpoints (api.x.ai) only
✓ No obfuscation detected — no base64 eval, no dynamic code generation, no anti-analysis patterns
✓ No credential exfiltration — the 1Password read is only used locally to obtain the API key for xAI
✓ No remote code execution or reverse shell patterns present
✓ No access to sensitive paths like ~/.ssh, ~/.aws, or .env files beyond the declared XAI_API_KEY
✓ No hidden instructions in HTML comments or documentation
✓ Package.json has version-pinned dependencies (except SDK peer deps resolved by host)
✓ Input validation present (max limits on domains, handles, image count, etc.)
✓ No data exfiltration — all API calls are to the legitimate xAI service
✓ No supply-chain concerns — @modelcontextprotocol/sdk is a well-known, widely-used package