安全决策报告

update-approval-guard (primary) + instreet + 25+ sub-skills (workspace)

Workspace contains a live InStreet API key stored in plaintext across 4 config files, undeclared shell execution in publish.sh, and the Instreet skill lacks declared filesystem/network permissions despite reading configs and making network requests.

安装决策优先 来源: 手动上传 扫描时间: 2026/4/3
文件 279
IOC 224
越权项 4
发现 5
最直接的威胁证据
高危
Live InStreet API Key Stored in Plaintext

The InStreet/Coze API key sk_inst_c7acbeabd3c0c24acac6afb98db3828d is stored in plaintext in 4 files: skills/instreet/config.json, skills/instreet/scripts/config.json, IDENTITY.md, and instreet-config.json. If any of these files are accidentally shared, committed to a public repo, or accessed by a malicious skill, the API key can be stolen. Note: the key is used legitimately by the Instreet heartbeat script, but the storage pattern is a significant security concern.

skills/instreet/config.json:4

为什么得出这个结论

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

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

阻止
隐藏执行与外联

提取到 3 个高危 IOC 或外联信号。

阻止
攻击链与高危发现

报告包含 0 步攻击链,另有 2 项高危或严重发现。

通过
依赖与供应链卫生

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

风险分是怎么被拉高的

Live API key in plaintext +20

InStreet API key sk_inst_c7acbeabd3c0c24acac6afb98db3828d appears in 4 plaintext files (skills/instreet/config.json, skills/instreet/scripts/config.json, IDENTITY.md, instreet-config.json). While the key is used legitimately by the heartbeat script, storing credentials in plaintext across multiple locations creates significant exfiltration risk.

Undeclared shell execution in publish.sh +12

update-approval-guard/publish.sh runs git init, git add/commit/push, gh repo create, clawhub login/publish — all shell:WRITE operations — but these are not declared anywhere in update-approval-guard/SKILL.md or the root SKILL.md.

Destructive shell command in SKILL.md +8

skills/Elite-Longterm-Memory/SKILL.md:293 documents 'rm -rf ~/.openclaw/memory/lancedb/' as a maintenance command. Although documented, it's a broad recursive delete and targets a system directory (~/.openclaw/). Pre-scan misreported this as 'rm -rf ~'; the actual path is more specific but still dangerous.

Undeclared filesystem access in Instreet skill +5

skills/instreet/scripts/heartbeat.mjs reads config.json (filesystem:READ) and makes network requests (network:WRITE) — both undeclared in skills/instreet/SKILL.md. The capability model requires declaration of all resources accessed.

最关键的证据

高危

Live InStreet API Key Stored in Plaintext

The InStreet/Coze API key sk_inst_c7acbeabd3c0c24acac6afb98db3828d is stored in plaintext in 4 files: skills/instreet/config.json, skills/instreet/scripts/config.json, IDENTITY.md, and instreet-config.json. If any of these files are accidentally shared, committed to a public repo, or accessed by a malicious skill, the API key can be stolen. Note: the key is used legitimately by the Instreet heartbeat script, but the storage pattern is a significant security concern.

skills/instreet/config.json:4
Store the API key in an environment variable (e.g., INSTREET_API_KEY) and reference it via process.env in scripts. Add .env to .gitignore. Rotate the current key immediately.
高危

Undeclared Shell Execution in publish.sh

update-approval-guard/publish.sh executes git commands (init, add, commit, push), gh CLI (repo create), and clawhub CLI (login, publish) — all requiring shell:WRITE permissions. These operations are not declared in any SKILL.md file. The script also prompts for user input interactively, which is a social-engineering risk if executed in an automated context.

update-approval-guard/publish.sh:1
Either remove publish.sh from production, move it to a clearly-marked development-only directory, or declare shell:WRITE and network:WRITE capabilities explicitly in the skill documentation.
中危

Destructive Recursive Delete in Elite-Longterm-Memory SKILL.md

The maintenance commands section of skills/Elite-Longterm-Memory/SKILL.md at line 293 documents 'rm -rf ~/.openclaw/memory/lancedb/' as a 'nuclear option' to clear vectors. While documented (not hidden), this command is a broad recursive delete targeting a system directory. Additionally, the pre-scan misidentified this as 'rm -rf ~' (user home), which is even more dangerous — this is a scanning accuracy concern worth noting.

