finance-news

ISSUES FOUND max severity HIGHSkillSpector Do not install 100 registry clawhub.ai last scanned 1 scan

33 findings (25 high, 6 medium, 2 low), mainly data exfiltration, policy violation, unauthorized tool use. Most recent scan 2026-02-06.

The finance-news skill is a sophisticated market briefing system with MEDIUM-HIGH security risk. Primary concerns include: (1) Hardcoded WhatsApp group JID exposing a specific communication channel, (2) Automatic transmission of portfolio data to external APIs without explicit user consent, (3) API key management relying on environment variables without security validation, (4) Command injection risks in subprocess calls with user-controlled data. The skill does NOT contain prompt injection, jailbreak attempts, or malicious code execution. However, the data exfiltration patterns and hardcoded credentials require remediation before public distribution. The skill is functional and well-structured but needs security hardening around secrets management and external API communication disclosure.

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

Market news briefings with AI summaries. Use when asked about stock news, market updates, portfolio performance, morning/evening briefings, financial headlines, or price alerts. Supports US/Europe/Japan markets, WhatsApp delivery, and English/German output.

Package
66 files, 2.2 MB
SKILL.md
912 words, 12+ sections
Code
Python (23), Shell (6), JavaScript (1)

SKILL.md covers: Finance News Skill · First-Time Setup · Quick Start · Generate morning briefing · View market overview · Get news for your portfolio · Get news for specific stock · Features · 📊 Market Coverage · 📰 News Sources · 🤖 AI Summaries · 📅 Automated Briefings

Findings

HIGH Suspicious URL detected: https://example.com/1 Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_research.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/2 Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_research.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/aapl1 Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_research.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/aapl2 Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_research.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/msft1 Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_research.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/1 Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_research.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/2 Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_research.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_research.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/feed.xml Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_fetch_news.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/feed.xml Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_fetch_news.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_fetch_news.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/top.xml Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_fetch_news.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/markets.xml Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_fetch_news.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/top.xml Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_fetch_news.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/feed.xml Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_fetch_news.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/feed.xml Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_fetch_news.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/rss.xml Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_fetch_news.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/rss.xml Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_fetch_news.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/1 Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_summarize.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/2 Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_summarize.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/3 Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_summarize.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/1 Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_summarize.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/2 Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_summarize.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Suspicious URL detected: https://example.com/3 Data Exfiltrationbehavioral

Script contains suspicious URL that may be used for data exfiltration

skills/clawhub-finance-news/tests/test_summarize.py

Remediation: Review URL and ensure it's legitimate and documented
HIGH Hardcoded WhatsApp Group JID in Cron Scripts Data Exfiltrationllm

Multiple cron scripts contain a hardcoded WhatsApp group JID (120363421796203667@g.us) as the default value for FINANCE_NEWS_TARGET. This exposes a specific WhatsApp group identifier that could be targeted for spam, social engineering, or unauthorized message delivery if the skill is distributed publicly.

cron/evening.sh

export FINANCE_NEWS_TARGET="${FINANCE_NEWS_TARGET:-120363421796203667@g.us}"
Remediation: Remove hardcoded group JID from all cron scripts. Use environment variable without default, or use a placeholder value. Document that users must set FINANCE_NEWS_TARGET in their environment before running cron jobs.
MEDIUM Reading environment variables that may contain secrets Data Exfiltrationstatic

