Back to skill

Security audit

Stock Quote

Security checks for vulnerabilities and agentic risk

Overview

This stock-quote skill is a straightforward Yahoo Finance quote helper with ordinary network and dependency risks, but no hidden persistence, credential access, destructive behavior, or purpose mismatch.

Install only if you are comfortable with requested ticker symbols being sent to Yahoo Finance and with uv resolving the Python dependencies at runtime. For stronger safety, pin dependency versions and escape ticker and remote metadata before rendering Rich markup.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (2)

T08 · Insecure Dependencies

Warning
Location
scripts/quote.py:1
Finding

Unpinned Runtime Dependencies Enable Supply-Chain Exposure

Content
View full analysis
Remediation
View remediation
", # "httpx==", # ] # /// ``` 2. Prefer a locked project environment that records the full transitive dependency graph. 3. Verify downloaded artifacts with cryptographic hashes where the deployment workflow supports hash-locked requirements. 4. Configure package installation to use a trusted, authenticated package index. 5. Perform dependency updates through an explicit review and testing process rather than resolving new versions during normal Skill execution. 6. Run the Skill with least privilege and restrict filesystem and network access to reduce the impact of a compromised package. ]]>

T09 · Insecure Skill Coding Practices

Note
Location
scripts/quote.py:140
Finding

Unescaped Ticker and Remote Metadata Are Interpreted as Rich Markup

Content
View full analysis
= 0 else "red" arrow = "▲" if (change or 0) >= 0 else "▼" price_cell = fmt_price(current) change_cell = f"[{color}]{arrow} {fmt_price(abs(change or 0))}[/{color}]" pct_cell = f"[{color}]{(change_pct or 0)*100:+.2f}%[/{color}]" cap_cell = fmt_number(mkt_cap) if market_state == "REGULAR": statu ...[truncated 2245 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (3)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill appears to require network access to fetch Yahoo Finance data, but it does not declare any explicit tool scope or permissions. This creates a least-privilege and transparency problem: the runtime may grant broader capabilities than users or policy reviewers expect, making network-enabled behavior harder to audit and constrain.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The phrases "Is the market up today?" and "How's the market doing?" are broad, natural conversational questions that could match everyday discussion rather than a clearly scoped skill invocation. The file does not provide exclusion conditions or context boundaries to distinguish when these should activate the skill versus remain ordinary chat.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

This code sends command-line input to an external service via HTTP, which is a data-transmitting network operation covered by the warning requirement for code files. Although the script's purpose is to fetch quotes, there is no visible comment, prompt, or user-facing disclosure that entered ticker symbols will be sent to Yahoo Finance.

Content

No source excerpt is available for this finding.