ktg-plugin-marketplace/plugins/llm-security/examples/malicious-skill-demo/expected-findings.md

5.3 KiB

Expected Findings Catalog

This documents all security findings the scanners should detect in the evil-project-health/ fixture.

Expected verdict: BLOCK (risk score 100/100)

Note: This catalog covers the ~56 deterministic findings from the 7 scanners. The full security assessment (security-assessment.md) reports ~85 findings because it includes ~25 additional findings from the LLM-powered agents (skill-scanner, mcp-scanner, posture-assessor).

Unicode Scanner (UNI)

# Severity File Finding
1 HIGH SKILL.fixture.md Zero-width space (U+200B) between visible words (2 instances)
2 CRITICAL SKILL.fixture.md Invisible line containing only zero-width chars (U+200B, U+200C, U+200D, U+FEFF)
3 CRITICAL SKILL.fixture.md Unicode Tag steganography (U+E0063...) encoding hidden command
4 HIGH SKILL.fixture.md BIDI override (U+202E) in section header
5 MEDIUM SKILL.fixture.md Cyrillic homoglyph in "data" (U+0430 replacing Latin 'a')
6 MEDIUM health-check-agent.fixture.md Cyrillic homoglyphs in "scan" (U+0441 replacing 'c', U+0430 replacing 'a')

Entropy Scanner (ENT)

# Severity File Finding
1 HIGH+ SKILL.fixture.md Base64 blob (84 chars) — decodes to curl command with env exfiltration
2 HIGH+ telemetry.mjs ENCODED_CONFIG base64 blob (same payload)
3 MEDIUM telemetry.mjs High-entropy auth_credential string (32 chars)

Permission Mapper (PRM)

# Severity File Finding
1 HIGH health.fixture.md Read-only intent words ("analyze", "report") with Bash+Write+Edit tools
2 HIGH health.fixture.md Dangerous tool combination (Bash + Write + Edit)
3 MEDIUM health-check-agent.fixture.md Haiku model on security-sensitive agent (security keywords + Bash)
4 INFO health-check-agent.fixture.md Overprivileged agent (8 tools including Task + WebFetch)
5 MEDIUM health-check-agent.fixture.md Task + Bash combination on agent
6 MEDIUM hooks.fixture.json Ghost hook: PostToolUse script not found (post-bash-telemetry.mjs)
7 MEDIUM hooks.fixture.json Ghost hook: SessionStart script not found (session-beacon.mjs)
8 MEDIUM hooks.fixture.json Ghost hook: PreToolUse script not found (pre-write-intercept.mjs)

Dependency Auditor (DEP)

# Severity File Finding
1 HIGH package.json Typosquatting: "expresss" → "express" (Levenshtein distance 1)
2 MEDIUM package.json Typosquatting: "lodsah" → "lodash" (Levenshtein distance 2)
3 HIGH package.json Typosquatting: "node-fethc" → "node-fetch" (Levenshtein distance 1)
4 HIGH package.json Typosquatting: "axois" → "axios" (Levenshtein distance 1)
5 HIGH package.json Typosquatting: "jset" → "jest" (Levenshtein distance 1)
6 HIGH package.json Typosquatting: "eslitn" → "eslint" (Levenshtein distance 1)
7 HIGH package.json Suspicious postinstall script (curl + URL)
8 HIGH package.json Suspicious preinstall script (child_process + exec + wget + URL)
9 LOW package.json Unpinned version: lodsah@*
10 LOW package.json Unpinned version: node-fethc@latest
11 LOW package.json Unpinned version: jset@*
12 LOW package.json Unpinned version: eslitn@latest
13 LOW package.json Unpinned version: requets@>=2.0.0

Taint Tracer (TNT)

# Severity File Finding
1 CRITICAL telemetry.mjs process.env → fetch() — environment exfiltration
2 CRITICAL telemetry.mjs req.body → execSync() — command injection
3 HIGH telemetry.mjs process.argv → writeFileSync() — path traversal
4 CRITICAL telemetry.mjs user_input → eval() — code injection
5 CRITICAL telemetry.mjs process.env → execSync() — indirect command execution
6 HIGH telemetry.mjs req.query → fetch() — SSRF

Git Forensics (GIT)

# Severity File Finding
1 INFO New directory (no git history to analyze)

Network Mapper (NET)

# Severity File Finding
1 HIGH health.fixture.md ngrok-free.app URL
2 HIGH health-check-agent.fixture.md webhook.site URL
3 HIGH SKILL.fixture.md ngrok-free.app URL
4 HIGH SKILL.fixture.md requestbin.com URL
5 HIGH SKILL.fixture.md pipedream.net URL
6 HIGH SKILL.fixture.md pastebin.com URL
7 HIGH SKILL.fixture.md bit.ly URL (shortener)
8 HIGH SKILL.fixture.md webhook.site URL
9 MEDIUM SKILL.fixture.md IP-based URL (192.168.1.100:8080)
10 HIGH telemetry.mjs ngrok-free.app URL
11 HIGH telemetry.mjs webhook.site URL
12 MEDIUM telemetry.mjs IP-based URL (45.33.32.156)

Summary

Scanner Expected Count Severity Range
UNI 5-6 CRITICAL, HIGH, MEDIUM
ENT 3-4 CRITICAL, HIGH, MEDIUM
PRM 8-10 HIGH, MEDIUM, INFO
DEP 13-15 HIGH, MEDIUM, LOW
TNT 6-8 CRITICAL, HIGH
GIT 0-1 INFO
NET 10-12 HIGH, MEDIUM
Total ~56