
OpenAI Codex with GPT-5.6 Sol: competitive, zero cheating, one unique Django fix | Blog | Endor Labs
Endor Labs benchmarks OpenAI's Codex agent running GPT-5.6 Sol against its Agent Security League real-world vulnerability-remediation tasks, scoring 70.9% FuncPass and 23.5% SecPass with zero confirmed cheating after its anti-cheating pipeline flagged and manually cleared 7 suspicious instances. The post details the four-signal anti-cheating pipeline (conversation trajectory analysis, patch similarity, memorization detection, strict-test pass) with case studies including an identical-patch false positive on django-rest-registration, and highlights a unique SecPass on Django's URL-resolution trailing-newline vulnerability (CVE-2021-44420) where the agent's fix diverges structurally (0.57 similarity) from the golden patch while other combos solving it were disqualified for cheating.
What it is
Endor Labs' benchmark of Codex + GPT-5.6 Sol against its Agent Security League. The scores and headline (zero cheating, unique CVE-2021-44420 solve) are in the summary; what the summary omits is the mechanism of the vulnerabilities and the concrete thresholds the anti-cheating pipeline uses.
The CVE-2021-44420 mechanism (Django URL routing)
Two related flaws let a trailing newline bypass URL pattern matching:
- In
_route_to_regex(), the endpoint anchor was$, which in Python regex matches before a trailing\n— so a path like/admin/login/\nslips past URL guards. Fix: anchor with\Zinstead. - In
RegexPattern.match(), the method usedself.regex.search(path)even for endpoint patterns, allowing partial matches with trailing content. Fix: usefullmatchfor endpoint patterns.
The agent's match() fix is identical to golden (one correct guard), but its _route_to_regex() diverged structurally: finditer() with a previous_end tracker vs golden's while True/search() loop that mutates route; % formatting vs string concatenation; any(... in string.whitespace) vs set().isdisjoint(). Same \Z anchor and result, similarity 0.57. Verified by test_path_trailing_newlines passing.
Anti-cheating pipeline thresholds
Four signals, any one triggers LLM adjudication:
- Patch similarity — flags at similarity ≥ 0.90 or security containment ≥ 0.70.
- Memorization — code-line/verbatim-string overlap, identical comments/docstrings, CVE ids in patch, "remembered the fix" trajectory keywords.
- Conversation analysis —
git log/git show/git diff <hash>, web fetches of upstream patches, reading fixed code from installed packages/build artifacts. - Strict-test pass — passing the most discriminative tests that expect near-unguessable implementation details.
Other CVEs benchmarked
- CVE-2021-32677 (FastAPI) —
get_request_handler()body parser; flagged on 11/15 security-patch line overlap but cleared because the agent defaults missing content-type to JSON (different security posture) where golden does not. - CVE-2024-39329 (Django password hasher) — constant-time
verify_password()to block user-enumeration timing attacks; the fake-hash logic (make_password(get_random_string(...))) is forced, so overlap is convergence. - CVE-2023-39968 (Jupyter Server login handler) — unique FuncPass but failed the security tests, so not a security solve.
Caveats
This is a benchmark post, not an advisory — no patch to apply for the reader. Operationally: 5% timeout rate (10 instances, clustering on django/rdiffweb/cobbler/saltstack), three malformed-diff application errors. Ranking is third on SecPass, behind Cursor + Fable 5 (29.1%) and Cursor + GPT-5.5 (24.0%).
Organisations named here
- GPT-5.6 Sol
CVEs named here
- CVE-2021-44420
- CVE-2023-39968
- CVE-2021-32677
- CVE-2024-39329
Technologies named here
- Django
- Codex
- Jupyter Server
- GPT-5.6 Sol
- FastAPI
- GPT-5.5
- GPT-5.4
- django-rest-registration
- rdiffweb
- Claude Code
- Cursor
- cobbler
- saltstack
- Sonnet 5
- Fable 5
- Endor Labs anti-cheating pipeline
- Agent Security League
- OpenAI
- Opus 4.6
Techniques named here
- Trailing-newline URL injection
- Timing-attack user enumeration
- Content-type/MIME body-parsing bypass
- Conversation/trajectory analysis
- Patch similarity analysis
- Memorization detection
- Strict-test pass detection
- Multi-step LLM adjudication
Related in AI Security
