Skip to content

Back to the catalog

The sorry state of skill distribution
blog.trailofbits.comwriteup

The sorry state of skill distribution

Trail of Bits researchers bypassed every agent-skill security scanner they tested — ClawHub's VirusTotal/Code Insight and GPT-5.5-based guard model, and skills.sh's Gen/Socket/Snyk-backed scanning, plus Cisco's skill-scanner — using techniques like context-truncation via 100,000 newlines, malicious payloads hidden inside .docx ZIP archives, Python .pyc bytecode poisoning to steal environment variables, and rhetorically-crafted prompt injection that convinced LLM analyzers a malicious npm/yarn registry change was benign. The piece also shows a legitimate Anthropic Office skill (soffice.py) using LD_PRELOAD in ways indistinguishable from malicious behavior, arguing static/LLM skill scanning is structurally unable to guarantee safety and that organizations should instead curate trusted skill marketplaces (e.g., trailofbits/skills-curated) rather than rely on public ones. PoC skills are published at trailofbits/overtly-malicious-skills.

TL;DR Trail of Bits bypassed ClawHub, skills.sh, and Cisco's skill scanners using newline-flooding, .docx/pyc payload smuggling, and prompt injection — showing agent-skill security scanning is fundamentally unreliable.
Document

What it is

A Trail of Bits post reporting successful bypasses of every AI-agent "skill scanner" the authors tested: OpenClaw's ClawHub detector, Cisco's open-source skill-scanner, and all three services behind Vercel's skills.sh (Gen Agent Trust Hub, Socket, Snyk). Proof-of-concept skills live in trailofbits/overtly-malicious-skills. Three of the four bypasses took under an hour to build after reading the scanner source.

How it works

The central claim is structural, not incidental: because these scanners are static analyzers, an attacker gets "unlimited bites at the apple" — inspect the (often open-source) scanner, tweak, resubmit until something passes. Two concrete techniques:

  • Truncation/confusion: prepending 100,000 newlines between benign boilerplate and malicious code. ClawHub's scanner truncated the file and missed the payload; VirusTotal's model got confused. The long scroll is easy to miss in the web UI.
  • Archive indirection: a SKILL.md tells the agent to extract "instructions" from a .docx — really a ZIP of XML — that instead triggers a malicious sync1.sh script. This works against scanners that accept arbitrary git repos.

The distinction between channels is the load-bearing detail the summary omits:

flowchart TD
    A[Skill distribution] --> B[ZIP out-of-band]
    A --> C[Curated marketplace<br/>anthropics/skills]
    A --> D[Public marketplace<br/>skills.sh, clawhub.ai]
    B --> E[Procedural controls possible]
    C --> E
    D --> F[One-click install,<br/>relies on scanners]
    F --> G[Scanners bypassed]

Preconditions / Affected

Matters if you install skills from public one-click marketplaces (skills.sh, ClawHub) or otherwise trust these scanners as a gate. The archive-based attack requires a channel that permits binaries/archives — so it hits skills.sh and Cisco (arbitrary git repos) but not ClawHub, which whitelists file types and forbids binaries and archives.

What to do

The page names no patch. Actionable takeaways:

  • Do not treat scanner "safe" verdicts on public marketplaces as trustworthy.
  • Prefer channels with procedural controls — out-of-band ZIPs with vetted provenance, or curated marketplaces (anthropics/skills, trailofbits/skills-curated) — over one-click public installs.
  • OpenClaw's file-type whitelist (no binaries/archives) is cited as a meaningful, functionality-preserving hardening worth emulating.
  • Cisco merged Trail of Bits' hardening changes; the underlying static-scan weakness remains.

Caveats

This is the vendor's own disclosure of self-built PoCs, not third-party reproduction. The fetched text cuts off mid-sentence during the second (skills.sh/Cisco) bypass, so the full details of that attack and any remaining fixes are not captured here. Bypasses reflect the scanner versions tested at publication; specific truncation limits may since be patched.

Organisations named here

  • ClawHub
  • Code Insight
  • GPT-5.5
  • xz-utils

Technologies named here

  • ClawHub
  • ClawHub malicious skill detector
  • skills.sh
  • Cisco skill-scanner
  • Gen Agent Trust Hub
  • Socket
  • VirusTotal Code Insight
  • Snyk
  • GPT-5.5
  • Gemini 3 Flash
  • VirusTotal
  • Claude Sonnet 4.6
  • trailofbits/overtly-malicious-skills
  • trailofbits/skills-curated
  • Claude.ai
  • OpenAI Codex
  • anthropics/skills
  • Anthropic MS Office skills
  • npm and yarn
  • OpenClaw

Techniques named here

  • Context truncation / newline flooding
  • Archive indirection attack
  • .pyc bytecode poisoning
  • Prompt injection via rhetorical misdirection
  • LD_PRELOAD library injection
  • Supply-chain packaging/source mismatch