Pattern detected: os.environ.get("FINNHUB_API_KEY

scripts/earnings.py:104

key = os.environ.get("FINNHUB_API_KEY", "")
Remediation: Minimize access to environment variables. Document why needed
MEDIUM HTTP client library imports that enable external communication Data Exfiltrationstatic

Pattern detected: import urllib.request

scripts/summarize.py:19

import urllib.request
Remediation: Ensure network access is necessary and documented. Review all URLs
MEDIUM HTTP client library imports that enable external communication Data Exfiltrationstatic

Pattern detected: import urllib.request

scripts/fetch_news.py:18

import urllib.request
Remediation: Ensure network access is necessary and documented. Review all URLs
MEDIUM Undeclared network usage Unauthorized Tool Usestatic

Skill code uses network libraries but doesn't declare network requirement

Remediation: Declare network usage in compatibility field or remove network calls
MEDIUM API Keys Required from Environment Without Validation Data Exfiltrationllm

The skill requires multiple API keys (FMP_API_KEY, FINNHUB_API_KEY, GEMINI_API_KEY) loaded from environment variables or .env files, but there is no validation that these keys are properly secured. Users may inadvertently expose keys through shell history, process listings, or insecure .env file permissions.

scripts/earnings.py

def get_fmp_key() -> str:
    key = os.environ.get("FMP_API_KEY", "")
    if not key:
        env_file = Path.home() / ".config" / "finance-news" / ".env"
        if env_file.exists():
            for line in env_file.read_text().splitlines():
                if line.startswith("FMP_API_KEY="):
                    key = line.split("=", 1)[1].strip()
Remediation: Add documentation warning users to: (1) Set restrictive permissions on .env files (chmod 600), (2) Never commit .env files to version control, (3) Use secure secret management for production deployments. Consider adding a setup validation step that checks .env file permissions.
MEDIUM Network Data Exfiltration to External APIs Without User Consent Data Exfiltrationllm

The skill automatically sends portfolio data, stock symbols, and market queries to multiple external APIs (FMP, Finnhub, Yahoo Finance, yfinance) without explicit user consent or disclosure in the manifest. This could expose sensitive investment information, especially when combined with user-specific portfolio holdings.

# fetch_news.py sends portfolio symbols to Yahoo Finance
quote = yf.Ticker(symbol)
data = quote.history(period='1d')

# earnings.py sends symbols to Finnhub API
url = f"https://finnhub.io/api/v1/calendar/earnings?from={from_date}&to={to_date}&token={api_key}"
Remediation: Add explicit disclosure in SKILL.md description that the skill sends portfolio data to external APIs (FMP, Finnhub, Yahoo Finance). Consider adding a first-run consent prompt. Document which data is sent to which services and provide opt-out mechanisms for privacy-conscious users.
LOW Skill does not specify a license Policy Violationstatic

Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.

SKILL.md

Remediation: Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)
LOW Missing allowed-tools Declaration Social Engineeringllm

The SKILL.md manifest does not declare the 'allowed-tools' field, making it unclear which agent tools (Read, Write, Bash, Python) are authorized for use. While this field is optional per the spec, its absence reduces transparency about the skill's intended tool usage.

SKILL.md

YAML Manifest Details:
- name: finance-news
- description: Market news briefings...
- license: Not specified
- compatibility: Not specified
- allowed-tools: Not specified
Remediation: Add 'allowed-tools: [Read, Write, Bash, Python]' to YAML frontmatter to explicitly declare tool requirements. This improves transparency and helps users understand the skill's capabilities before installation.

What is in the package

