Back to skill

Security audit

YNAB

Security checks for vulnerabilities and agentic risk

Overview

This YNAB skill is mostly a read-only financial-data connector, but its setup instructions include unverified remote installer commands that can execute downloaded code on the user's machine.

Before installing, review the oo CLI installation path carefully. Prefer an official package manager or a downloaded installer with published checksum/signature verification instead of running curl | bash or irm | iex directly. Use this skill only if you are comfortable routing read access to YNAB financial data through OOMOL's connector and account system.

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:67
Finding

Unverified Remote Installer Download and Immediate Execution

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 67–76
Vulnerability Type: Remote payload retrieval and execution
Risk Level: Critical

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 first-time setup instructions download mutable scripts from an external server and immediately execute them through Bash or PowerShell. Neither command pins an installer version, verifies a cryptographic signature or checksum, nor gives the user an opportunity to inspect the downloaded content before execution.

The Skill package therefore does not contain the effective installation payload that will execute. Its behavior may change after the Skill has been reviewed. A compromise of the download server, publication process, hosting account, DNS resolution, or another relevant supply-chain component could replace the legitimate installer with attacker-controlled commands.

Although installation is only recommended after an oo: command not found error, downloading and blindly executing a remote script is not the minimum privilege or safest mechanism necessary to install the CLI.

Attack Path

  1. A user invokes the Skill on a system where the oo CLI is unavailable.
  2. The command fails with oo: command not found.
  3. The Skill directs the user or agent to execute the documented first-time setup command.
  4. The command retrieves the current installer from cli.oomol.com.
  5. Bash or PowerShell executes the response without integrity or authenticity verification beyond transport security.
  6. If the remote payload or its delivery infrastructure has been compromised, attacker-controlled code executes with the permissions of the user who launched the shell.

Impact Assessment

Exploitation permits arbitrary command execution under the i ...[truncated 607 chars]

Remediation
View remediation

Remediation Suggestions

  • Remove both pipe-to-shell installation patterns, including curl | bash and Invoke-RestMethod | Invoke-Expression.
  • Direct users to a trusted, version-pinned package or official release artifact instead of a mutable installer URL.
  • Download the artifact as a separate step without executing it automatically.
  • Publish and require verification of a SHA-256 digest and, preferably, a platform-native publisher signature before installation.
  • Use a constrained platform package manager where possible, with an exact package identity and version.
  • Present the commands the installer will perform and require explicit user approval before execution.
  • Run installation with ordinary user permissions unless a specific operation demonstrably requires elevation; isolate any privileged step and explain its purpose.
  • Retain the existing behavior of attempting ordinary connector actions before suggesting setup, but make installation a user-controlled process rather than an agent-executed fallback.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (3)

External Script Fetching

High
Category
Supply Chain
Confidence
97% confidence
Finding

The skill instructs users to install software via 'curl | bash', which executes a remotely fetched script without prior verification. If the distribution server, CDN, DNS, TLS trust chain, or script content is compromised, this becomes an easy remote code execution path on the user's machine.

Content

Scanner excerpt · SKILL.md (reported line 69)May include surrounding context.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest promises the skill is only for 'searching and reading data', but the body discusses support for state-changing actions. That mismatch can mislead users or higher-level agents into granting trust or invoking the skill under read-only assumptions, creating a documentation-driven safety failure if write capabilities are later exposed or already exist through the connector.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The documentation claims that actions changing state are marked with '[write]' or '[destructive]' and gives operational guidance for those actions. In the listed actions, every action is a get/list read action and none are tagged, which contradicts the documentation's assertion that such actions are part of this skill's action set.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.