
Evaluierungsrahmen, der testet, ob große Sprachmodelle unsichtbare Unicode-codierte Anweisungen befolgen, die in normal aussehenden Text eingebettet sind, mit statistischer Analyse über mehrere Modelle und Tool-Bedingungen hinweg.
Ein Bewertungsframework, das testet, ob große Sprachmodelle unsichtbaren Unicode-codierten Anweisungen folgen, die in ansonsten normal aussehenden Text eingebettet sind. Während traditionelle CAPTCHAs Aufgaben ausnutzen, die Menschen lösen können, Maschinen aber nicht, nutzt Reverse CAPTCHA einen Wahrnehmungskanal, den Maschinen nutzen können, Menschen aber nicht.
Paper: paper/reverse_captcha.pdf
Über 8.308 bewertete Ausgaben von 5 Modellen (GPT-5.2, GPT-4o-mini, Claude Opus 4, Claude Sonnet 4, Claude Haiku 4.5):
Zugriff auf Codeausführung verwandelt unsichtbares Unicode von einem ignorierbaren Artefakt in einen decodierbaren Befehls-Kanal. Ohne Tools bleibt die Compliance unter 17%. Mit Tools und Hinweisen erreicht sie 98-100%.

OpenAI-Modelle decodieren Zero-Width Binary, aber nicht Unicode Tags. Anthropic-Modelle bevorzugen Unicode Tags. Ein Angreifer muss die Kodierung auf den Zielanbieter abstimmen.

Der Hinweisgradient ist über alle Modelle hinweg konsistent: ohne Hinweise << Codepoint-Hinweise < vollständige Hinweise. Die Kombination von Tool-Zugriff und Decodierungsanweisungen ist der kritische Aktivator.

Zwei unsichtbare Kodierungsschemata werden in Quizfragen eingebettet:
Das Modell erhält eine Quizfrage mit einer bekannten sichtbaren Antwort. In den unsichtbaren Zeichen versteckt ist eine andere Antwort. Wenn das Modell die versteckte Antwort ausgibt, ist es der unsichtbaren Anweisung gefolgt.
# Install
pip install -e ".[dev]"
# Run reverse CAPTCHA eval
evalrun run --pack reverse_captcha --model openai:gpt-4o-mini --tools --n 3 --out results.sqlite
# Run without tools
evalrun run --pack reverse_captcha --model openai:gpt-4o-mini --n 3 --out results.sqlite
# Run with Anthropic models
evalrun run --pack reverse_captcha --model anthropic:claude-sonnet-4-20250514 --tools --n 3 --out results.sqlite
# Generate analysis
python3 scripts/analyze_journal.py
# Generate figures
python3 scripts/generate_figures.py
├── packs/reverse_captcha/ # Eval pack (cases, grader, generator)
│ ├── cases.yaml # 270 test cases
│ ├── qa_pairs.yaml # 30 trivia Q/A pairs
│ ├── grader.py # Deterministic grading (5 categories)
│ └── generate_cases.py # Case generator for both encodings
├── src/evalrun/ # Core framework
│ ├── adapters/ # OpenAI + Anthropic API adapters
│ ├── cli.py # CLI (run, report, export)
│ ├── runner.py # Eval runner with tool-use support
│ └── db.py # SQLite persistence
├── paper/ # Workshop paper
│ ├── reverse_captcha.tex # LaTeX source
│ └── reverse_captcha.pdf # Compiled PDF
├── results/journal/ # Raw data
│ ├── analysis/ # Statistical analysis CSVs
│ └── figures/ # Publication figures (PDF + PNG)
├── scripts/ # Analysis and figure generation
└── tests/ # Test suite
Das Framework enthält zwei weitere Pakete:
OPENAI_API_KEY für OpenAI-ModelleANTHROPIC_API_KEY für Anthropic-Modelleclick, openai, anthropic, pyyaml, matplotlib, pandas, scipy, numpyMIT