x-tweet-fetcher
SKILL.md omits critical shell behavior (subprocess, SSH/SCP, router-agent queue writing) that exists in multiple scripts and could enable arbitrary remote execution through undocumented infrastructure pathways.
为什么得出这个结论
3/4 个维度触发发现 1 项声明之外的能力或越权行为。
提取到 3 个高危 IOC 或外联信号。
报告包含 6 步攻击链,另有 2 项高危或严重发现。
发现 3 项需要关注的依赖或供应链线索。
攻击链
初始入口 · SKILL.md:1
权限提升 · scripts/sogou_wechat.py:122
权限提升 · scripts/sogou_wechat.py:163
权限提升 · scripts/sogou_wechat.py:170
权限提升 · scripts/fetch_china.py:1308
权限提升 · scripts/x-profile-analyzer.py:62
风险分是怎么被拉高的
sogou_wechat.py and fetch_china.py write curl commands to /root/router-agent/cmd-queue and read results — not mentioned in SKILL.md
sogou_wechat.py SCPs temp scripts to remote hosts and executes via SSH — undocumented in SKILL.md
paper_recommend.py and to_obsidian.py invoke fetch_tweet.py via subprocess; SKILL.md only mentions import-based calls
README.md line 163 shows 'curl https://nim-lang.org/choosenim/init.sh -sSf | sh' in Nitter build instructions
x-profile-analyzer.py reads ~/.openclaw/agents/main/agent/auth-profiles.json for API keys — legitimate but undeclared
最关键的证据
Router-agent cmd-queue file I/O undeclared in SKILL.md
scripts/sogou_wechat.py and scripts/fetch_china.py contain an entirely undocumented execution path: writing curl commands to /root/router-agent/cmd-queue and reading results from /root/router-agent/cmd-output. This enables arbitrary network requests routed through a home router, invisible to SKILL.md readers.
scripts/sogou_wechat.py:38 SSH/SCP remote script execution undeclared in SKILL.md
sogou_wechat.py's sogou_wechat_search_via_ssh() writes a Python script to a temp file, SCPs it to a remote host (via SOGOU_SSH_HOST env var), executes it via SSH, and deletes it. This is a full remote execution pathway not mentioned in SKILL.md.
scripts/sogou_wechat.py:166 Subprocess calls between scripts not declared in SKILL.md
SKILL.md describes fetch_tweet.py as a standalone fetcher and mentions 'from scripts.fetch_tweet import fetch_tweet' as the import path. However, paper_recommend.py and to_obsidian.py invoke it via subprocess.run(['python3', 'fetch_tweet.py', ...]), which is undocumented and could be replaced with direct import.
scripts/paper_recommend.py:199 README.md contains curl|sh remote script execution
README.md line 163 documents 'curl https://nim-lang.org/choosenim/init.sh -sSf | sh' as part of Nitter build instructions. While this is in documentation, it sets a precedent that the skill infrastructure may execute arbitrary shell commands from URLs. The same pattern could be used with malicious URLs.
README.md:163 OpenClaw auth-profiles.json access not declared in SKILL.md
x-profile-analyzer.py reads API keys from ~/.openclaw/agents/main/agent/auth-profiles.json as a fallback authentication method. While this is a legitimate design pattern (reading skill ecosystem credentials), it is not declared in SKILL.md.
scripts/x-profile-analyzer.py:62 声明能力 vs 实际能力
scripts/sogou_wechat.py:60-73 writes to router cmd-queue file; scripts/fetch_china.py:1306-1321 writes to /root/router-agent/cmd-queue scripts/sogou_wechat.py:166-171 scp + ssh remote execution; scripts/paper_recommend.py:199-201 subprocess call; scripts/to_obsidian.py:837 subprocess call Network requests all declared: FxTwitter, Nitter, Camofox REST API, ArXiv, OpenAlex 可疑产物与外联
curl https://nim-lang.org/choosenim/init.sh -sSf | sh README.md:163
120.0.0.0 scripts/fetch_china.py:903
124.0.0.0 scripts/playwright_client.py:79
https://img.shields.io/badge/License-MIT-yellow.svg README.md:7
https://img.shields.io/badge/OpenClaw-Skill-blue.svg README.md:8
https://img.shields.io/badge/Python-3.7+-green.svg README.md:9
https://www.python.org README.md:9
https://img.shields.io/github/stars/ythx-101/x-tweet-fetcher?style=social README.md:10
https://x.com/elonmusk/status/123456789 README.md:78
http://127.0.0.1:8788 README.md:85
https://x.com/user/article/123 README.md:110
https://mp.weixin.qq.com/s/... README.md:113
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| requests | * | pip | 否 | Not pinned, used in sogou_wechat.py and fetch_china.py |
| duckduckgo_search | * | pip | 否 | Optional, used as fallback search engine |
| playwright | * | pip | 否 | Optional, used in playwright_client.py for platform scraping |
文件构成
scripts/fetch_tweet.py scripts/fetch_china.py scripts/to_obsidian.py scripts/paper_recommend.py scripts/nitter_client.py scripts/playwright_client.py scripts/paper_to_obsidian.py scripts/tweet_growth.py scripts/arxiv_author_finder.py scripts/x-profile-analyzer.py scripts/common.py scripts/sogou_wechat.py