Back to skill

Security audit

Apiframe

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a connector, but it under-labels generation actions that can change remote state and includes unsafe first-time install commands.

Review this skill before installing. Use it only when you understand that generation actions can submit Apiframe jobs and may consume account credits. Do not run the documented curl|bash or irm|iex installer commands unless you independently trust and verify the OOMOL CLI installer, and prefer a safer manual or package-manager install path.

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:60
Finding
Unverified Remote Installation Scripts Executed Directly by Shells<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 60–64 **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: High ### Vulnerable Code ```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 retrieve mutable scripts from external URLs and immediately execute their contents through Bash or PowerShell. Neither command pins an immutable release nor verifies a cryptographic signature or checksum before execution. Although the URLs use HTTPS and appear to belong to the documented CLI vendor, HTTPS alone does not establish that the downloaded script is safe or unchanged. Compromise of the hosting infrastructure, publishing process, vendor account, or remote script could cause these instructions to execute attacker-controlled code after the skill has already been reviewed. This behavior exceeds the minimum privileges required for the skill's declared connector functionality. The document initially assumes that the `oo` CLI is already installed, while remote script execution is only introduced as a fallback when the command is missing. Calling Apiframe does not inherently require executing an unverified installation script. ### Attack Path 1. A user or agent attempts to use the skill on a system where the `oo` command is unavailable. 2. The documented fallback directs the user or agent to retrieve `install.sh` or `install.ps1`. 3. An attacker compromises or modifies the remotely hosted installation script or its publication infrastructure. 4. `curl | bash` or `irm | iex` passes the response directly to the relevant command interpreter without prior inspection or integrity verification. 5. The attacker-controlled script executes with the privileges of the invoking process. 6. The script can access data available to that account, alter files, insta ...[truncated 889 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the direct `curl | bash` and `irm | iex` installation patterns. 2. Prefer a trusted operating-system package manager or a signed, versioned release from the official repository. 3. Pin installation instructions to a specific immutable CLI version rather than a mutable generic installer URL. 4. Download the installer or release artifact to disk without executing it automatically. 5. Publish an expected SHA-256 or stronger checksum over a separately secured channel and verify it before execution. 6. Where supported, verify a cryptographic release signature and document how users can validate the signing identity. 7. Require explicit user approval before installing software or running any downloaded script. 8. If a script remains necessary, instruct users to inspect it before execution and run it with the least-privileged account needed. 9. Keep installation outside the normal skill execution path. On a missing dependency, report the condition and provide a verified installation link rather than allowing an agent to install software autonomously. 10. Apply equivalent protections to both the macOS/Linux and Windows installation paths. ]]>
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 (3)

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
95% confidence
Finding
The skill instructs the agent to install software via a piped remote script (`curl ... | bash`), which executes unverified code directly from the network. If the remote host, transport, or script content is compromised, this leads to arbitrary code execution on the user's machine; the danger is heightened because the skill is allowed to use Bash and presents the install step as a fallback workflow.

Description-Behavior Mismatch

Medium
Confidence
98% confidence
Finding
The manifest and description frame the skill as suitable for 'searching and reading data,' but the actual exposed actions include generation job submission operations that change remote state and may incur cost. This mismatch can mislead an agent or user into invoking write-like operations under a read-oriented trust model, increasing the chance of unintended actions.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The trigger language says to use this skill for 'ANY Apiframe request,' which is overly broad and can cause the skill to be selected for a wide range of tasks without adequate consideration of whether those tasks are read-only or state-changing. In this context, broad auto-selection is risky because the skill includes job-submission actions that can create content, spend credits, or trigger external processing.

Static analysis

No suspicious patterns detected.