Back to skill

Security audit

Leonardo.Ai

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly coherent for using Leonardo.Ai through OOMOL, but its first-time setup tells the agent to execute remote installer scripts directly in a shell.

Review before installing. The Leonardo.Ai connector behavior is clear and includes confirmation guidance for write actions, but avoid letting an agent run the documented remote installer commands automatically; prefer a verified, versioned oo CLI installation path with integrity checks and understand what the installer changes on your machine.

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 Shells## Vulnerability Details **File Location**: `SKILL.md`, lines 57–61 **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical The first-time setup instructions execute remotely hosted installer scripts directly in Bash and PowerShell: ```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 Both installation commands retrieve mutable code from an external server and immediately pass it to a command interpreter. The referenced payload is not pinned to a version, saved for inspection, checked against an expected cryptographic digest, or verified using a trusted publisher signature. TLS protects the network connection in transit but does not establish that the script remains identical to the version reviewed with this Skill. Compromise of the hosting server, publishing account, DNS infrastructure, certificate issuance process, or upstream deployment pipeline could cause different code to be delivered and executed. This behavior is not required for the Skill's core Leonardo.Ai connector operations. Installation may be necessary when the CLI is absent, but immediate execution of unverified remote content exceeds the minimum privilege and trust necessary to provide installation guidance. ### Attack Path 1. An attacker compromises the OOMOL installer host, publishing pipeline, deployment credentials, or another component capable of changing the installer response. 2. The attacker replaces `install.sh` or `install.ps1` with a malicious payload. 3. A user encounters the documented `oo: command not found` condition and follows the first-time setup instructions. 4. `curl` or `irm` retrieves the attacker-controlled content. 5. The shell immediately executes that content without an integrity or authenticity check. 6. The payload performs arbitrary actions u ...[truncated 766 chars]
Remediation
## Remediation Suggestions - Remove the direct `curl | bash` and `irm | iex` installation patterns. - Prefer a trusted platform package manager and pin the CLI to a reviewed version. - If direct downloads are necessary, publish immutable, versioned artifacts rather than mutable installer endpoints. - Download the artifact to a local file before execution so it can be inspected separately. - Publish a cryptographic checksum through an independently protected channel and verify it before execution. - Prefer a verifiable publisher signature backed by a documented trust root; fail closed when verification fails. - Execute installation with ordinary user privileges unless a specific operation demonstrably requires elevation. - Document the files, directories, network endpoints, and configuration changes performed by the installer. - Retain the existing instruction to install only after an actual command-not-found failure, but direct users to a reviewed installation guide rather than executing remote content immediately.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (2)

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
97% confidence
Finding
The skill instructs the agent to install software by piping a remotely fetched script directly into bash. This is dangerous because any compromise of the host, CDN, DNS, TLS termination, or upstream release pipeline could result in arbitrary code execution on the user's machine with the privileges of the current shell.

Vague Triggers

Medium
Confidence
97% confidence
Finding
The manifest description says to use this skill for "ANY Leonardo.Ai request" and "Whenever a task involves Leonardo.Ai," which is a very broad activation condition. It does not define scope boundaries or exclusions, so ordinary mentions of Leonardo.Ai could trigger the skill unnecessarily.

Static analysis

No suspicious patterns detected.