Back to skill

Security audit

incident.io

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a coherent read-only incident.io connector, but its first-time setup tells users to run unverified remote installer scripts directly in a shell.

Install only if you are comfortable with OOMOL mediating access to your incident.io account, and avoid running the one-line remote installer commands as written. Prefer a verified or pinned oo CLI install path, connect a least-privilege incident.io credential, and keep use to the listed read-only actions unless a future version clearly discloses and gates writes.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:57
Finding
Unverified Remote Installer Scripts Executed Directly by Shell Interpreters<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:57-66` **Vulnerability Type**: Remote payload retrieval and immediate execution **Risk Level**: High ### Vulnerable Code ```markdown - **`oo: command not found`** — install the oo CLI (other platforms: <https://cli.oomol.com/install-guide.md>): ```bash curl -fsSL https://cli.oomol.com/install.sh | bash # macOS / Linux ``` ```powershell irm https://cli.oomol.com/install.ps1 | iex # Windows PowerShell ``` ``` ### Technical Analysis The installation instructions download mutable scripts from external URLs and pipe their contents directly into Bash or PowerShell. The downloaded payload is not pinned to a specific release and is not verified with a cryptographic checksum or signature before execution. HTTPS provides transport protection but does not establish that the current script is identical to the version intended during the skill audit. If the hosting service, publishing account, DNS resolution, TLS trust chain, or release infrastructure is compromised, the content delivered by these URLs could be replaced after review. The `curl | bash` and `Invoke-RestMethod | Invoke-Expression` patterns provide the remote endpoint with a direct code-execution channel. They also prevent meaningful review of the complete script before it begins executing. Installing the declared CLI may be necessary for first-time use, but immediate execution of an unpinned remote installer exceeds the minimum privilege and trust required to provide installation guidance. ### Attack Path 1. The `oo` command is unavailable, causing the user or agent to follow the first-time setup instructions. 2. An attacker compromises the installer hosting or publication path, or otherwise causes a malicious script to be returned by one of the documented URLs. 3. `curl` or `Invoke-RestMethod` retrieves the attacker-controlled content. 4. The shell pipeline passes that content immediately to Bash or `Invoke-Exp ...[truncated 911 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove instructions that pipe downloaded content directly into a command interpreter. 2. Direct users to a pinned, versioned release artifact from the official distribution channel. 3. Download the artifact as a separate step so it can be inspected before execution. 4. Publish and verify a SHA-256 or stronger checksum over a trusted, independently protected channel. 5. Prefer cryptographic signature verification with a documented, pinned signing key. 6. Abort installation if checksum or signature validation fails. 7. Avoid requiring administrator or root privileges unless a specific installation operation needs them. 8. Prefer a trusted platform package manager where package provenance and signature verification are enforced. 9. If a script remains necessary, use a workflow similar to: ```bash curl -fL -o install.sh "https://trusted.example/releases/v1.0.2/install.sh" printf '%s %s\n' '<published-sha256>' 'install.sh' | sha256sum --check - less install.sh bash install.sh ``` 10. Provide an equivalent download, signature-validation, inspection, and execution sequence for PowerShell instead of using `Invoke-Expression`. ]]>
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (4)

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The manifest frames the skill as only for searching and reading incident.io data, but the body explicitly describes support for arbitrary actions, including potential [write] and [destructive] operations. This mismatch can cause an orchestrator or user to trust the skill as read-only while it is actually capable of state-changing behavior, increasing the risk of unauthorized modifications.

External Script Fetching

High
Category
Supply Chain
Content
- **`oo: command not found`** — install the oo CLI (other platforms: <https://cli.oomol.com/install-guide.md>):

  ```bash
  curl -fsSL https://cli.oomol.com/install.sh | bash    # macOS / Linux
  ```

  ```powershell
Confidence
98% confidence
Finding
The skill includes a one-line remote script execution pattern using curl piped to bash. If followed, this executes code fetched at runtime without verification, exposing users to supply-chain compromise, MITM risks in weaker environments, or malicious upstream changes.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger language is overly broad: 'ANY incident.io request' and 'Whenever a task involves incident.io' encourages automatic invocation in situations where the skill may be unnecessary or inappropriate. Because the skill can reach connected account data and potentially broader connector functionality, over-triggering increases the chance of unintended access or actions.

Intent-Code Divergence

Medium
Confidence
90% confidence
Finding
The skill says untagged actions are reads, but the execution instructions accept any <action_name> and tell the agent to discover schema dynamically, which effectively enables arbitrary connector actions outside the documented list. In context, this weakens the safety model because an agent could invoke newly added or undocumented write/destructive actions without a clear policy boundary.

Static analysis

No suspicious patterns detected.