Back to skill

Security audit

Obscura Skill

Security checks for vulnerabilities and agentic risk

Overview

This browser automation skill is coherent, but it asks users to install unverified latest binaries with elevated privileges and promotes stealth scraping workflows.

Review before installing. Prefer a pinned Obscura release with published checksums or signatures, install it in a user-local directory instead of using sudo, and use stealth or scraping features only on sites and systems where you have authorization and policy approval.

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)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:41
Finding
Unverified Mutable Executable Download and Privileged System-Wide Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 41–44, 50–52, 58–60, and 430–432 **Vulnerability Type**: Remote payload retrieval, insecure supply-chain dependency, and excessive installation privileges **Risk Level**: High ### Vulnerable Code ```bash curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-aarch64-macos.tar.gz tar xzf obscura-aarch64-macos.tar.gz sudo mv obscura /usr/local/bin/ obscura --version ``` ```bash curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-x86_64-macos.tar.gz tar xzf obscura-x86_64-macos.tar.gz sudo mv obscura /usr/local/bin/ ``` ```bash curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-x86_64-linux.tar.gz tar xzf obscura-x86_64-linux.tar.gz sudo mv obscura /usr/local/bin/ ``` The CI installation example repeats the unsafe retrieval pattern: ```yaml curl -L -o /tmp/obscura.tar.gz \ https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-x86_64-linux.tar.gz tar xzf /tmp/obscura.tar.gz -C /usr/local/bin/ ``` ### Technical Analysis The installation instructions download precompiled executables from a personal GitHub repository through a mutable `releases/latest` URL. They do not pin an audited release version or verify a checksum, cryptographic signature, or trusted provenance before extracting and executing the downloaded content. Because `latest` can resolve to different assets after the Skill has been reviewed, the effective code executed by users can change without any corresponding change to this repository. Compromise of the upstream maintainer account, release workflow, repository, or distribution assets could therefore substitute an attacker-controlled executable. The archive is also extracted without first validating its member paths or expected file list. A malicious archive could potentially contain unexpected files or path-traversal entries. The local installation instructions then u ...[truncated 1779 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin an explicitly reviewed release version rather than using `releases/latest`. 2. Publish trusted SHA-256 checksums and verify the selected asset before extraction. 3. Prefer signed release artifacts and validate signatures against a documented maintainer key. 4. Download into a newly created, permission-restricted temporary directory. 5. List and validate archive members before extraction, rejecting absolute paths, traversal components, links, and unexpected files. 6. Extract into the restricted temporary directory rather than directly into `/usr/local/bin`. 7. Install the verified binary into a user-local directory such as `$HOME/.local/bin`; avoid `sudo` by default. 8. Require explicit user approval before downloading or installing any executable. 9. In CI, use a pinned artifact digest or a trusted package source with provenance verification, and run the binary under a minimally privileged account. 10. Document the exact expected checksum and release identifier in the Skill so reviewers can verify that the executable has not changed. ]]>

T08 · Insecure Dependencies

