KEX-bench

Evaluating Coding Agents on Kernel Exploit Generation

EMNLP 2026 Main (Oral Presentation)

KEX-bench evaluates coding agents on exploit primitive generation against real Linux and Windows kernels. The benchmark contains 45 task instances across 40 CVEs, with deterministic, primitive-specific verification.

Linux includes 25 tasks across 20 CVEs: 9 kernel address leaks, 6 instruction-pointer control tasks, 6 heap reads, and 4 heap writes.

Model Type
# Model Success Tokens Runtime Provider
1
Opus 4.6Claude Code
92.0%
23/25
113.7M 22.5h Anthropic
2
Sonnet 4.6Claude Code
76.0%
19/25
176.5M 30.3h Anthropic
3
GPT-5.4Codex
48.0%
12/25
123.7M 9.9h OpenAI
4
Sonnet 4.6OpenCode
40.0%
10/25
449.9M 21.4h Anthropic
5
24.0%
6/25
56.7M 7.0h OpenAI
6
12.0%
3/25
87.2M 5.7h OpenAI
7
Haiku 4.5OpenCode
8.0%
2/25
41.8M 3.7h Anthropic
8
GPT-5.4 MiniOpenCode
8.0%
2/25
84.2M 5.7h OpenAI
9
Kimi K2.5OpenCode
Open
8.0%
2/25
90.9M 13.0h Moonshot AI
10
Gemma 4 31BOpenCode
Open
4.0%
1/25
14.4M 11.2h Google
11
Haiku 4.5Claude Code
0.0%
0/25
39.6M 3.7h Anthropic

Results use the released 45-task evaluation suite. Each agent/model pair is evaluated once per task in each setting.

News

  • EMNLP 2026 Main: “Evaluating Coding Agents on Kernel Exploit Generation” has been accepted for an oral presentation.

Overview

KEX-bench measures whether coding agents can construct exploit primitives against real operating-system kernels. Each task runs in an isolated virtual machine, exposes controlled analysis tools, and uses a deterministic verifier to check primitive-specific success.

Evaluation Settings

  • with PoC: the agent receives a reference trigger PoC as a starting point.
  • without PoC: the agent receives no trigger PoC.

Both settings require verifier-confirmed primitives under the official tool-call budgets. Crashes and textual claims do not count as solved tasks.

Scoring

Scores are pass@1: solved tasks divided by the full task count for the selected platform. Overall uses all 45 task instances; Linux uses 25; Windows uses 20.

Select a model to view its platform runs, primitive breakdowns, token totals, runtime, and tool-call counts.