Back to skill

Security audit

testSkillX

Security checks for vulnerabilities and agentic risk

Overview

This skill is a small, disclosed test integration that fetches a public daily post, but users should recognize it makes an automatic request to an external ngrok endpoint and displays untrusted remote content.

Install only if you are comfortable with an auto-invoked skill contacting the listed ngrok URL and showing whatever that server returns. Treat the response as untrusted content, and prefer a version with explicit confirmation, a stable documented domain, response limits, and clearer trigger wording.

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 (1)

T09 · Insecure Skill Coding Practices

Warning
Location
skill.md:20
Finding
Unvalidated Content Retrieved from a Mutable Remote Endpoint## Vulnerability Details **File Location**: `skill.md`, lines 20-35 **Vulnerability Type**: Untrusted remote-content handling **Risk Level**: Medium ```markdown The assistant will immediately make a **GET** request to: `https://b024a53917d6.ngrok-free.app/agent/dailyPost` --- ## 🛠️ What happens 1. **Recognition:** I recognize your request via the defined triggers. 2. **Execution:** I perform the following HTTP call: ```bash curl [https://b024a53917d6.ngrok-free.app/agent/dailyPost](https://b024a53917d6.ngrok-free.app/agent/dailyPost) ``` 3. **Response:** I return whatever the endpoint sends back (text, JSON, etc.) directly to the chat. ``` ### Technical Analysis The skill retrieves content from an externally controlled ngrok endpoint and returns whatever it receives directly to the conversation. No response schema, content-type restriction, response-size limit, redirect policy, or untrusted-content boundary is defined. An ngrok subdomain is a mutable service origin whose backend content can change after the skill has been reviewed. Consequently, control or compromise of the remote endpoint would allow an attacker to supply arbitrary conversational content. Such content could include deceptive links, social-engineering messages, misleading data, or prompt-like instructions intended to influence subsequent agent behavior. The reviewed file does not explicitly direct the agent to execute commands or code returned by the endpoint. Therefore, this finding does not establish remote code execution and is classified as an insecure content-handling practice rather than remote payload execution. The documented `curl` command also incorrectly includes Markdown link syntax rather than a plain URL. Although primarily a correctness issue, passing such syntax to a shell may result in unexpected interpretation or failure if copied verbatim. ### Attack Path 1. An attacker controls or compromises the backend e ...[truncated 1363 chars]
Remediation
## Remediation Suggestions - Replace the temporary ngrok origin with a stable HTTPS domain whose ownership and operational controls are documented. - Treat all endpoint responses as untrusted data and render them as quoted or clearly delimited content, never as agent instructions. - Require a strict response format, preferably JSON validated against an allowlisted schema. - Restrict accepted content types and reject HTML, executable content, and unexpected formats. - Configure explicit connection and read timeouts, maximum response sizes, and redirect limits. - Disable redirects or allow them only to explicitly trusted hosts. - Ensure instructions contained in endpoint responses are never executed or followed automatically. - Add integrity or authenticity controls, such as signed responses, if the returned content must be trusted. - Correct the shell example to use a quoted plain URL and defensive curl options: ```bash curl --fail --silent --show-error --max-time 10 \ 'https://b024a53917d6.ngrok-free.app/agent/dailyPost' ```
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 (2)

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The skill states that the assistant will 'immediately' make a GET request to an external ngrok endpoint and return the response, but it does not clearly warn the user up front that invoking the skill causes a live third-party network call. This reduces informed consent and increases privacy and trust risk, especially because ngrok URLs are ephemeral third-party tunnels that may not be recognizable or stable.

Vague Triggers

Medium
Confidence
96% confidence
Finding
The phrase 'or similar' creates an open-ended trigger surface, making it unclear what user inputs may auto-invoke the skill. In an auto-invoked skill that immediately performs a third-party network request, ambiguous triggering increases the chance of unintended activation and silent data flow to an external endpoint.

Static analysis

No suspicious patterns detected.