Back to skill

Security audit

Browser Search

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed browser-search helper; its main risks are expected query sharing with public search engines and minor packaging/scoping gaps.

Install only if you are comfortable with your search terms being sent to Bing, Google, Baidu, or DuckDuckGo through a local Chromium session. Avoid searching for secrets or private identifiers, and use care with the output path because the tool can write a user-specified file under your home directory. Pinning Playwright would improve reproducibility.

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
requirements.txt:1
Finding

Unbounded Third-Party Dependency Without Integrity Verification

Content
View full analysis

Vulnerability Details

File Location: requirements.txt:1
Vulnerability Type: Unpinned dependency and missing integrity controls
Risk Level: Medium

Complete Code Snippet:

text
playwright>=1.58.0

Technical Analysis

The dependency specification sets only a minimum Playwright version. Consequently, package resolution may install any later release, including versions that were not available or reviewed when this skill was published. The project also contains no dependency lockfile or cryptographic hashes with which to authenticate the selected package and its transitive dependencies.

This is a supply-chain hardening weakness rather than evidence that the currently named Playwright package is malicious. Exploitation requires an attacker to compromise an eligible package release or the package-distribution path. If that occurs, the broad version constraint permits the compromised release to be selected automatically.

Attack Path

  1. An attacker compromises an eligible future Playwright distribution, publishing infrastructure, maintainer account, or dependency-resolution channel.
  2. A user installs the project dependencies after the compromised version becomes the newest compatible release.
  3. The package resolver accepts that version because it satisfies >=1.58.0.
  4. Installation-time or imported runtime code from the compromised dependency executes in the user's environment.
  5. The malicious code operates with the privileges and accessible resources of the account performing installation or running the skill.

Impact Assessment

Successful exploitation could provide arbitrary code execution under the installing or executing user's privileges. The accessible scope may include files, environment variables, browser data, network connectivity, and credentials available to that account. It would not inherently grant administrative privileges unless installation is performed as an administrat ...[truncated 51 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace the lower-bound constraint with an exact, reviewed version:
    text
    playwright==1.58.0
    
  2. Generate and commit a dependency lockfile that pins all transitive dependencies.
  3. Generate cryptographic hashes for every resolved distribution, for example with:
    bash
    pip-compile --generate-hashes requirements.in
    
  4. Enforce hash validation during installation:
    bash
    pip install --require-hashes -r requirements.txt
    
  5. Apply dependency updates through a controlled review process with automated vulnerability scanning, provenance checks, and functional testing.
  6. Install dependencies in an isolated virtual environment using a non-privileged account.
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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (7)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This markdown file is written entirely in Chinese, including the title, instructions, examples, and cautions, with no indication that users may choose another language. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is documented and justified.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill declares browser/network access and file output behavior in prose, but does not define any explicit tool scope such as allowed tools or permissions. That creates a policy gap where an agent or runtime may grant broader-than-intended network and file-write capabilities, making the claimed safety restrictions unenforceable.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The natural-language description, safety guidance, usage scenarios, and trigger phrases are all written in Chinese, which effectively imposes a language/locale expectation on users. The file does not offer an opt-in language choice or explain that the skill is intended only for a Chinese-language or region-specific context.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases are generic everyday requests such as '搜索...' and '帮我找...', which can cause the skill to activate in many unrelated conversations. Overbroad activation increases the chance that browser/network actions and file output occur without the user clearly intending to invoke this particular skill or its restrictions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill sends the user's search query to third-party search engines via Playwright without any explicit runtime warning or consent check. This can expose sensitive prompts, internal identifiers, or private investigation topics to external services and create privacy/compliance issues even though the destinations are public search engines.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The natural-language instructions and safety notes in the module docstring are presented exclusively in Chinese. This imposes a language choice on users without opt-in or a documented region-specific reason, which matches the language/locale policy concern described by this rule.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
95% confidence
Finding

The dependency is specified with a lower-bound constraint only (playwright>=1.58.0), which allows installation of any newer version, including future major or minor releases with breaking changes or newly introduced supply-chain risk. While this does not create an immediate exploit by itself, it weakens build reproducibility and increases exposure to unexpected or compromised upstream versions.

Content

Scanner excerpt · requirements.txt (reported line 1)May include surrounding context.

text
playwright>=1.58.0

Static analysis

No suspicious patterns detected.