Back to skill

Security audit

Notion

Security checks for vulnerabilities and agentic risk

Overview

This Notion skill is mostly coherent, but its first-time setup tells users to execute unverified remote installer scripts, which deserves review before installation.

Review the installer path before using this skill. Prefer installing the OOMOL oo CLI through a verified package or inspected installer, and confirm which Notion workspace the OOMOL connection can access before allowing create, update, move, or delete actions.

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:79
Finding
Unverified Remote Installation Scripts Executed Directly by Shells## Vulnerability Details **File Location**: `SKILL.md`, lines 79–83 **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 first-time setup instructions download mutable scripts from `cli.oomol.com` and immediately execute them using Bash or PowerShell. The instructions do not pin a script version, verify a cryptographic checksum or publisher signature, save the script for inspection, or otherwise establish that the downloaded content matches an audited artifact. HTTPS protects the transfer in transit but does not address compromise of the hosting service, DNS or certificate infrastructure, deployment pipeline, or publisher account. It also cannot prevent the remote script from being replaced after this Skill has been reviewed. Consequently, the code that ultimately executes is not bounded by the contents of the audited project. This execution capability exceeds the minimum privilege necessary for ordinary Notion operations. Although installing a missing CLI may be functionally relevant, arbitrary unverified code execution is not required to provide that installation. ### Attack Path 1. The `oo` CLI is absent, causing the documented `oo: command not found` fallback to apply. 2. A user or Agent follows the first-time setup instructions. 3. `curl` or `irm` retrieves the current script from the external OOMOL endpoint. 4. The response is passed directly to Bash or `Invoke-Expression` without inspection or integrity verification. 5. If the remote endpoint, publishing pipeline, or delivered script is compromised, attacker-controlled commands execute immediately. 6. Those commands can perform additional downloads, access files available to the invoking account, alter the ...[truncated 885 chars]
Remediation
## Remediation Suggestions 1. Remove the `curl | bash` and `irm | iex` installation patterns. 2. Prefer installation through a trusted platform package manager with a version-pinned package. 3. If standalone artifacts are necessary, link to a version-specific release hosted through the project's official release channel. 4. Publish SHA-256 checksums and, preferably, cryptographic signatures using a documented publisher key. 5. Require users to download the installer to a local file, verify its checksum or signature, and inspect it before execution. 6. Obtain explicit user approval before installing software or executing any installer. 7. Run installation with ordinary user privileges and avoid requesting administrative elevation unless a documented installation step strictly requires it. 8. Document the files, network endpoints, and configuration changes made by the installer so users can evaluate its scope. 9. Where possible, instruct users to install the CLI independently rather than allowing an Agent to execute installation commands.
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
97% confidence
Finding
The skill instructs users to install software via `curl ... | bash`, which executes remote script content directly without verification. If the distribution endpoint, transport path, or upstream script is compromised, this becomes arbitrary code execution on the user's machine; in a skill context, that is especially dangerous because it is embedded as an operational remediation step users may follow reflexively.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The description says to use this skill for ANY Notion request and whenever a task involves Notion, which creates an overly broad trigger surface. That can cause unintended invocation on casual mentions of Notion, increasing the chance of unnecessary data access, accidental writes, or routing sensitive user requests into a powerful integration without sufficient narrowing.

Intent-Code Divergence

Medium
Confidence
94% confidence
Finding
The action list marks clearly read-oriented operations such as `list_block_children` and `retrieve_block` with `[write]`, while the Safety section says only tagged actions change state. This inconsistency can mislead an agent or operator into applying the wrong confirmation policy, causing either unnecessary trust in mislabeled actions elsewhere or unsafe automation logic that relies on tags for authorization decisions.

Static analysis

No suspicious patterns detected.