Warning
Location
README.md:21
Finding
Unpinned Third-Party Package Execution During Skill Installation<![CDATA[ ## Vulnerability Details **File Location**: `README.md`, lines 21–24 **Vulnerability Type**: Unpinned third-party installer and repository dependency **Risk Level**: Medium ### Vulnerable Code ```markdown ### Option 1 — `npx skills` ```bash npx skills add git@github.com:FelipeOFF/obscura-skill.git ``` ``` ### Technical Analysis The documented installation command invokes `npx skills` without specifying a package version or integrity value. Depending on the local npm environment, `npx` may retrieve and execute the currently resolved package from the npm registry. Its executable implementation can therefore differ from the version originally reviewed. The Git repository supplied to the installer is also not pinned to a commit SHA or signed release tag. The installer consequently retrieves the repository’s current default revision, allowing the installed Skill instructions to change after this README has been audited. This creates two mutable supply-chain boundaries: the npm package providing the installer and the Git repository providing the Skill. Compromise, malicious publication, account takeover, dependency confusion, or an unauthorized repository update could cause users to execute installer logic or load Skill instructions that were never reviewed. ### Attack Path 1. An attacker compromises the npm package resolved as `skills`, its maintainer account, or its dependency chain; alternatively, the attacker compromises the referenced Git repository. 2. The attacker publishes malicious installer code or modifies the repository’s default branch. 3. A user runs the documented unversioned `npx skills add` command. 4. `npx` downloads and executes the currently resolved installer package. 5. The installer fetches the current, unpinned repository revision. 6. Attacker-controlled code may execute during installation, or attacker-controlled Skill instructions may be persisted in the user’s Claude Code Skill directory and loaded in later sessions. ### ...[truncated 635 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the `skills` npm package to a specific reviewed version. 2. Use npm lockfile and integrity metadata where the installation workflow supports them. 3. Pin the Skill repository to a full immutable Git commit SHA rather than its default branch. 4. Prefer a signed release tag and document how users can verify its signature. 5. Avoid automatic `npx` execution where possible; provide a reviewed manual installation procedure as the default. 6. Inform users that the command executes third-party installer code and require explicit confirmation. 7. Publish expected file hashes for the Skill contents and verify them after installation. 8. Review and pin transitive dependencies used by the installer. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (20)

Vague Triggers

Medium
Confidence
93% confidence
Finding
The skill is designed to auto-trigger on broad, common web-related phrases such as web scraping, headless browser, JS rendering, and Playwright/Puppeteer. In practice this can cause the skill to activate in benign contexts and steer the agent toward stealth scraping or anti-detection guidance unexpectedly, increasing the chance of policy-violating or risky automation behavior.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The README promotes 'stealthy' and anti-detection browser automation without any warning about legal, contractual, or policy implications. In this context, the omission matters because the skill explicitly targets anti-bot and fingerprinting-evasion use cases, which can facilitate abuse or unauthorized scraping if presented without guardrails.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding
The README instructs users to run `npx skills` without pinning a version, which causes execution of whatever package version is current at install time. This creates a supply-chain risk: a compromised or malicious future release could execute arbitrary code on the user's machine during installation.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Vague Triggers

Medium
Confidence
90% confidence
Finding
The trigger description is broad enough to activate on many generic browser-testing or scraping requests, causing the agent to select a powerful web automation skill when a narrower or safer workflow might suffice. In this skill's context, that matters because the skill also promotes stealth, scraping, and automation against third-party sites, increasing the chance of misuse or unintended execution paths.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill explicitly markets defeating bot detection and recommending stealth builds without prominently warning about legal, policy, or site-operator risks at the point of use. In this context, stealth capabilities materially increase abuse potential by helping automate access to third-party sites while concealing automation indicators.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
```bash
curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-aarch64-macos.tar.gz
tar xzf obscura-aarch64-macos.tar.gz
sudo mv obscura /usr/local/bin/
obscura --version
```
Confidence
70% confidence
Finding
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
```bash
curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-aarch64-macos.tar.gz
tar xzf obscura-aarch64-macos.tar.gz
sudo mv obscura /usr/local/bin/
obscura --version
```
Confidence
70% confidence
Finding
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
```bash
curl -LO https://github.com/h4ckf0r0day/obscura/releases/latest/download/obscura-aarch64-macos.tar.gz
tar xzf obscura-aarch64-macos.tar.gz
sudo mv obscura /usr/local/bin/
obscura --version
```
Confidence
70% confidence
Finding
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Vague Triggers

Medium
Confidence
86% confidence
Finding
The workflow-invocation guidance uses broad phrases like 'test the flow' and 'validate the page' that can match many normal frontend tasks, potentially causing over-selection of this skill. Because the skill includes instructions for browser automation, login flows, scraping, and stealth options, over-triggering increases the likelihood of unnecessary external interaction and risky automation behavior.

External Transmission

Medium
Category
Data Exfiltration
Content
trap "kill $OBSCURA_PID 2>/dev/null || true" EXIT
# Wait until the CDP server is reachable (max 5s)
for i in {1..50}; do
  curl -s http://127.0.0.1:9222/json/version >/dev/null && break
  sleep 0.1
done
USE_OBSCURA=1 npx playwright test "$@"
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
- Do **not** use Obscura against sites whose terms of service forbid scraping.
- Do **not** disable `--obey-robots` on third-party sites in production
  pipelines without consent.
- Do **not** treat stealth mode as a bypass for paywalls or auth — it only
  hides the fact that the browser is automated, not the fact that requests
  are made.
Confidence
75% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Natural-Language Policy Violations

Low
Confidence
88% confidence
Finding
The README provides the sole example user prompt in Portuguese ("Como faço scraping de uma SPA pesada de JavaScript?") without indicating that language choice is optional or user-selected. This can imply a locale preference in the skill documentation without user opt-in, which conflicts with the language/locale policy criteria.

Vague Triggers

Low
Confidence
82% confidence
Finding
The Portuguese shortcut phrases are broad natural-language triggers that can collide with ordinary requests to run tests, making this skill activate too aggressively. In isolation this is low severity, but in combination with scraping/stealth/browser-driving capabilities it can steer the agent toward higher-risk tooling without sufficient user intent verification.

Static analysis

No suspicious patterns detected.