skills/Elite-Longterm-Memory/SKILL.md:293
Replace the broad rm -rf with more targeted deletion: 'find ~/.openclaw/memory/lancedb/ -mindepth 1 -delete' or add a confirmation prompt in the documentation. Also clarify the exact scope of what is deleted.
中危

Hardcoded Internal IP in SOUL.md

A hardcoded IP address 115.190.250.10 for the star-office UI dashboard is embedded in SOUL.md. This is an internal network address (not a public/external IP), so the exfiltration risk is low. However, it represents hardcoded infrastructure assumption that may become invalid if the service moves.

SOUL.md:59
Replace the hardcoded IP with an environment variable (e.g., STAR_OFFICE_UI_URL) or a hostname that can be configured via TOOLS.md.
低危

Example Placeholder API Keys in translate-cli Quickstart

The translate-cli quickstart references example API key names (OPENAI_API_KEY, ANTHROPIC_API_KEY, DEEPL_API_KEY) with placeholder values like 'your_openai_key'. These are clearly example placeholders, not real credentials. This is a documentation false positive — no actual credentials are exposed.

skills/translate-cli/references/quickstart.md:9
No action needed. The values are clearly placeholder examples. Consider adding a comment clarifying these are placeholders.

声明能力 vs 实际能力

文件系统 阻止
声明 NONE
推断 READ
skills/instreet/scripts/heartbeat.mjs:15 — reads config.json via readFileSync
网络访问 阻止
声明 NONE
推断 WRITE
skills/instreet/scripts/heartbeat.mjs:30 — POST to /api/v1/upvote, /api/v1/posts/.../comments, etc.
命令执行 阻止
声明 NONE
推断 WRITE
update-approval-guard/publish.sh — git init/commit/push, gh repo create, clawhub publish (undeclared)
命令执行 阻止
声明 NONE
推断 WRITE
skills/Elite-Longterm-Memory/SKILL.md:293 — rm -rf ~/.openclaw/memory/lancedb/

可疑产物与外联

严重 危险命令
rm -rf ~

skills/Elite-Longterm-Memory/SKILL.md:293

高危 IP 地址
115.190.250.10

SOUL.md:59

高危 API 密钥
API_KEY="your_anthropic_key"

skills/translate-cli/references/quickstart.md:9

中危 外部 URL
http://115.190.250.10:19000

SOUL.md:59

中危 外部 URL
https://feishu.cn/docx/EKn6dmGxsoj4SZxJEbOciyIVnNf

UPDATE-APPROVAL-GUARD-PUBLISH.md:45

中危 外部 URL
https://feishu.cn/docx/ZU8ZdvND0oHV79xSVe1cbqeinrd

UPDATE-APPROVAL-GUARD-PUBLISH.md:46

中危 外部 URL
https://docs.clawhub.com

UPDATE-APPROVAL-GUARD-PUBLISH.md:105

中危 外部 URL
https://docs.openclaw.ai

UPDATE-APPROVAL-GUARD-PUBLISH.md:106

中危 外部 URL
https://api.z.ai/api/mcp/zread/mcp

config/mcporter.json:4

中危 外部 URL
https://api.z.ai/api/mcp/web_search_prime/mcp

config/mcporter.json:10

中危 外部 URL
https://ucn19uuu5wk8.feishu.cn/base/JFWebb76KaFd7as501ac3UIDnxb

docs/industry_news_README.md:51

中危 外部 URL
https://instreet.coze.site

instreet-config.json:9

依赖与供应链

包名版本来源漏洞备注
fetch (built-in Node.js) N/A Node.js built-in Used for API requests in heartbeat.mjs; no external dependencies
gh CLI unknown system Used in publish.sh; must be pre-installed on the system
clawhub CLI unknown system Used in publish.sh; must be pre-installed on the system

文件构成

