technews
Verdict safe, but 3 findings (3 medium), mainly data exfiltration, command injection, resource abuse. Most recent scan 2026-02-07.
The technews skill presents MODERATE security risks primarily related to unvalidated external network requests and resource management. The skill fetches and processes content from arbitrary URLs provided by TechMeme's RSS feed without domain validation or SSRF protection, which could be exploited to access internal network resources. The parallel fetching mechanism lacks rate limiting and could cause resource exhaustion. HTML processing uses regex patterns that may be vulnerable to ReDoS attacks. However, the skill does not exhibit critical threats like credential theft, command injection, or data exfiltration to attacker-controlled servers. The network requests are legitimate news aggregation functionality, though they need better security controls. Cache files are stored in plaintext but contain only public news data. The skill would benefit from URL validation, rate limiting, proper HTML parsing, and dependency version pinning.
Scanner's overall assessment (LLM analyzer)
Second scanner: NVIDIA SkillSpector
Independent static run, no language model, over the same files as the Cisco scan above. How the two scanners compare across the whole corpus: Two scanners, one corpus.
What this skill does
Fetches top stories from TechMeme, summarizes linked articles, and highlights social media reactions. Use when user wants tech news or says /technews.
- Package
- 7 files, 20 KB
- SKILL.md
- 245 words, 10 sections
- Code
- Python (4)
SKILL.md covers: TechNews Skill · Usage · Setup · Architecture · Commands · /technews · How It Works · State · Examples · Future Expansion
Findings
MEDIUM Unvalidated External Network Requests to Arbitrary URLs Data Exfiltrationllm
The skill fetches content from arbitrary external URLs provided by TechMeme RSS feed without validation or domain allowlisting. The article_fetcher.py script makes HTTP requests to any URL in the feed, which could be exploited to access internal network resources, trigger SSRF attacks, or exfiltrate data through DNS queries. No domain validation, protocol restrictions, or URL sanitization is performed before making requests.
scripts/article_fetcher.py
response = requests.get(url, headers=headers, timeout=timeout, allow_redirects=True) - accepts any URL without validationMEDIUM Regex Injection Risk in HTML Content Processing Command Injectionllm
The article_fetcher.py uses regular expressions to process untrusted HTML content from external websites without proper sanitization. The regex pattern 're.sub(r'<[^>]+>', ' ', desc_text)' in techmeme_scraper.py and similar patterns in article_fetcher.py could be vulnerable to ReDoS (Regular Expression Denial of Service) attacks if malicious HTML with deeply nested or pathological patterns is encountered.
scripts/techmeme_scraper.py
desc_text = re.sub(r'<[^>]+>', ' ', desc_text) - processes untrusted HTML with regexMEDIUM Unbounded Parallel Network Requests Without Rate Limiting Resource Abusellm
The article_fetcher.py uses ThreadPoolExecutor to fetch multiple articles in parallel without rate limiting, connection pooling limits, or resource constraints. The 'fetch_multiple' function can spawn up to 'max_workers' threads (default appears unlimited based on ThreadPoolExecutor defaults) making simultaneous network requests, which could exhaust system resources, trigger rate limits on target servers, or be used for denial of service.
scripts/article_fetcher.py
with ThreadPoolExecutor(max_workers=max_workers) as executor: futures = {executor.submit(fetch_article, story['url']): story for story in stories} - no rate limiting or resource boundsWhat is in the package
| File | Kind | Size |
|---|---|---|
README.md | doc | 1.6 KB |
SKILL.md | doc | 1.9 KB |
requirements.txt | doc | 40 B |
scripts/article_fetcher.py | script | 4.6 KB |
scripts/social_reactions.py | script | 4.3 KB |
scripts/techmeme_scraper.py | script | 4.7 KB |
scripts/technews.py | script | 2.9 KB |
External hosts referenced
github.com hn.algolia.com news.ycombinator.com nitter.net www.techmeme.com
Hostnames that appear in the skill's files. Referencing a host is not a finding; compare against the findings above and the skill's stated purpose.
Package contents recorded 2026-10-22. The scan above ran against the version current at scan time; the two can differ if the skill has since been updated.
What we checked
- Static analyzer. Pattern rules over SKILL.md and bundled files: known-bad commands, exfiltration URLs, secrets, obfuscation.
- Llm analyzer. A language model reads the skill and reports intent-level issues the rules cannot express.
- Meta analyzer. A second model pass that validates, deduplicates and re-scores the other analyzers' findings.
What we did not check
- Runtime behaviour. The skill was not executed; findings come from reading its files.
- Anything fetched at install or run time, including remote scripts, package dependencies, and URLs the skill tells the agent to open.
- Content the analyzers cannot read: images, binaries, and some non-English text.
- Known scanner bypass classes. See the methodology and limitations page.
Sources
- Repository: https://clawhub.ai/skills/technews
- Raw scan result: techmeme-news-scan.json
- Badge for your README:
 - Request a re-scan