Back to skill

Security audit

Duckse

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent web-search helper, but its setup instructions tell users to run an unverified remote installer directly in a shell.

Install only if you are comfortable auditing or replacing the installer path. Prefer installing duckse from a pinned release or reviewed package, verify checksums or signatures when available, and do not search for secrets, internal project names, credentials, regulated data, or other sensitive terms unless you accept that queries may leave your environment.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:36
Finding
Mutable Remote Installation Script Is Downloaded and Executed Without Verification<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, line 36 **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical ```bash curl -sSL https://raw.githubusercontent.com/dwirx/duckse/main/scripts/install.sh | bash ``` ### Technical Analysis The installation instructions retrieve a shell script from the mutable `main` branch of a personal GitHub repository and pipe the response directly into Bash. The downloaded content is neither pinned to an immutable release or commit nor authenticated through a cryptographic signature or checksum. This pattern creates a remote code-execution channel whose effective payload can change after the Skill has been audited. It also prevents meaningful review before execution. Compromise of the repository owner’s account, repository, upstream delivery path, or installation script would allow an attacker to substitute arbitrary shell commands. Installing a search utility supports the Skill’s declared functionality, but executing an unverified, mutable remote script is not necessary and exceeds the minimum authority required for installation. The project contains no local copy of the installer, so its behavior and security properties cannot be bounded by this audit. ### Attack Path 1. An attacker compromises the external repository, its maintainer account, or another component capable of modifying the referenced installer. 2. The attacker changes `scripts/install.sh` on the `main` branch to include malicious shell commands. 3. A user or Agent follows the Skill’s prerequisite instructions because `duckse` is unavailable. 4. `curl` downloads the modified script without pinning or integrity verification. 5. The shell immediately executes the response with the privileges of the invoking account. 6. The payload can access resources available to that account and may install further malicious components. ### Impact Assessment Successful exploitation provides arbitrary command execution wit ...[truncated 786 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the direct `curl | bash` installation command. 2. Prefer a trusted package registry or a versioned release artifact with transparent package metadata. 3. Pin downloads to an immutable release or commit rather than the mutable `main` branch. 4. Publish and verify a SHA-256 checksum or cryptographic signature before execution. 5. Download the installer to a local file, inspect it, and require explicit user approval before running it. For example: ```bash curl -fL -o install.sh "https://example.invalid/duckse/releases/download/vX.Y.Z/install.sh" echo "<EXPECTED_SHA256> install.sh" | sha256sum --check - less install.sh bash install.sh ``` 6. Document the installer’s filesystem and network actions and ensure it operates without administrative privileges. 7. Prefer reproducible manual installation steps or package-manager commands that install only the files required for the search CLI. 8. Advise users never to run the installer with `sudo` unless a narrowly defined, independently reviewed operation genuinely requires elevation. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Chaining Abuse

High
Category
Tool Misuse
Content
Jika belum ada, install:

```bash
curl -sSL https://raw.githubusercontent.com/dwirx/duckse/main/scripts/install.sh | bash
```

## Core Commands
Confidence
99% confidence
Finding
The `| bash` construct chains downloaded content straight into a shell, eliminating any review step and amplifying the impact of a compromised upstream resource into immediate command execution. In this skill context, the pattern is especially risky because it is presented as routine setup guidance, which can normalize dangerous behavior for users and agents.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill instructs users to perform web searches and URL expansion without warning that queries, metadata, and resolved links will be sent to external services. In a web-search skill, this omission is materially relevant because users may submit sensitive prompts, internal project names, or investigative topics that should not leave the local environment.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The installation instructions pipe a remotely fetched script directly into `bash` with no verification, pinning, or trust guidance. This is dangerous because any compromise of the source repository, transport path, or referenced script can result in immediate arbitrary code execution on the user's machine.

Natural-Language Policy Violations

Low
Confidence
83% confidence
Finding
The file begins with an English description and headings, then switches into Indonesian instructions such as "Gunakan" and "Jika belum ada" without stating that the skill is intended for Indonesian-speaking users. This can violate language/locale expectations because the skill effectively forces a language choice without user opt-in or justification.

External Script Fetching

Low
Category
Supply Chain
Content
Jika belum ada, install:

```bash
curl -sSL https://raw.githubusercontent.com/dwirx/duckse/main/scripts/install.sh | bash
```

## Core Commands
Confidence
98% confidence
Finding
Fetching an external script from GitHub and executing it as part of setup introduces a software supply-chain risk. Because this is a skill instruction intended for end users, the unsafe pattern is more dangerous than a theoretical code smell: it encourages direct execution of untrusted remote content in a likely interactive shell context.

Static analysis

No suspicious patterns detected.