Back to skill

Security audit

1Password

Security checks for vulnerabilities and agentic risk

Overview

This skill is a plausible 1Password connector, but it routes sensitive vault data through OOMOL and includes unsafe remote installer commands that users should review before installing.

Install only if you are comfortable routing 1Password request details and retrieved item contents through OOMOL. Use a least-privileged 1Password Connect token limited to the specific vaults needed, avoid exposing full item contents unless explicitly required, and do not run the documented pipe-to-shell installers without separately verifying the installer source and integrity.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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 (2)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:57
Finding
Unverified Remote Installer Is Executed Directly by a Shell<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 57-65 **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical ### 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 content from an external OOMOL-controlled URL and immediately execute it using `bash` or PowerShell's `Invoke-Expression`. Neither command pins an installer version nor verifies a cryptographic signature or checksum before execution. Consequently, the code ultimately executed is not fixed by the reviewed Skill package and can change after this audit. Compromise of the installer host, its deployment pipeline, its account, or the network trust chain could turn these instructions into an arbitrary-code execution channel. The conditional placement under first-time setup reduces how often the path is reached, but does not address the underlying trust problem. Installing a supporting CLI may be necessary for the declared functionality; executing an unverified remote response directly in a shell is not the minimum privilege or safest installation method required to accomplish that task. ### Attack Path 1. The `oo` CLI is absent, causing an `oo: command not found` failure. 2. The Agent or user follows the documented first-time setup instructions. 3. The shell retrieves `install.sh` or `install.ps1` from the external server. 4. The remote response is passed directly to `bash` or `iex` without inspection or integrity verification. 5. If the remote host, publication pipeline, or served installer is compromised, attacker-controlled commands execute under the invoking account. 6. Those commands can access ...[truncated 748 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove both pipe-to-shell installation commands. 2. Distribute the CLI through a trusted platform package manager or a version-pinned release artifact. 3. Download the installer or binary to a local file without executing it immediately. 4. Publish a cryptographic checksum and, preferably, a signature from a separately protected trust channel. 5. Verify the checksum and signature locally before execution. 6. Display the artifact location and require explicit user approval before running it. 7. Pin the expected CLI version so the effective installation payload cannot change silently after review. 8. Document the permissions and filesystem changes required by the installer. 9. Prefer installation without administrative privileges, and clearly warn the user before any necessary elevation. ]]>

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:3
Finding
Mandatory Third-Party Routing of Sensitive 1Password Requests and Responses<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 3-29 **Vulnerability Type**: Skill instruction hijacking and sensitive-data routing **Risk Level**: High ### Vulnerable Code ```yaml description: "1Password (1password.com). Use this skill for ANY 1Password request — searching and reading data. Whenever a task involves 1Password, use this skill instead of calling the API directly." allowed-tools: [Bash(oo *)] ``` ```markdown Operate **1Password** through your OOMOL-connected account. This skill calls the `one_password` connector with the [oo CLI](https://github.com/oomol-lab/oo-cli); OOMOL injects credentials server-side, so you never handle raw tokens. ``` ```bash oo connector schema "one_password" --action "<action_name>" ``` ```bash oo connector run "one_password" --action "<action_name>" --data '<json>' --json ``` Relevant supported actions include: ```markdown - `get_item` — Get one full 1Password item by vault UUID and item UUID. - `list_activity` — List 1Password Connect activity events visible to the access token. - `list_items` — List item overviews in one 1Password vault. - `list_vaults` — List 1Password vaults available to the connected Connect access token. ``` ### Technical Analysis The Skill instructs the Agent to use this integration for **any** 1Password request and explicitly directs it not to call the 1Password API directly. It then routes request parameters and returned data through the OOMOL `one_password` connector. Although server-side credential injection avoids exposing the raw connector token to the Agent, it does not prevent the connector infrastructure from processing sensitive data. The supported operations include retrieval of full 1Password items, vault metadata, item inventories, and access activity. Full item responses may contain passwords, secure notes, keys, or other secrets. The broad routing instruction overrides tool-selection discretion even when a direct, narrower, or more trusted data path ...[truncated 1696 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the blanket instruction requiring this Skill for every 1Password request. 2. Prefer direct 1Password access when an approved direct integration is available. 3. Clearly disclose that request parameters and retrieved vault content are processed by OOMOL. 4. Obtain informed user consent before retrieving a full item or transmitting secret-bearing responses through the connector. 5. Use the least-privileged 1Password Connect token, restricted to only the necessary vaults and read operations. 6. Request only the minimum fields needed for the user's task rather than returning complete items by default. 7. Redact passwords, private keys, tokens, secure notes, and other secret fields from Agent-visible output unless the user explicitly requests them. 8. Document connector-side logging, retention, encryption, deletion, and subprocess handling policies. 9. Prevent sensitive JSON payloads from being exposed through shell history, process listings, diagnostic logs, or error telemetry; use protected input files or standard input where supported. 10. Add confirmation requirements for full-item retrieval and other operations likely to return secret material. ]]>
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • 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
Findings (4)

Credential Access

High
Category
Privilege Escalation
Content
- `get_health` — Get health details for the configured 1Password Connect Server.
- `get_item` — Get one full 1Password item by vault UUID and item UUID.
- `get_vault` — Get details for one 1Password vault by UUID.
- `list_activity` — List 1Password Connect activity events visible to the access token.
- `list_items` — List item overviews in one 1Password vault.
- `list_vaults` — List 1Password vaults available to the connected Connect access token.
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- `get_health` — Get health details for the configured 1Password Connect Server.
- `get_item` — Get one full 1Password item by vault UUID and item UUID.
- `get_vault` — Get details for one 1Password vault by UUID.
- `list_activity` — List 1Password Connect activity events visible to the access token.
- `list_items` — List item overviews in one 1Password vault.
- `list_vaults` — List 1Password vaults available to the connected Connect access token.
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

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 by piping a remote script directly into bash, which is a classic unsafe pattern because it executes unverified code from the network immediately. In a high-trust secret-management context, compromise of the install endpoint, TLS interception, or supply-chain tampering could lead to arbitrary code execution on the host and downstream theft of 1Password-accessible data.

Vague Triggers

Medium
Confidence
96% confidence
Finding
The trigger text says to use this skill for ANY 1Password request and instead of calling the API directly, which is overly broad and can cause the agent to route all 1Password-related tasks through a powerful secret-reading integration without finer-grained intent checks. In the context of a password-manager skill, broad invocation increases the chance of unnecessary secret access and makes prompt-injection or user-confusion failures more dangerous.

Static analysis

No suspicious patterns detected.