Back to skill

Security audit

Ddg Web Search.Local.Bak 20260415 020609

Security checks for vulnerabilities and agentic risk

Overview

This skill mostly performs DuckDuckGo lookups, but it includes an undocumented option that can open search-result pages in the user's local browser.

Review before installing. The normal lookup behavior is coherent, but the package should either remove the --open browser-launching path or clearly document it and require explicit user confirmation before opening any external URL.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (7)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared behavior says the skill performs lightweight DuckDuckGo instant-answer lookups, but the detected implementation reportedly also scrapes HTML and can launch a local browser or open URLs via subprocess. That mismatch is dangerous because it hides materially different behavior, including host-side side effects and execution paths that can open untrusted content outside the agent's expected sandbox.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill advertises executable behavior that uses shell and network capabilities but does not declare any tool scope or permission boundaries. That increases the chance the agent can invoke code with broader access than reviewers or orchestrators expect, which weakens least-privilege controls and makes misuse harder to detect.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The description says to use the skill whenever the user asks to 'look something up online,' 'fetch quick facts,' or do 'lightweight web search,' which are broad, everyday requests that could match many unrelated situations. It does not provide tighter trigger boundaries or exclusion examples, increasing the risk of unintended invocation.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · scripts/ddg_search.py (reported line 21)May include surrounding context.

python
"skip_disambig": 0,
        }
    )
    url = f"https://api.duckduckgo.com/?{params}"
    with urllib.request.urlopen(url, timeout=20) as r:
        return json.loads(r.read().decode("utf-8", errors="replace"))

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill description says it returns concise search results, but the code can also open a local browser and navigate to remote URLs via the --open flag. In an agent/tooling context, this expands the capability from passive retrieval to local side effects, which can expose users to unwanted navigation, tracking, or phishing destinations derived from untrusted search results.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

Spawning local browser processes is unrelated to simple concise-result retrieval and creates an unnecessary side-effectful execution path. Because the opened URL comes from external search results or API response fields, the tool can drive a user's environment to attacker-controlled pages without a strong trust boundary or confirmation step.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/ddg_search.py (reported line 64)May include surrounding context.

python
]
    for cmd in cmds:
        try:
            subprocess.Popen(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
            return cmd[0]
        except Exception:
            continue