Back to skill

Security audit

Obclip

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent obclip usage guide, but it asks users to install and run mutable remote code and use authenticated browser profiles without enough scoping safeguards.

Review this skill before installing. Prefer a pinned, reviewed @harris7/obclip version instead of bare npm or npx commands; avoid installing from a mutable main branch; use a dedicated browser profile with only the minimum login state needed; and confirm before clipping authenticated or private pages.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T08 · Insecure Dependencies

Error
Location
references/install-and-invoke.md:13
Finding
Unpinned npm Package Installation and Immediate Execution<![CDATA[ ## Vulnerability Details **File Location**: `references/install-and-invoke.md:13-26` **Additional Locations**: `SKILL.md:20-23`, `references/install-and-invoke.md:44-51`, `references/troubleshooting.md:9-13` **Vulnerability Type**: Unpinned third-party dependency installation and execution **Risk Level**: High ### Vulnerable Code ```markdown ## Install The npm Package Prefer a global install when the user wants the `obclip` command on `PATH`: ```powershell npm install -g @harris7/obclip obclip --help ``` Use `npx` when the user does not want a global install: ```powershell npx @harris7/obclip --help ``` ``` ### Technical Analysis The Skill instructs the agent to install or execute `@harris7/obclip` without specifying an exact version, lockfile, package integrity hash, or other immutable verification mechanism. `npm install -g @harris7/obclip` resolves the package version from the npm registry at installation time, modifies the user's global npm environment, and may execute npm lifecycle scripts. Similarly, `npx @harris7/obclip --help` can retrieve and immediately run the currently resolved package release. Consequently, the effective code executed by the Skill can change after this Skill has been audited. Exploitation would require compromise or malicious control of the package, its publisher account, the registry resolution path, or a transitive dependency. The audited files do not establish that the current package is malicious; the vulnerability is the absence of supply-chain pinning and verification before execution. ### Attack Path 1. An attacker compromises the npm publisher account, package distribution channel, or a dependency used by `@harris7/obclip`. 2. The attacker publishes a malicious version that satisfies the unpinned package reference. 3. A user invokes the Skill on a system where `obclip` is unavailable. 4. Following the Skill instructions, the agent runs either: - `npm install -g @harris7/obclip`, or - `npx @harri ...[truncated 1170 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the dependency to an exact reviewed version, for example: ```powershell npm install --global --ignore-scripts @harris7/obclip@X.Y.Z ``` Replace `X.Y.Z` with a version that has undergone security review. 2. Prefer a project-local installation governed by a committed lockfile instead of modifying the global npm environment: ```powershell npm install --save-exact @harris7/obclip@X.Y.Z npm ci ``` 3. Verify registry integrity metadata and package provenance before execution. Where possible, document an expected package tarball hash and validate it independently. 4. Avoid bare `npx @harris7/obclip` because it can download and execute a newly resolved release. If `npx` is necessary, specify an exact version and prevent fallback to unexpected packages. 5. Disable lifecycle scripts during installation when the reviewed package can operate without them. If lifecycle scripts are required, inspect them and all transitive dependencies before allowing execution. 6. Run the CLI in a restricted environment with minimal filesystem permissions, limited network access, and no unrelated credentials. 7. Continue requiring a dedicated browser profile, and document that the profile should contain only the minimum authentication state needed for the target site. ]]>

T03 · Remote Payload Retrieval and Execution

Warning
Location
references/install-and-invoke.md:3
Finding
Mutable Remote Skill Source Can Change After Review<![CDATA[ ## Vulnerability Details **File Location**: `references/install-and-invoke.md:3-11` **Additional Location**: `assets/install-obclip-skill.txt:1` **Vulnerability Type**: Retrieval and installation from a mutable remote branch **Risk Level**: Medium ### Vulnerable Code ```markdown ## Install The Codex Skill When the user wants this skill installed into Codex, use: ```text Use $skill-installer to install the skill from https://github.com/Rycen7822/obclip-skill/tree/main/skills/obclip ``` After installation, tell the user to restart Codex so the new skill is discovered. ``` The same mutable source is also provided in `assets/install-obclip-skill.txt:1`: ```text Use $skill-installer to install the skill from https://github.com/Rycen7822/obclip-skill/tree/main/skills/obclip and then restart Codex to pick up the new skill. ``` ### Technical Analysis The installation instructions retrieve the Skill from the `main` branch of a GitHub repository. A branch is a mutable reference: its contents can change after the current project has been reviewed. No commit SHA, signed release, checksum, or content verification requirement is supplied. Because the downloaded content becomes agent instructions after Codex restarts, compromise of the repository or an unreviewed upstream change could replace the audited Skill with materially different instructions. Such instructions could direct the agent to retrieve additional payloads, execute unsafe commands, disclose data, or alter tool usage. The audited repository does not contain evidence that the current upstream Skill is malicious. The issue is that future installation results are not cryptographically or immutably tied to the reviewed content. ### Attack Path 1. An attacker obtains write access to the referenced GitHub repository or compromises an authorized maintainer account. 2. The attacker modifies the Skill under `main/skills/obclip` while retaining the same installation URL. 3. A user asks the agent to ...[truncated 1117 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace the mutable `main` branch URL with an immutable, reviewed commit reference. 2. Publish reviewed Skill versions as signed releases and install only an explicitly selected release version. 3. Record a cryptographic hash for every installed Skill file and verify downloaded content before placing it in the Skill directory. 4. Require manual review or explicit user confirmation whenever the remote content differs from the approved version. 5. Avoid automatic updates from mutable branches. Treat updates as new dependencies requiring a separate security review. 6. Document the expected repository owner, commit identifier, file inventory, and checksums so repository redirection or unexpected content can be detected. 7. If the installer supports source allowlists or signature verification, require those controls for this repository. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (8)

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The skill instructs use of `npx @harris7/obclip --help` without pinning a specific package version, which can fetch and execute whatever version is current at runtime. That creates a supply-chain risk: a compromised publisher account, malicious newly published version, or unexpected breaking change could cause unreviewed code execution on the analyst's machine.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The skill enables implicit invocation while using very broad routing language ('install or run obclip' and 'capture a target page into a note') without clear constraints on when it should be triggered. Because this skill can install packages and operate a browser-based clipping tool against arbitrary target pages, overly broad auto-invocation increases the chance of unintended execution on untrusted content or in contexts where the user did not explicitly consent.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The recipe instructs users to operate against a logged-in social page using a real Chromium profile, but it does not warn that authenticated browser profiles may contain cookies, session tokens, history, and other sensitive data. In a skill that guides browser automation, omitting this privacy warning increases the chance that users reuse a personal profile and unintentionally expose or persist sensitive account data during automation.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
Using `npx @harris7/obclip` without a pinned version causes execution of whatever package version is current at invocation time. That creates a supply-chain risk: a compromised maintainer account, malicious new release, or breaking update could execute arbitrary code on the user's machine during install or runtime.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The unpinned `npx @harris7/obclip` invocation allows fetching and running the latest published package version each time. In a skill whose purpose is to instruct installation and operation of a CLI, this makes the risk more relevant because users are explicitly encouraged to execute the command, increasing exposure to dependency hijacking or malicious updates.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
Using `npx @harris7/obclip --help` as a verification step still executes code from an unpinned package source, so even the 'safe check' can trigger arbitrary code execution from a newly published or compromised version. Because this step is presented as routine verification before real use, it may be run frequently and with lowered user suspicion.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The troubleshooting guidance recommends running `npx @harris7/obclip` without a pinned version, which causes npm to resolve and execute the latest published package at runtime. This introduces supply-chain risk because a compromised publisher account, malicious new release, or dependency hijack could result in arbitrary code execution on the user's machine.

Missing User Warnings

Low
Confidence
79% confidence
Finding
This markdown recipe demonstrates use of `--output` to save content into a local directory, but the surrounding text does not warn that running the command will create files on disk and may affect local data organization. For markdown files, SQP-2 applies when descriptions omit warnings about behaviors that affect user data or system integrity.

Static analysis

No suspicious patterns detected.