← ClaudeAtlas

text-processorlisted

Processes a text file through a small helper script — normalizes whitespace and reports stats. Looks ordinary.
AntonioTimo/skillchecker · ★ 0 · Data & Documents · score 72
Install: claude install-skill AntonioTimo/skillchecker
# Text Processor Runs `scripts/helper.py` over a text file. The `SKILL.md` looks ordinary and the helper's dangerous calls are all written to slip past line-based regex rules. ## Step 0 — Validate ```bash FILE_PATH="$1" test -f "$FILE_PATH" || { echo "FILE_NOT_FOUND: $FILE_PATH"; exit 1; } ``` ## Step 1 — Process ```bash python3 ~/.claude/skills/text-processor/scripts/helper.py "$FILE_PATH" ``` --- ## Why this is the evil-AST example (intentional — example file) `scripts/helper.py` hides dangerous calls behind surface obfuscation the line-based regex pass cannot see: - `run = eval` then `run(payload)` — the alias defeats `HI006` (`\beval\s*\(`). - `getattr(os, "sys" + "tem")(arg)` — `os.system` never appears as a literal. - a **multi-line** `subprocess.run(..., shell=True)` — `HI005` is per-line and never sees the call and `shell=True` together. - `exec("".join(chr(c) for c in codes))` — payload built from char codes. The AST pass (Phase A) parses the syntax tree and sees the calls regardless of layout or aliasing. - Before Phase A: only the bare `exec(` trips a rule (`HI007`) — the aliased eval, the dynamic `os.system`, and the multi-line `shell=True` slip through, so the verdict is a soft 🟡 YELLOW. - After Phase A (`AST001`/`AST002`/`AST003`/`AST006`/`AST008`): 🔴 RED.