Implements the detector Codex specified while it had no implementation to look at, so neither model defined and graded the same thing. Parser-level budgets rather than post-parse checks. Codex's architectural point was that inspecting after parsing is too late because the allocation already happened, so Limits and Budget enforce byte size, depth, node count, registered objects, symbol definitions, collection entries, scalar bytes and object links DURING recursive descent. The size ceiling is checked before the parser is constructed and non-String input is rejected without ever calling to_s. Three policies, STRICT_ALLOWLIST as the default, on the reasoning that people keep defaults far longer than they intend. No enforcing mode accepts an allowed_sinks option, because permitting a class-and-sink pair still authorizes a callback during load. OBSERVE_AND_LOG refuses to construct without a reporter. Allowlisting a class does NOT exempt its sinks, and that is a test. No method is named safe?, trusted?, sanitized? or safe_load, and a test asserts their absence. Those names claim a guarantee this cannot make. The gate demonstrates the documented bypass rather than asserting it. Under DENY_SINKS_ONLY the detector ACCEPTS the CVE-2026-41316 payload, and the gate then loads that accepted snapshot on vulnerable erb and confirms the canary fires. Our own detector, in a shipped mode, admits a payload that achieves code execution. That is the limitation notice being true rather than decorative, and if it ever stops being demonstrable the gate fails. The notice ships verbatim and names the bypass concretely: a payload carrying no sink tag can still reach dangerous code, the published chain produces zero sink tags because ERB defines no marshal_load, and an application that allowlists ERB will accept it. 106 tests, 235 assertions across four suites. Five gates: check, matrix, exploit, detector, target. |
||
|---|---|---|
| .. | ||
| detector-gate.sh | ||
| exploit-gate.sh | ||
| render_matrix.rb | ||
| target-gate.sh | ||
| version-matrix.sh | ||