Back to skill

Security audit

Phishing Reporter

Security checks for vulnerabilities and agentic risk

Overview

This skill has a legitimate anti-phishing purpose, but it can automatically submit consequential reports and user details to outside services without enough validation or final confirmation.

Install only if you are comfortable with the agent sending reported URLs, descriptions, and possibly contact details to outside abuse-reporting organizations. Before any submission, review the exact URL, hostname, category, destination service, and text being sent; avoid including private details unless necessary. For registrar lookup, prefer a web WHOIS/RDAP lookup or a safely parsed hostname rather than passing raw user input to a shell command.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:59
Finding
Potential Command Injection Through Unvalidated WHOIS Input<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 59-64 **Vulnerability Type**: OS command injection through untrusted domain input **Risk Level**: High ### Vulnerable Code Snippet ```markdown ## Service 3: Domain Registrar (manual lookup) 1. Run WHOIS lookup: `whois <domain>` or use `https://who.is/<domain>` 2. Find "Registrar Abuse Contact Email" 3. Send abuse email with phishing URL and description ``` ### Technical Analysis The Skill directs the Agent to substitute a domain derived from a user-provided URL into the shell command `whois <domain>`. It does not require the Agent to parse the URL with a structured URL parser, validate the resulting hostname, reject shell metacharacters, or execute WHOIS without a shell. If the Agent implements this instruction using shell-string interpolation, a crafted domain value containing command separators, substitutions, redirections, or whitespace may be interpreted as shell syntax rather than as a single WHOIS argument. The vulnerability therefore occurs at the boundary between attacker-controlled URL input and command execution. The issue is conditional on the Agent invoking the command through a shell. Using an argument-array process API without a shell would substantially reduce the risk, but the Skill does not impose that requirement. ### Attack Path 1. An attacker asks the Agent to report an allegedly malicious URL. 2. The supplied value contains shell syntax, such as a command separator or command substitution, while being presented as the domain to inspect. 3. The Agent follows the Skill and constructs a command equivalent to `whois <attacker-controlled-domain>`. 4. The Agent passes the interpolated string to a shell. 5. The shell interprets the injected syntax and executes the attacker's additional command. 6. The injected command runs with the operating-system permissions and environment access available to the Agent process. ### Impact Assessment Successful exploitation could e ...[truncated 524 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Parse the submitted value with a well-tested URL parser rather than extracting the domain through string manipulation. 2. Restrict accepted schemes to `http` and `https`. 3. Obtain only the parser's normalized hostname field and reject user-info, malformed ports, control characters, whitespace, and ambiguous host representations. 4. Validate hostnames against a strict DNS-name or IP-literal grammar. Reject shell metacharacters and any value that cannot be represented as exactly one process argument. 5. Invoke WHOIS through a process API that accepts an argument array, for example an executable plus `["--", hostname]`, with shell execution explicitly disabled. 6. Prefer a constrained RDAP or WHOIS library/API that does not invoke a local shell. 7. Apply process timeouts, output-size limits, and network restrictions. 8. Add adversarial tests covering semicolons, pipes, substitutions, redirections, newlines, option-like hostnames, Unicode ambiguity, and malformed URLs. ]]>

other

Warning
Location
SKILL.md:11
Finding
External Abuse Reports Can Be Submitted Without Target Validation or Final Confirmation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 11-17, 24-34, and 44-54 **Vulnerability Type**: Unverified consequential external action **Risk Level**: Medium ### Vulnerable Code Snippets ```markdown ## Reporting Strategy Report to **all applicable services** in order: 1. **Google Safe Browsing** (automated) — global reach, blocks in Chrome/Firefox/Safari 2. **NCSC Switzerland** (semi-automated) — Swiss national cyber security centre 3. **Domain registrar** (manual) — WHOIS lookup → abuse contact ``` ```markdown ### Workflow Use the browser tool (profile: `openclaw`) to automate: 1. Open the URL above 2. Report Type: "This page is not safe" (default, leave as-is) 3. Click "Threat Type" dropdown → select "Social Engineering" (for phishing) 4. Click "Threat Category" dropdown → select best match (see references/services.md) 5. Click URL textbox → type the phishing URL 6. Click Additional details textbox → type description 7. Click Submit 8. Verify "Submission was successful" message ``` ```markdown ### Chat Path for Phishing Website Reports 1. Open `https://www.report.ncsc.admin.ch/en/chat?path=406%3E407%3E1` 2. Click: **"A website/a web service/a web platform"** 3. Click: **"I would like to report a third-party website"** 4. Click: **"The website displays fraudulent content"** 5. Click: **"The website copies another known website"** (for phishing clones) 6. Continue through remaining steps (URL input, description, contact info) 7. Submit the report ``` ### Technical Analysis The Skill instructs the Agent to report a user-supplied target to multiple external abuse services and explicitly includes submission steps. It does not require independent evidence that the target is malicious, verification that the URL and alleged impersonated brand are correct, or explicit user confirmation immediately before each consequential submission. A user's assertion that a URL is malicious is therefore sufficient to initiate reports that may af ...[truncated 1524 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Validate URL syntax and restrict reporting to explicit `http` or `https` targets. 2. Display the normalized hostname, full target URL, selected report category, description, and destination service before submission. 3. Require explicit final user confirmation immediately before every external submission; do not infer confirmation from the original request alone. 4. Require concrete evidence supporting the selected category, such as observed impersonation, credential collection, malicious downloads, or documented redirects. 5. Do not automatically state that a site copies a known website unless that claim has been verified. 6. When evidence is insufficient, provide draft report text and manual reporting links rather than submitting automatically. 7. Add safeguards against bulk reporting, repeated reporting, and reporting of private, local, loopback, or malformed destinations. 8. Minimize personal information included in reports and obtain consent before submitting contact details. 9. Record the confirmed target, destination, report category, and user authorization for auditability without retaining unnecessary sensitive data. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Vague Triggers

Medium
Confidence
94% confidence
Finding
The trigger phrases are broad enough to activate on common user language around URLs, scams, or reporting, which can cause the skill to run in contexts the user did not clearly intend. Because this skill performs external reporting actions, accidental invocation could lead to unintended disclosure of user-supplied URLs or submission to third-party services without sufficiently explicit consent.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill instructs the agent to send user-provided URLs and descriptions to external abuse-reporting services, but it does not require a clear warning that this information will leave the local conversation context. Users may include sensitive details in the URL or description, and submitting them to third parties without explicit disclosure creates privacy and consent risks.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The NCSC workflow includes entering contact information into a third-party reporting wizard without an explicit privacy notice or consent requirement. This raises the risk of exposing the user's personal data or the agent's configured identity to an external government-operated service, especially if automation auto-fills or fabricates contact details.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill explicitly instructs reporting suspicious URLs and related details to multiple third-party services, but it does not warn that submitted data will leave the current system and be shared with external organizations. In this context, users may provide not only the phishing URL but also descriptive details, screenshots, or related identifiers, creating a privacy and consent risk if the agent forwards that information automatically.

Natural-Language Policy Violations

Low
Confidence
75% confidence
Finding
The file points to `?hl=en` and `/en/` service URLs, which imposes English-language interfaces in the instructions. Because the document does not offer a language choice or explain why English is required, this can be a natural-language locale policy issue.

Static analysis

No suspicious patterns detected.