66 files, 2.2 MB. Show the list.
FileKindSize
README.mddoc4.5 KB
SKILL.mddoc7.3 KB
pyproject.tomlconfig1.1 KB
pytest.iniconfig225 B
requirements-test.txtdoc72 B
requirements.txtdoc28 B
config/config.jsonconfig7.7 KB
config/manual_earnings.jsonconfig5.8 KB
cron/alerts.shscript677 B
cron/earnings-weekly.shscript676 B
cron/earnings.shscript656 B
cron/evening.shscript679 B
cron/morning.shscript678 B
docs/EQUITY_SHEET_FIXES.mddoc4.8 KB
docs/PREMIUM_SOURCES.mddoc6.2 KB
htmlcov/class_index.htmldata14 KB
htmlcov/coverage_html_cb_dd2e7eb5.jsscript25 KB
htmlcov/function_index.htmldata97 KB
htmlcov/index.htmldata9.0 KB
htmlcov/status.jsonconfig4.1 KB
htmlcov/style_cb_9ff733b0.cssdata16 KB
htmlcov/z_de1a740d5dc98ffd_alerts_py.htmldata145 KB
htmlcov/z_de1a740d5dc98ffd_briefing_py.htmldata52 KB
htmlcov/z_de1a740d5dc98ffd_earnings_py.htmldata177 KB
htmlcov/z_de1a740d5dc98ffd_fetch_news_py.htmldata326 KB
htmlcov/z_de1a740d5dc98ffd_portfolio_py.htmldata94 KB
htmlcov/z_de1a740d5dc98ffd_ranking_py.htmldata96 KB
htmlcov/z_de1a740d5dc98ffd_research_py.htmldata78 KB
htmlcov/z_de1a740d5dc98ffd_setup_py.htmldata89 KB
htmlcov/z_de1a740d5dc98ffd_stocks_py.htmldata103 KB
htmlcov/z_de1a740d5dc98ffd_summarize_py.htmldata513 KB
htmlcov/z_de1a740d5dc98ffd_translate_portfolio_py.htmldata49 KB
htmlcov/z_de1a740d5dc98ffd_utils_py.htmldata17 KB
scripts/alerts.pyscript16 KB
scripts/briefing.pyscript5.5 KB
scripts/earnings.pyscript20 KB
scripts/fetch_news.pyscript38 KB
scripts/portfolio.pyscript9.8 KB
scripts/ranking.pyscript11 KB
scripts/research.pyscript8.4 KB
scripts/setup.pyscript9.9 KB
scripts/stocks.pyscript11 KB
scripts/summarize.pyscript62 KB
scripts/translate_portfolio.pyscript5.3 KB
scripts/utils.pyscript1.4 KB
scripts/venv-setup.shscript3.4 KB
tests/README.mddoc712 B
tests/test_alerts.pyscript4.0 KB
tests/test_alerts_extended.pyscript13 KB
tests/test_briefing.pyscript3.0 KB
tests/test_earnings.pyscript3.7 KB
tests/test_fetch_news.pyscript4.1 KB
tests/test_portfolio.pyscript2.6 KB
tests/test_ranking.pyscript2.8 KB
tests/test_research.pyscript13 KB
tests/test_setup.pyscript2.5 KB
tests/test_stocks.pyscript9.4 KB
tests/test_summarize.pyscript11 KB
workflows/README.mddoc3.4 KB
workflows/alerts-cron.yamlconfig1.6 KB
workflows/briefing-cron.yamlconfig3.4 KB
workflows/briefing.yamlconfig3.7 KB
workflows/earnings-cron.yamlconfig1.5 KB
workflows/earnings-weekly-cron.yamlconfig1.5 KB
tests/fixtures/sample_portfolio.csvdata127 B
tests/fixtures/sample_rss.xmlconfig730 B

External hosts referenced

coverage.readthedocs.io github.com search.cnbc.com feeds.content.dowjones.io feeds.finance.yahoo.com finnhub.io is.gd www.apache.org addons.mozilla.org chrome.google.com console.developers.google.com coverage.rtfd.io docs.google.com feeds.bloomberg.com feeds.cms.handelsblatt.com finance.yahoo.com news.google.com newsfeed.zeit.de raw.githubusercontent.com sheets.googleapis.com www.barrons.com www.cnbc.com www.finanzen.net www.ft.com www.tagesschau.de

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.

Environment variables referenced

SKILL_DIR FINANCE_NEWS_CHANNEL VENV_DIR LIBSTDCXX_PATH GCC_LIB_DIR BASE_DIR LD_LIBRARY_PATH FINANCE_NEWS_LD_LIBRARY_PATH FINANCE_NEWS_SUMMARY_MODEL FINNHUB_API_KEY FMP_API_KEY TOKEN

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

What we did not check

Sources