Back to skill

Security audit

Stock Alert (WhatsApp)

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly does what it says, but it needs review because its documentation adds an undeclared Feishu/Lark document-writing path and its WhatsApp recipient limits are not actually enforced by the code.

Install only if you are comfortable with a local WhatsApp CLI sending messages from your logged-in account. Treat the Feishu/Lark documentation as unresolved scope drift unless the publisher removes it or formally documents and permission-scopes that feature. Also verify the intended WhatsApp recipient yourself, because the bundled allowlist is not enforced by this script.

Vulnerability Patterns
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (6)

Lp3

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding
The skill declares installation and runtime behavior that uses shell execution, environment variables, and external CLIs, but it does not declare corresponding permissions. This creates a transparency and policy-enforcement gap: a user or platform may approve the skill without understanding that it can invoke package installers and send messages via a local CLI on the user's behalf.

Description-Behavior Mismatch

Medium
Confidence
74% confidence
Finding
The documentation claims optional Feishu/Lark report syncing even though the rest of the skill is scoped to WhatsApp alerts and no supporting Feishu functionality is evidenced here. Extra undocumented integration claims can mask future capability expansion, confuse reviewers, and lead operators to approve permissions or trust boundaries that are broader than the actual stated purpose.

Intent-Code Divergence

Medium
Confidence
80% confidence
Finding
Conflicting documentation about Feishu/Lark permissions in a skill otherwise presented as WhatsApp-only is a security-relevant integrity issue. Mismatched docs can be used to justify unrelated permissions, hide unauthorized data egress paths, or prevent accurate review of what destinations the skill may send data to.

Description-Behavior Mismatch

Medium
Confidence
91% confidence
Finding
The permissions document explicitly states that this skill can publish or archive alert reports to Feishu/Lark documents, which expands the skill's effective data handling and output channels beyond the declared WhatsApp-only behavior. This kind of scope drift is dangerous because operators may grant document write permissions to a bot that users and reviewers believe only sends WhatsApp alerts, creating an undocumented exfiltration or persistence path for watchlist data.

Intent-Code Divergence

Medium
Confidence
94% confidence
Finding
The file frames Feishu/Lark document writing as a supported capability of the stock-alert skill, contradicting the stated delivery scope of WhatsApp notifications only. A mismatch between declared scope and documented capabilities undermines least-privilege review and can lead to overbroad bot permissions or unnoticed secondary storage of potentially sensitive alert content in another platform.

Unvalidated Output Injection

High
Category
Output Handling
Content
if shutil.which("wu") is None:
        return "skipped", "wacli `wu` not installed (npm i -g @ibrahimwithi/wu-cli)"
    try:
        result = subprocess.run(
            ["wu", "send", recipient_jid, message],
            capture_output=True, text=True, check=True,
        )
Confidence
72% confidence
Finding
Untrusted data flows into an outbound CLI call and then into a messaging channel without validation: `recipient_jid` comes from CLI/env input, and `message` is built from external stock data and user-provided symbols. While this is not OS command injection because no shell is used, it is still an output-injection/integrity issue because attacker-controlled content could trigger unintended behavior in the downstream `wu` tool, misroute messages, or send deceptive content to arbitrary WhatsApp recipients.

Static analysis

No suspicious patterns detected.