279 个文件 · 41547 行
Markdown 124 个文件 · 19847 行Python 27 个文件 · 7903 行JSON 79 个文件 · 5655 行JavaScript 21 个文件 · 5137 行Shell 18 个文件 · 2582 行Text 6 个文件 · 252 行
需关注文件 · 7
skills/instreet/config.json JSON · 8 行
Live InStreet API Key Stored in Plaintext
skills/instreet/scripts/config.json JSON · 7 行
skills/tech-news-digest/config/defaults/sources.json JSON · 1888 行
https://simonwillison.net/atom/everything/ · https://garymarcus.substack.com/feed · https://huggingface.co/blog/feed.xml · https://magazine.sebastianraschka.com/feed · https://lilianweng.github.io/index.xml · https://gwern.substack.com/feed · https://www.dwarkeshpatel.com/feed · https://minimaxir.com/index.xml · https://blog.google/technology/ai/rss/ · https://vitalik.eth.limo/feed.xml · https://www.coindesk.com/arc/outboundfeeds/rss/ · https://www.theblock.co/rss.xml · https://decrypt.co/feed · https://cointelegraph.com/rss · https://hnrss.org/frontpage · https://feeds.arstechnica.com/arstechnica/index · https://techcrunch.com/feed/ · https://www.theverge.com/rss/index.xml · https://krebsonsecurity.com/feed/ · https://daringfireball.net/feeds/main · http://www.aaronsw.com/2002/feeds/pgessays.rss · https://www.troyhunt.com/rss/ · http://antirez.com/rss · https://mitchellh.com/feed.xml · https://geohot.github.io/blog/feed.xml · https://www.reddit.com/r/MachineLearning/.rss · https://36kr.com/feed · https://www.jiqizhixin.com/rss · https://www.qbitai.com/feed · https://www.infoq.cn/feed · https://www.technologyreview.com/feed · https://venturebeat.com/category/ai/feed/ · https://www.404media.co/rss · https://aisnakeoil.substack.com/feed · https://blog.bytebytego.com/feed · https://blogs.nvidia.com/feed/ · https://deepmind.google/blog/rss.xml · https://www.producthunt.com/feed · https://messari.io/rss · https://thedefiant.io/feed · https://www.ifanr.com/feed · https://sspai.com/feed · https://www.wired.com/feed/rss · https://spectrum.ieee.org/feeds/feed.rss · https://www.bensbites.com/feed · https://the-decoder.com/feed/ · https://a16zcrypto.substack.com/feed · https://newsletter.banklesshq.com/feed · https://overreacted.io/rss.xml · https://eli.thegreenplace.net/feeds/all.atom.xml · https://matklad.github.io/feed.xml · https://lucumr.pocoo.org/feed.atom · https://devblogs.microsoft.com/oldnewthing/feed · https://rachelbythebay.com/w/atom.xml · https://xeiaso.net/blog.rss · https://pluralistic.net/feed/ · https://lcamtuf.substack.com/feed · https://buttondown.com/hillelwayne/rss · https://dynomight.net/feed.xml · https://www.geoffreylitt.com/feed.xml · https://fabiensanglard.net/rss.xml
skills/tech-news-digest/scripts/fetch-twitter.py Python · 917 行
https://api.x.com/2 · https://api.twitterapi.io · https://api.getxapi.com · https://twitter.com/
skills/hiic-industry-daily-report/scripts/generate-report.mjs JavaScript · 991 行
https://api.search.brave.com/res/v1/web/search
scripts/industry_daily_news.mjs JavaScript · 837 行
https://api.search.brave.com/res/v1/web/search?q=$
skills/tech-news-digest/SKILL.md Markdown · 536 行
https://myblog.com/rss
其他文件 · merge-sources.py · fetch-web.py · fetch-github.py · CHANGELOG.md · SKILL.md

安全亮点

The update-approval-guard skill has a well-designed security architecture with explicit approval workflows and never applies updates automatically
skills/instreet/scripts/heartbeat.mjs implements proper rate-limit handling (429 responses with retry delays) showing thoughtful API usage
Proactive-agent skill includes detailed security hardening guidance including skill vetting and agent network warnings
No evidence of base64-encoded payloads, direct IP exfiltration, eval(atob(...)), or other classic obfuscated attack patterns
No evidence of credential harvesting combined with remote exfiltration — the InStreet key is used for its intended platform only
The heartbeat script properly sanitizes API key exposure through Authorization header (Bearer token pattern), not in URLs