Back to skill

Security audit

Baidu Web Search

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed Baidu web-search helper that uses a Baidu API key and sends search queries to Baidu, with some install and privacy caveats but no artifact-backed malicious behavior.

Install only if you are comfortable sending search queries to Baidu and providing a Baidu Qianfan API key. Prefer platform-managed environment variables over a local config file, avoid putting secrets in shared chats or screenshots, and pin dependencies with a lockfile before using this in a higher-trust environment.

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
package.json:5
Finding
Unpinned Dependency Without a Lockfile Enables Supply-Chain Drift## Vulnerability Details **File Location**: `package.json:5-7` **Vulnerability Type**: Unpinned third-party dependency and non-reproducible installation **Risk Level**: Medium The affected dependency declaration is: ```json "dependencies": { "axios": "^1.6.0" } ``` The installation instructions in `SKILL.md:103` and `SKILL.md:110` direct users to run: ```bash npm install ``` ### Technical Analysis The caret constraint permits npm to select later compatible Axios releases rather than the exact version reviewed with this project. The project also has no committed `package-lock.json`, so Axios and its transitive dependency graph are not locked to verified package versions and integrity hashes. As a result, two installations performed at different times may install different code. If an allowed future dependency release or transitive package is compromised, malicious code could enter the installation without any change to this repository. npm package lifecycle scripts may execute during installation, while compromised runtime code loaded through `require('axios')` would execute with the privileges of the Node.js process. This finding does not establish that the currently declared Axios package is malicious. The risk arises from mutable dependency resolution and the absence of a reproducible, integrity-locked installation process. ### Attack Path 1. An attacker compromises a future Axios release accepted by `^1.6.0`, or compromises a transitive dependency selected by npm. 2. A user follows the documented instruction and runs `npm install`. 3. Because no lockfile fixes versions and integrity hashes, npm resolves and downloads the compromised package version. 4. Malicious lifecycle code may execute during installation, or malicious runtime code may execute when `scripts/search.js` loads Axios. 5. The compromised code then operates with the permissions of the installing or executing user and may access process da ...[truncated 685 chars]
Remediation
## Remediation Suggestions 1. Pin Axios to a reviewed exact version instead of using a caret range: ```json "axios": "1.6.0" ``` Prefer the latest security-supported version after compatibility and vulnerability review. 2. Generate and commit a `package-lock.json` containing resolved versions and integrity hashes. 3. Update installation documentation to use `npm ci` rather than `npm install`, ensuring that installation fails if the manifest and lockfile differ. 4. Review dependency updates through controlled pull requests and inspect lockfile changes before merging. 5. Run dependency vulnerability and provenance checks in CI, such as `npm audit` and appropriate software-composition-analysis tooling. 6. Where compatible with deployment requirements, install with lifecycle scripts disabled: ```bash npm ci --ignore-scripts ``` 7. Execute installation and the Skill under a dedicated, least-privileged account or sandbox with restricted filesystem and network access.
Vulnerability Patterns
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (7)

Lp3

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding
The skill declares use of an environment-provided secret but does not define an explicit tool scope such as allowed tools or permissions. In practice, this can let the hosting agent infer or grant broader execution capability than intended, increasing the chance of unintended command execution or secret-adjacent access paths.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The description contains very broad trigger phrases like '查一下', '搜一下', '最近', '今天', and '今年', which are common in ordinary conversation and may cause over-triggering. This can make the skill activate in contexts where web access is unnecessary, exposing user queries to an external API and expanding the skill's effective reach beyond clear user intent.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The '何时使用' section lists ambiguous activation phrases and broad categories that overlap heavily with normal chat, making accidental invocation likely. In a skill that performs real-time external retrieval, this broad matching increases privacy and data-minimization risk because more user content may be sent to Baidu than users expect.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
This code returns user-visible error messages in Chinese, such as the empty-query and missing-api-key responses, but does not provide any opt-in or alternative locale handling. That creates a natural-language policy issue if skills are expected not to force a specific language without user choice.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
The service-unavailable and troubleshooting messages are also emitted only in Chinese. Because the file contains multiple enforced Chinese-only outputs and no language selection mechanism, it violates the stated language/locale policy criterion.

Unpinned Dependencies

Low
Category
Supply Chain
Content
"version": "1.1.0",
  "private": true,
  "dependencies": {
    "axios": "^1.6.0"
  }
}
Confidence
93% confidence
Finding
The dependency is specified with a caret range (`^1.6.0`) rather than an exact pinned version, which allows different installs to resolve to different axios releases over time. This weakens build reproducibility and can unintentionally pull in a newly vulnerable or incompatible version through normal installs.

Unverifiable Dependency: axios has 16 known advisory(ies) (CVE-2026-44494 (axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `co); CVE-2026-44495 (axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollut); CVE-2025-62718 (Axios has a NO_PROXY Hostname Normalization Bypass that Leads to SSRF) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
84% confidence
Finding
The manifest references axios without an exact version pin, while the package has multiple published advisories across releases. Because the allowed version range is not fixed, it is not possible to verify from this file alone whether deployments will consistently avoid vulnerable axios versions, increasing supply-chain and dependency risk.

Static analysis

No suspicious patterns detected.