Scan Report
55 /100
x-scout
X/Twitter intelligence scraper. Search tweets, scrape profiles, pull comments, auto-transcribe videos.
X-Scout performs undeclared analytics phone-home on every execution and stores credentials in plaintext at ~/.x-scout/config.json, with shell execution via subprocess undocumented in SKILL.md.
Use with caution
Remove or document the silent analytics phone-home mechanism, encrypt stored credentials, and explicitly declare subprocess/shell capabilities in SKILL.md.
Attack Chain 3 steps
◎
Entry User runs setup.sh which silently registers install metadata to clawagents.dev
setup.sh:165⬡
Escalation On every x_scout.py execution, query hashes and metadata are POSTed to clawagents.dev
x_scout.py:100⬡
Escalation API keys stored in plaintext at ~/.x-scout/config.json (sensitive path)
x_scout.py:165Findings 6 items
| Severity | Finding | Location |
|---|---|---|
| High | Silent phone-home analytics on every execution Data Exfil | x_scout.py:100 |
| High | Setup registration phone-home with API key presence Data Exfil | setup.sh:165 |
| Medium | Plaintext credential storage in sensitive path Credential Theft | x_scout.py:165 |
| Medium | Undeclared shell execution via subprocess Doc Mismatch | x_scout.py:280 |
| Medium | Unpinned dependencies in requirements.txt Supply Chain | requirements.txt:1 |
| Low | Analytics registration endpoint reveals skill branding Doc Mismatch | setup.sh:15 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | NONE | WRITE | ✗ Violation | x_scout.py:~100 writes ~/.x-scout/config.json |
| Network | READ | READ+WRITE | ✓ Aligned | x_scout.py:~100 POSTs analytics to clawagents.dev |
| Shell | NONE | WRITE | ✗ Violation | x_scout.py:subprocess.run for yt-dlp/ffmpeg |
| Environment | READ | READ | ✓ Aligned | os.environ.get for API keys |
13 findings
Medium External URL 外部 URL
https://clawagents.dev/x-scout SKILL.md:15 Medium External URL 外部 URL
https://x.com/user/status/123456 SKILL.md:59 Medium External URL 外部 URL
https://clawagents.dev/reddit-rank/v1/xs/register setup.sh:8 Medium External URL 外部 URL
https://twitterapi.io setup.sh:109 Medium External URL 外部 URL
https://openrouter.ai$ setup.sh:125 Medium External URL 外部 URL
https://cerebras.ai setup.sh:137 Medium External URL 外部 URL
https://deepgram.com setup.sh:149 Medium External URL 外部 URL
https://x.com/user/status/123\ setup.sh:223 Medium External URL 外部 URL
https://api.twitterapi.io/twitter x_scout.py:67 Medium External URL 外部 URL
https://openrouter.ai/api/v1 x_scout.py:71 Medium External URL 外部 URL
https://api.cerebras.ai/v1/chat/completions x_scout.py:75 Medium External URL 外部 URL
https://clawagents.dev/reddit-rank/v1/xs/usage x_scout.py:97 Medium External URL 外部 URL
https://api.deepgram.com/v1/listen x_scout.py:748 File Tree
4 files · 56.2 KB · 1566 lines Python 1f · 1228L
Shell 1f · 225L
Markdown 1f · 111L
Text 1f · 2L
├─
requirements.txt
Text
├─
setup.sh
Shell
├─
SKILL.md
Markdown
└─
x_scout.py
Python
Dependencies 2 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
requests | >=2.28.0 | pip | No | Version not pinned, only lower bound specified |
python-dotenv | >=1.0.0 | pip | No | Version not pinned, only lower bound specified |
Security Positives
✓ No base64-encoded execution or obfuscated code detected
✓ No direct IP network requests or C2 communication patterns
✓ No credential exfiltration (keys used only for API calls, not sent elsewhere)
✓ No attempts to access ~/.ssh, ~/.aws, or other credential paths
✓ No reverse shell or RCE attempts
✓ Error handling is present (timeouts, try/catch blocks)
✓ API keys read from environment are not transmitted to analytics