Back to skill

Security audit

ddgs (DuckDuckGo Search)

Security checks for vulnerabilities and agentic risk

Overview

This is a straightforward DDGS web search helper; the main caveats are external search-query sharing and unpinned Python package installation.

Install in an isolated virtual environment, prefer a reviewed pinned version of `ddgs`, avoid the generic pip upgrade unless needed, and do not search for secrets, private identifiers, or internal-only information unless you are comfortable sending those terms to external search services.

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:14
Finding
Unpinned Third-Party Dependency Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 14–18 and 231–232 **Vulnerability Type**: Unpinned and unverified third-party package installation **Risk Level**: Medium ### Vulnerable Code Lines 14–18: ```bash # Install via uv (Recommended) uv pip install ddgs # Or install via pip pip install ddgs ``` Lines 231–232: ```bash pip install --upgrade pip pip install ddgs ``` ### Technical Analysis The installation instructions retrieve the latest available `ddgs` package and its transitive dependencies from the user's configured Python package index. They do not specify an exact reviewed version, verify package hashes, use a lockfile, or validate the expected package source. Consequently, the dependency contents can change after the skill has been audited. If the package publisher, package-index account, configured index, or a transitive dependency is compromised, package-controlled code may execute during installation, build processing, or subsequent import by the documented examples. The troubleshooting instructions additionally upgrade `pip`, unnecessarily changing a security-sensitive component of the user's environment beyond the skill's functional requirements. ### Attack Path 1. A user follows the installation instructions in `SKILL.md`. 2. `pip` or `uv pip` resolves the current mutable release of `ddgs` and its transitive dependencies from the configured package index. 3. An attacker compromises a relevant publisher account, dependency, index, or package-resolution path and supplies a malicious release. 4. The package manager downloads the attacker-controlled component without validating it against an audit-approved version and hash. 5. Malicious code executes through package build or installation behavior, or when the documented Python examples import `ddgs`. 6. The payload operates with the privileges and environmental access of the user or Agent process performing the installation. ### Impact Assessment Successful exp ...[truncated 541 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin `ddgs` to an exact version that has been reviewed, rather than installing the latest mutable release. 2. Maintain dependencies in a lockfile or hashed requirements file, including all transitive dependencies. 3. Require integrity verification during installation, for example: ```bash python -m pip install --require-hashes -r requirements.txt ``` 4. Record hashes obtained through a controlled dependency-review and release process. 5. Explicitly document the trusted package index and disable unintended supplemental indexes where appropriate. 6. Prefer installation in an isolated virtual environment with minimal filesystem and credential access. 7. Remove the generic `pip install --upgrade pip` troubleshooting instruction. If a minimum `pip` version is required, specify and validate a reviewed version explicitly. 8. Periodically review pinned dependencies for known vulnerabilities and update them through a controlled, tested process. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (2)

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill is explicitly about performing live web searches through DDGS and multiple backend search providers, but it does not clearly warn that user queries are transmitted off-system to external network services. In an agent setting, users may provide sensitive prompts, terms, or identifiers, and silent transmission of those queries can cause privacy leakage or policy violations.

Natural-Language Policy Violations

Low
Confidence
76% confidence
Finding
The natural-language guidance presents locale-specific region codes such as 'cn-zh' and 'us-en', and the examples hard-code region values without stating that users may choose their own locale preferences. Because locale can affect language and regional behavior, the documentation should make clear that these are optional examples rather than imposed defaults.

Static analysis

No suspicious patterns detected.