Scan Report
25 /100
rumor-buster
Dual-engine fact-checking skill combining Chinese and English search to verify messages and trace their origins
Legitimate dual-engine fact-checking skill with no malicious behavior, but contains a hardcoded API key in tavily_search.py which is a credential-leak concern.
Safe to install
Remove the hardcoded API key fallback in scripts/tavily_search.py line 12. Always require TAVILY_API_KEY from environment. No other security action needed.
Findings 4 items
| Severity | Finding | Location |
|---|---|---|
| Medium | Hardcoded API key in tavily_search.py | scripts/tavily_search.py:12 |
| Low | Undeclared network requests during setup detection | sub-skills/setup/setup.py:84 |
| Low | Undeclared filesystem write | sub-skills/setup/setup.py:152 |
| Low | Broad tool detection via globals().get() | sub-skills/setup/SKILL.md:140 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | NONE | READ | ✓ Aligned | setup.py reads ~/.rumor-buster-config; setup.py reads skill path ~/.openclaw/wor… |
| Filesystem | NONE | WRITE | ✓ Aligned | setup.py writes ~/.rumor-buster-config via save_config() |
| Network | NONE | READ | ✓ Aligned | tavily_search.py POSTs to api.tavily.com; setup.py tests search engine availabil… |
| Shell | NONE | NONE | — | setup.py uses subprocess.run(['which', 'kimi_search']) only within the setup sub… |
15 findings
Medium External URL 外部 URL
https://img.shields.io/badge/version-0.4.0-blue.svg README.md:3 Medium External URL 外部 URL
https://img.shields.io/badge/license-MIT-green.svg README.md:4 Medium External URL 外部 URL
https://tavily.com README.md:236 Medium External URL 外部 URL
https://api.tavily.com/search scripts/tavily_search.py:23 Medium External URL 外部 URL
https://sogou.com sub-skills/setup/SKILL.md:303 Medium External URL 外部 URL
https://wx.sogou.com sub-skills/setup/SKILL.md:304 Medium External URL 外部 URL
https://so.toutiao.com sub-skills/setup/SKILL.md:305 Medium External URL 外部 URL
https://duckduckgo.com sub-skills/setup/SKILL.md:306 Medium External URL 外部 URL
https://startpage.com sub-skills/setup/SKILL.md:307 Medium External URL 外部 URL
https://www.sogou.com/web?query=test sub-skills/setup/setup.py:84 Medium External URL 外部 URL
https://wx.sogou.com/weixin?type=2&query=test sub-skills/setup/setup.py:85 Medium External URL 外部 URL
https://so.toutiao.com/search?keyword=test sub-skills/setup/setup.py:86 Medium External URL 外部 URL
https://duckduckgo.com/html/?q=test sub-skills/setup/setup.py:107 Medium External URL 外部 URL
https://www.startpage.com/sp/search?query=test sub-skills/setup/setup.py:108 Medium External URL 外部 URL
https://tavily.com/ sub-skills/setup/setup.py:235 File Tree
6 files · 75.4 KB · 2647 lines Markdown 4f · 2134L
Python 2f · 513L
├─
▾
scripts
│ └─
tavily_search.py
Python
├─
▾
sub-skills
│ └─
▾
setup
│ ├─
setup.py
Python
│ └─
SKILL.md
Markdown
├─
README.md
Markdown
├─
README.zh.md
Markdown
└─
SKILL.md
Markdown
Dependencies 1 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
requests | unpinned | pip | No | Used in tavily_search.py; no version constraint specified |
Security Positives
✓ No reverse shell, C2, or data exfiltration behavior observed
✓ No access to sensitive paths like ~/.ssh, ~/.aws, or .env credentials
✓ No eval(), base64 decode, or other code injection patterns
✓ No curl|bash or wget|sh remote script execution
✓ Uses standard library requests/urllib for network calls — no shell wrapping
✓ No hidden instructions in HTML comments or documentation
✓ Subprocess usage in setup.py is scoped to 'which' command for tool detection only
✓ Configuration file stored in user home directory, not in shared locations