Back to skill

Security audit

CatFee Dokobot

Security checks for vulnerabilities and agentic risk

Overview

This skill is coherent browser-automation guidance, but it asks agents to use a real local Chrome session and an unpinned global CLI/bridge with broad triggers, which deserves user review before installation.

Install only if you intentionally want agents to automate a local Chrome browser. Use a dedicated Chrome profile with no unrelated logged-in accounts, verify and pin the dokobot CLI/extension sources, and avoid letting routine webpage reads use this skill unless browser rendering or authenticated access is explicitly needed.

Vulnerability Patterns
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:13
Finding

Unpinned Globally Installed Browser-Automation Dependency

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 13–15
Vulnerability Type: Unpinned third-party dependency with global installation and browser integration
Risk Level: Medium

Vulnerable Code Snippet

markdown
- `dokobot` CLI installed globally: `npm install -g @dokobot/cli`
- Chrome browser with Dokobot extension installed
- Local bridge running: `dokobot install-bridge` (one-time setup)

Technical Analysis

The skill directs users or agents to install the latest available version of @dokobot/cli globally and then execute its bridge installer. It does not specify an exact reviewed version, integrity hash, lockfile, trusted registry configuration, or package verification procedure.

An npm package can execute package lifecycle code during installation. A global installation makes the package's executable available throughout the user's environment. Running dokobot install-bridge introduces an additional integration point between locally executed third-party code and Chrome. Because the stated purpose includes reading pages through an active browser, this integration may interact with content accessible to the current browser profile, including authenticated pages.

The project contains no evidence that @dokobot/cli is currently malicious. The issue is the unsafe dependency acquisition and installation pattern, which exposes users to a compromised, hijacked, or unexpectedly changed future package release.

Attack Path

  1. An attacker compromises the package publisher, npm account, distribution channel, or a future package release.
  2. The attacker publishes malicious code under the package version resolved by the unconstrained installation command.
  3. A user or agent follows the skill and runs:
    bash
    npm install -g @dokobot/cli
    
  4. Malicious package lifecycle code or installed CLI code executes with the installing user's privileges.
  5. The user or agent runs:
    bash
    dokobot install-bridge
    

6 ...[truncated 1073 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin the CLI to an exact, reviewed version rather than resolving the latest release:

    bash
    npm install --global --ignore-scripts @dokobot/cli@<reviewed-exact-version>
    

    Only use --ignore-scripts if the reviewed installation process supports it.

  2. Record and verify the package's expected integrity digest before installation. Maintain a lockfile or an internally approved dependency manifest where practical.

  3. Document the authoritative npm package, publisher identity, source repository, Chrome extension listing, and bridge distribution source so users can detect typosquatting or unofficial components.

  4. Prefer a project-local or isolated installation over a global installation. Run the CLI in a restricted container, sandbox, dedicated operating-system account, or similarly constrained environment.

  5. Use a dedicated Chrome profile that contains no unrelated authenticated sessions, saved passwords, sensitive extensions, or confidential browsing data.

  6. Review the CLI, extension permissions, bridge behavior, lifecycle scripts, and outbound network destinations before approving a version.

  7. Apply an explicit update policy. Do not automatically adopt new releases; review and approve each upgrade before deployment.

  8. Restrict the URLs and browser sessions the automation component may access, and close sessions when the requested task is complete.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases are very broad and overlap with ordinary requests like reading or fetching a webpage, which can cause the skill to activate when the user did not specifically intend browser automation. Because this skill drives a real Chrome session and may access dynamic or authenticated content, unintended invocation increases the chance of over-collection, privacy exposure, or actions being taken in a logged-in browser context.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill does not clearly warn that local browser automation may use the user's existing Chrome session, including cookies, authenticated state, and access to pages visible only when logged in. That omission is dangerous because users may believe this is equivalent to a normal unauthenticated fetch, when in fact it can expose account-specific or sensitive data from their browser context.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
| Site | URL Pattern | Notes |
|------|-------------|-------|
| 东方财富 行情中心 | `https://quote.eastmoney.com/changes` | 盘口异动,60s timeout |
| 东方财富 龙虎榜 | `https://data.eastmoney.com/stock/lhb.html` | 60s timeout |
| 东方财富 个股资金流向 | `https://data.eastmoney.com/zjlx/<CODE>.html` | CODE = stock code without market prefix |
| 东方财富 数据中心 | `https://data.eastmoney.com/` | 60s timeout |

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
| Site | URL Pattern | Notes |
|------|-------------|-------|
| 东方财富 行情中心 | `https://quote.eastmoney.com/changes` | 盘口异动,60s timeout |
| 东方财富 龙虎榜 | `https://data.eastmoney.com/stock/lhb.html` | 60s timeout |
| 东方财富 个股资金流向 | `https://data.eastmoney.com/zjlx/<CODE>.html` | CODE = stock code without market prefix |
| 东方财富 数据中心 | `https://data.eastmoney.com/` | 60s timeout |

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
| Site | URL Pattern | Notes |
|------|-------------|-------|
| 东方财富 行情中心 | `https://quote.eastmoney.com/changes` | 盘口异动,60s timeout |
| 东方财富 龙虎榜 | `https://data.eastmoney.com/stock/lhb.html` | 60s timeout |
| 东方财富 个股资金流向 | `https://data.eastmoney.com/zjlx/<CODE>.html` | CODE = stock code without market prefix |
| 东方财富 数据中心 | `https://data.eastmoney.com/` | 60s timeout |

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
| Site | URL Pattern | Notes |
|------|-------------|-------|
| 东方财富 行情中心 | `https://quote.eastmoney.com/changes` | 盘口异动,60s timeout |
| 东方财富 龙虎榜 | `https://data.eastmoney.com/stock/lhb.html` | 60s timeout |
| 东方财富 个股资金流向 | `https://data.eastmoney.com/zjlx/<CODE>.html` | CODE = stock code without market prefix |
| 东方财富 数据中心 | `https://data.eastmoney.com/` | 60s timeout |

Static analysis

No suspicious patterns detected.