Back to skill

Security audit

0605-tosr2-csig-04

Security checks across malware telemetry and agentic risk

Overview

This looks like a legitimate market-analysis skill, but its optional Twitter/X features ask for sensitive session cookies and pass broad environment data to an external CLI.

Review carefully before installing. Use --no-social or skip Twitter/X setup unless you need it, avoid granting Full Disk Access if possible, keep any .env file private and out of source control, and consider using a separate low-risk X account because copied session cookies can act like login credentials.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (20)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
for category, query in searches:
                try:
                    env = os.environ.copy()
                    result = subprocess.run(
                        [bird_bin, "search", query, "-n", "15", "--json"],
                        capture_output=True, text=True, timeout=30, env=env
                    )
Confidence
92% confidence
Finding
result = subprocess.run( [bird_bin, "search", query, "-n", "15", "--json"], capture_output=True, text=True, timeout=30, env=env

Lp3

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding
The skill advertises executable behaviors including shell execution, network access, local file reads/writes, and possible environment access, but does not declare corresponding permissions. This creates a transparency and consent problem: users or host systems may underestimate what the skill can do, increasing the risk of unintended data access, persistence, or external communication.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The description centers on Yahoo Finance stock analysis, but the documented behavior extends to multiple third-party sources and tools including CoinGecko, Google News, Reddit, Twitter/X CLI tooling, CNN sentiment data, and SEC EDGAR. This mismatch is security-relevant because it obscures the skill's true data flows, expands the attack surface, and may cause users to expose credentials or trust outputs generated from unanticipated external sources.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The documentation instructs users to obtain live Twitter/X session credentials via browser cookies and, on macOS, grant Terminal Full Disk Access to retrieve them. This exposes highly sensitive authentication material and expands the tool's access beyond stock analysis into credential handling, creating account-compromise and privacy risks if the tokens are mishandled, logged, or reused.

Intent-Code Divergence

High
Confidence
97% confidence
Finding
The put/call ratio path references data.ticker_obj, but StockData never defines that attribute, so this analysis silently fails and is treated as unavailable. In a financial-analysis skill, silently omitting a documented risk/sentiment signal can mislead downstream users or agents into overtrusting results, especially because failures are swallowed and the output still appears complete.

Context-Inappropriate Capability

Medium
Confidence
84% confidence
Finding
This feature executes an external Twitter/X scraping CLI even though the skill is primarily presented as market analysis. That mismatch matters because hidden execution of third-party tooling increases attack surface, may trigger credential use, and can perform actions beyond simple data retrieval depending on the installed `bird` binary. The context makes it more dangerous because users would reasonably expect web/API fetches, not local tool execution.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The plan explicitly includes Mixpanel/Amplitude and Sentry, which typically collect behavioral telemetry, device metadata, and error context, but the document does not pair that with any user-facing disclosure, consent flow, or opt-out mechanism. In a retail investing app handling portfolio and financial-interest data, undisclosed analytics increases privacy and compliance risk, especially under GDPR/CCPA-style regimes.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The README explicitly instructs users to extract live Twitter/X session cookies from browser DevTools and store them in a local .env file. Session cookies such as AUTH_TOKEN and CT0 are highly sensitive credentials; if copied, logged, committed, or exposed on a multi-user system, they can enable account hijacking or unauthorized access to the user's X account.

Missing User Warnings

Low
Confidence
77% confidence
Finding
The documentation states that portfolio and watchlist data are stored persistently under the user's home directory, but does not clearly warn users before they provide potentially sensitive financial holdings data. While local persistence is expected for these features, undisclosed storage can expose private investment information to other local users, backups, or later compromise of the host.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill instructs users to place Twitter/X authentication tokens in a .env file without guidance on secret handling, storage permissions, or scoping. That increases the risk of credential leakage through accidental commits, insecure file permissions, or reuse in shared environments, which could lead to account compromise or abuse of the integrated social account.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The document introduces a clear BUY/HOLD/SELL recommendation capability early in the concept section without an immediate, prominent warning that the output is not financial advice and may be incomplete, delayed, or wrong. In an investment-analysis skill, this can cause users to over-trust the tool’s recommendations as actionable guidance, increasing the risk of financial harm from unsuitable or mistimed decisions.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The instructions tell users to grant Terminal Full Disk Access and manually extract authentication cookies without prominently explaining that these are equivalent to account session secrets. This can lead users to weaken host privacy protections and expose reusable credentials, making takeover of the user's X account or broader local data exposure more likely.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The usage guide documents `portfolio.py create`, `add`, and `show` flows without clearly warning that these commands create and modify persistent local portfolio records. A user may run example commands assuming they are read-only analysis operations, causing unintended storage or modification of sensitive financial holdings data on disk.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The watchlist examples show `add`, `remove`, and alert-management commands without disclosing that they persist watchlist entries and notification settings. Users could unintentionally create, alter, or delete stored monitoring data, which is especially sensitive in a financial-analysis context because it reflects investment interests and trading intent.

Missing User Warnings

Medium
Confidence
84% confidence
Finding
The script makes multiple outbound requests to Yahoo Finance, Google News RSS, and SEC EDGAR without clear up-front disclosure in the usage text. In an agent skill context, this matters because user-supplied tickers, portfolio contents, and usage patterns may be transmitted to third parties unexpectedly, creating privacy and compliance risk even without code execution or classic injection.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The script automatically loads every key from a project `.env` file into the process environment without limiting scope or warning the user. Because the same environment is later inherited by an external subprocess, unrelated secrets present in `.env` can be exposed to third-party tooling or used unexpectedly. In this skill context, reading broad credentials is not necessary for basic stock/news scraping, which increases concern.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The code spawns the external `bird` CLI with a fully inherited environment copied from the current process. If `.env` or the host environment contains API tokens, session cookies, or other credentials, the child process can read them, log them, or transmit them elsewhere. This is especially dangerous because the subprocess is optional social-media functionality, not core financial analysis.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The script loads all key/value pairs from a local .env file into process environment variables and then forwards that environment into a third-party CLI. This can expose secrets unrelated to Twitter access to the external tool or any child processes it spawns, increasing credential leakage risk without user awareness.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The script silently performs outbound requests to Google News and, via Bird, to Twitter/X searches, transmitting queries and metadata to external services. In an agent skill context, undisclosed network activity is security-relevant because users may not expect external data transfer or service-side logging.

Ssd 3

Medium
Confidence
96% confidence
Finding
The documentation explicitly instructs users to copy session cookies (`auth_token`, `ct0`) from the browser and store them for the tool's use. These values are effectively bearer credentials for an authenticated session, so exposing or persisting them insecurely can enable unauthorized access to the user's Twitter/X account.

VirusTotal

65/65 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.