verifying the code between untrusted programs and the system: eBPF, WebAssembly, network code (authored by agents unless marked đ§)
short version
- the eBPF verifier is mostly not verified; people verify slices of it, test it, or replace it
- the slices proved so far: range analysis (Agni), the bit-tracking domain (tnum), JITs (Jitterbug)
- path pruning and the remaining verifier stages are outside the reviewed component proofs
- path pruning skips executions judged already covered by an earlier analysis state
- inference: the âverified verifierâ is a patchwork of unrelated proofs, with no map of what remains
- testing found verifier bugs despite existing proofs of selected components
- Sun and Su found 15 new verifier bugs in one month; Agni found 27 in older kernels
- the Wasm sandbox has verified pieces but no verified chain
- pieces: mechanized semantics, verified instruction selection (Crocus, Arrival), binary checkers (VeriWasm, the LFI verifier), a verified runtime boundary (WaVe)
- this review did not find an end-to-end proof joining them
- verified parsing is the most mature part of network verification
- EverParse runs in Hyper-V; Vest, Verdict, VUPER are newer
- the new pattern: use the verified parser as a test oracle against other implementations (VUPER found 20 kinds of mismatch)
- verified full network stacks are thin
- last full-NF proof work I found is Vigor (SOSP 2019)
- QUIC work I found is spec-based testing (Ivy), not proof of the implementation
- ideas worth trying, best first
- classify every eBPF verifier bug fix by which proof would have covered it
- check hand-written XDP/eBPF packet parsers against EverParse/Vest formats
- extend a WaVe-style runtime proof to threads, in Verus
what the topic is, in plain words
- some code runs between untrusted code and the machine
- the eBPF verifier decides if a user program may run inside the Linux kernel
- a JIT compiler turns the accepted program into machine code
- a Wasm runtime or compiler keeps a Wasm module inside its own memory
- a packet parser decides what bytes from the network mean
- if this code is wrong, the attacker gets the kernel or the host
- so it is a good place to spend proof effort
- the inputs are hostile and the code is small compared to the system
- but the specs are hard: âsafeâ must be defined, and the verifier is usually a static analyzer, not a simple function
- network configuration verification (Batfish and friends) checks router configs, not code
- section (d) below covers where it touches implementation proofs
scope notes
- already covered, so only pointed to here
- OS kernels: os_kernels.md
- compiler checking in general: compilers.md
- crypto and secure protocol code: crypto.md
- distributed protocols: distributed_protocols.md
- Vest, Verdict, OwlC, WaVe (one paragraph each): verified_systems.md
- the humanâs notes on static analysis: static_analysis.md
- labels: fact = from the source text I opened; claim = authors say so; inference = mine
- âopenedâ means I read the paper text or its official abstract page; âsearch onlyâ means I saw it in a search result and did not open it
- I copied the PDFs I opened into the paper collection
(a) eBPF: verifier, JITs, replacements
proofs about the JIT
- Jitterbug, Nelson, Van Geffen, Torlak, Wang, OSDI 2020, peer reviewed, opened full text
- usenix page
- fact: a spec of JIT correctness plus an automated proof strategy; a new verified RV32 JIT; 16 new bugs found in five deployed JITs; all upstreamed
- fact: the authors counted â41 commits that fixed 82 JIT correctness bugsâ in the kernel history, and their spec catches all but two (both in offset-table construction)
- claim: âit is possible to build a verified component within a large, unverified system with careful design of specification and proof strategyâ
- limits, fact from §4.4
- âfocuses on the JIT and cannot rule out bugs in the BPF checker, memory management for code images, or how the kernel uses the JITâ
- assumptions about the JIT context are trusted; no instruction cache or timing model
- the spec admits a ânullâ JIT that rejects everything, so test suites still check feature coverage
- inference: the proof ends exactly where the verifier begins; the two proofs do not compose into âan accepted program is safeâ
- rBPF JIT in Coq, Yuan, Talpin and others, CAV 2024, search only
- claim, from a search summary: a âfully verified JIT implementation for RIOTâs rBPFâ
- targets a microcontroller VM, not Linux eBPF
proofs about the verifierâs numeric reasoning
- Agni, Vishwanathan, Shachnai, Narayana, Nagarakatte, CAV 2023, peer reviewed, opened full text
- project page
- fact: builds proof conditions from the kernelâs C code and checks them with an SMT solver
- fact: checks 16 kernel versions (4.14 to 5.19), found 27 previously unknown bugs, and proved range analysis sound in the latest version it checked
- fact: makes small eBPF programs (at most three instructions, about 97% of cases) that show where verifier and real behavior differ
- limits, fact from §7
- âOnly Range Analysis is Consideredâ
- multiplication is left out at 64 bits because the solver times out; it was only checked at 8 bits
- the C-to-SMT translation, LLVM and Z3 are trusted
- follow-ups from the same group (Rutgers), listed on the project page
- SAS 2024: fixing latent unsound operators; patches upstreamed
- SAS 2025, âComparing the Precision of Abstract Operatorsâ, opened abstract: a framework to compare operators and a more precise
bpf_multhat was upstreamed - eBPF workshop 2025: automatic synthesis of abstract operators (listed only; not opened)
- CGO 2022 tnum paper (Distinguished Paper): proofs for the bit-tracking domain (listed only; not opened)
- claim: the project aims at âstrong proofs of correctness guarantees for the entire eBPF verifierâ
- Formalizing the Linux eBPF Core ISA, Yuan, Tang, Cao, Besson, Talpin, Chen, OOPSLA 2026, peer reviewed, opened official page (presented 6 Oct 2026)
- paper
- fact: a small-step semantics in Rocq for âall 153 sequential in-kernel instructionsâ
- fact: validated against the Linux test suite, which exposed inconsistencies
- claim: proves the bit-level abstract domain sound; found new bugs; verifier optimizations merged upstream
- inference: this gives a base that Agniâs SMT-only approach lacks, because the semantics is in a proof assistant
- DPDK eBPF verifier, Khalili and Cauli (Huawei), DPDK Summit talk slides, 12-13 May 2026, not peer reviewed, opened slides
- fact: an LLM agent wrote harnesses for CBMC and ESBMC, and used Frama-C/WP for proofs; one property checked, âRange Invariant Preservationâ
- fact: slides report â15+ bugs, 27 functionsâ and â~3 hours to first resultsâ
- fact: the model checkers âTimed out on bitvector mul/divâ, the same wall Agni hit; Frama-C/WP converged on
eval_mulanddivmod - slide: âBug-finding â Proofâ
- inference: LLM-driven verification of an eBPF verifier is already happening, but one property at a time and on the smaller DPDK verifier, not Linuxâs
testing as the practical competitor
Validating the eBPF Verifier via State Embedding (SEV), Sun and Su, OSDI 2024, peer reviewed, opened
- fact: embeds concrete values from a run into the program as checks; if the verifier accepts the program yet a check fails, the verifierâs own tracking was wrong
- fact: âwithin one month, uncovered 15 previously unknown logic bugs, 10 of which have already been fixedâ; two let a local user gain privilege
- fact: they say they still found bugs âin the verified range analysisâ, so proofs of a slice do not clear the rest
- inference: running SEV on proved components can expose mismatches between proof scope and the implementation
- the reported bug counts do not establish an equal-effort comparison with proofs
bpfix, Zheng and others, arXiv July 2026, preprint, opened abstract
- fact: 235 reproduced rejections, â47% of rejections return only EINVALâ, one error string maps to up to nine causes
- fact: LLM repair gets 0 to 37% one-shot success on 75 tasks; with bpfix localization it gains 11 to 21 points
- this is about usability of the verifier, not soundness; it shows the cost of false rejections
-
- primary-source depth: official abstract checked; full paper and artifact not inspected in this follow-up
- method: insert runtime checks that stop an extension when its actual state leaves the states predicted by the verifier
- the complicated state prediction can then be wrong without silently allowing an unchecked memory access
- simpler verifier safety checks and the inserted enforcement remain trusted
- authors claim spatial memory safety under this smaller trusted boundary
- abstract: âformally prove its soundnessâ
- spatial memory safety concerns accesses staying inside permitted memory regions
- authors report 4.5Ă smaller trusted code, 1.2% average runtime overhead, and 4.8% average binary growth
- measurements describe their prototype and workloads
- results were not reproduced here
- limit: this is not a proof of the entire Linux verifier or of every property an eBPF program should satisfy
- implication: runtime enforcement is another direct alternative to proving or replacing the whole verifier
- inspect this paper before proposing a new way to reduce trust in verifier state prediction
replacing or moving the checker
- Rex, Jia and others, USENIX ATC 2025, peer reviewed, opened abstract and TCB section
- paper
- fact: extensions written in safe Rust, no in-kernel verifier; a small runtime handles exceptions, stack, termination
- fact: the TCB becomes âthe Rust toolchain, the Rex kernel crateâ and more
- claim: closes the âlanguage-verifier gapâ, where a safe program is rejected by the verifier
- inference: this changes the trusted boundary to a compiler and runtime; the paper does not prove Rexâs own safety
- Heimdall, Dasu, Santra and others (Gang Tanâs group), arXiv May 2026 (v2 August), preprint, opened abstract and limits
- paper
- fact: translates C eBPF to Rust (Aya); â109 formally proven-equivalent translations (94.8%)â of 115 programs, using symbolic execution and Z3
- fact: ânine classes of source-level bugs that compile, pass the kernel verifier, and can silently corrupt data, leak kernel memoryâ; nine real bugs found, eight acknowledged and fixed
- limits, fact from §7: path cap of 50,000; 56 helper stubs; 6 of 115 time out; atomicity check is âa coarse heuristicâ
- it says the verifier is not enough for program-level bugs: a program can be memory-safe and still leak
- Kops, Zheng and others, arXiv June 2026, preprint, opened abstract
- fact: adds native operations to the eBPF pipeline; Lean 4 proofs that each native instruction sequence matches its eBPF âproof sequenceâ
- claim: âthe native emit is the only per-operation addition to the TCBâ
- fact: up to 24% faster in microbenchmarks, up to 12% in applications
- inference: this is the first design I found where the JIT-side proof (Lean, in Jitterbugâs style) is tied to a change in what the verifier checks
- Proof-Carrying Verification for eBPF, Martin Fink (TU Munich), Linux Plumbers Conference, 5 Oct 2026, talk abstract only, opened
- page
- claim: âan untrusted userspace proof generator analyzes the program, discovers invariants, and uses an SMT solver to discharge safety obligationsâ; kernel checks with âa restricted set of eBPF-specific reasoning rulesâ
- the speakers ask whether âmaintaining a shared safety policy between generator and checker is practical long-termâ
- inference: this is PREVAILâs ancestor idea (below) with certificates; no paper yet that I could find
- PREVAIL, Gershuni and others, PLDI 2019, peer reviewed, search only
- claim, from the search summary: a static analyzer using the Zone domain that âgenerates no more false alarms than the existing Linux verifierâ, supports loops, and has better complexity
- it is not a proof of the analyzer; a competing analyzer in the same sense as the kernelâs
(b) WebAssembly and software sandboxes
the runtime boundary
- WaVe, Johnson, Laufer, Zhao, Gohman, Narayan, Savage, Stefan, Brown, IEEE S&P 2023, peer reviewed, opened full text
- already summarized in verified_systems.md; here only the numbers I checked
- fact: runtime is â7264 linesâ, with 4646 runtime lines and 1261 proof lines checked by Prusti
- fact: the trusted part is 1357 lines: safety policy 43, OS spec 567 (Linux and macOS), verifier definitions 227, and 548 lines of Prusti extensions
- fact: hostcalls cost 1.1x to 4.07x (mean 2.16x) over raw syscalls, against 1.61x to 3.69x for Wasmtime
- claim: âcompletely removing the runtime from the trusted computing baseâ
- limits, fact from §9: no safety âif a single sandbox is running multiple threadsâ; the loader is outside the proof
- fact: the OS spec is checked by fuzzing, not by proof, so it is trusted
- WAW 2025 talk, Deian Stefan, âRemoving the runtime from the TCB and other adventures in making Wasm fast and more secureâ, POPL workshop, talk abstract only
- page
- claim: shows the TCB shrinking with WaVe plus âsimple hardware extensionsâ
checking compiled code
- VeriWasm, Johnson, Thien, Alhessi, Narayan, Brown, Lerner, Savage, Stefan, McMullen, NDSS 2021, peer reviewed, opened official page
- fact: a static offline verifier for x86-64 binaries compiled from Wasm
- claim: âdetects isolation breaches without false positivesâ; deployed at Fastly
- inference: it checks compiler output after the fact, so a compiler bug is caught only for the binaries you check
- Automated Formal Verification of a Software Fault Isolation System, Sotoudeh and Yedidia, FMCAD 2025 short paper, opened abstract and method
- paper
- fact: proves âprograms accepted by the LFI verifier never read or write to memory outside of a designated sandbox regionâ
- fact: the only manual input is an SFI invariant of about 20 lines of SMT-LIB2
- fact: covers only the LFI verifier; the paper assumes a memory layout set by the LFI runtime
- LFI (Yedidia, ASPLOS 2024, search only) reports 7% overhead on a SPEC 2017 subset; I did not open it
- inference: verifying this small checker could complement compiler proofs
- Jitterbug instead proves JIT correctness
checking the compilerâs instruction selection
- Crocus, VanHattum and others, ASPLOS 2024, peer reviewed, search only
- claim, from the search summary: verifies Craneliftâs ISLE rules for Wasm 1.0 integer ops on AArch64 with an SMT solver; âreproducing 3 known bugs (including a 9.9/10 severity CVE)â and finding 2 new bugs
- I did not open the paper
- Arrival, McLoughlin, Sheng, Fallin, Parno, Brown, VanHattum, OOPSLA 2025, peer reviewed, opened official page
- paper
- claim: â2.6X fewer hand-written specifications than prior approachesâ; finds new Cranelift bugs; derives machine code specs automatically
- I only saw the summary; limits unknown
- real CVEs, from search results (advisories, not opened): Cranelift CVE-2023-26489 computed a 35-bit address where Wasm requires 33 bits, so a Wasm load could reach outside linear memory
- inference: this is the exact kind of bug Crocus and Arrival target, which is why they are the best-motivated work here
semantics and program logics
- WasmCert-Isabelle and WasmCert-Coq (Watt and others, CPP 2021); WasmRef-Isabelle (PLDI 2023), search only
- claim, from search summary: a verified interpreter in Isabelle used as a fuzzing oracle in Wasmtimeâs CI
- this is the Wasm version of âproof as test oracleâ
- Iris-WasmFX, Legoupil, Pedersen, Birkedal, Lindley, Pichon-Pharabod, PLDI 2026, peer reviewed, opened abstract
- fact: a Rocq mechanization of the stack-switching proposal (WasmFX) with a type soundness proof, and a program logic proved sound against it
- fact: used on a coroutine library and a generator
- this is about the language, not a sandbox runtime
- CHC-based Automated Verification of WebAssembly Programs, Yagi, Sakayori, Kobayashi, HCVS 2026 workshop, arXiv July 2026, opened abstract
- fact: verifies Wasm programs with constrained Horn clauses; the abstract says only âpreliminary experimentsâ
- no numbers; I would not rely on it yet
what I did not find
- a verified Wasm runtime for Linux that proves the JIT output matches the Wasm spec, plus the sandbox boundary
- Wasmtime relies on Cranelift checks (fuzzing and Crocus-style rule checks), not a whole-pipeline proof (inference)
(c) network functions, parsers, stacks, protocols
verified parsers
- EverParse in Hyper-V, Microsoft Research blog, opened
- post
- fact: about 30,000 lines of verified C for âover a hundred different message typesâ across four layers of the virtual switch
- claim: the generated parsers are memory safe, correct, and free of double fetches (reading the same packet byte twice and getting different values)
- industry_use.md mentions EverParse; I did not open the 2019 EverParse paper itself
- not peer reviewed (company blog); the peer-reviewed sources are the EverParse papers
- Vest and Verdict: see verified_systems.md
- VUPER, Zhou, Tu, Ranjbar, Dong, Tan, Hussain, CCS 2026 (extended version on arXiv, August 2026), opened
- paper
- fact: a verified ASN.1 UPER parser in Rocq, extracted to OCaml, plus a compiler from ASN.1 definitions and a test framework
- fact: tested 11 parsers (7 open source, 4 commercial) on 5G and V2X; found â20 types of inconsistencies in popular parsersâ and built attacks
- limit: the proof trusts Rocqâs extraction
- inference: the new thing is not the proof, it is the oracle use; one verified parser turned into a bug finder for the rest
- Access Control as Verified Parse Constraints, Iammongkol, Huang, Eyers, arXiv September 2026, preprint, opened abstract
- paper
- claim: âa forward-only, backtrack-free EverParse validator is a verified recognizer for a bounded, finite-state classâ; the policy check becomes parsing
- limit: assumes the C compiler; only âbounded policy languages with fixed-offset fields and bounded disjunctionâ; does not check the policy itself
- runs on seL4
- inference: an unusual use of a parser verifier as a policy enforcer; useful as a pattern for an eBPF or Wasm host-call filter
verified network functions and stacks
- Vigor, Zaostrovnykh, Pirelli, Iyer, Rizzo, Pedrosa, Argyraki, Candea, SOSP 2019, peer reviewed, opened abstract only (EPFL record)
- fact: NFs written in C on a packet framework with a verified data-structure library; specs in Python; âpush-buttonâ proof
- fact: five NFs (NAT, Maglev load balancer, MAC-learning bridge, firewall, traffic policer) shown to meet standards-derived specs, be memory safe, not crash or hang
- claim: âthe entire software stack is verified, down to the hardwareâ
- note: the first Vigor results are sometimes dated 2017; the EPFL record I opened says SOSP 2019
- I did not read the trusted-base section, so what is assumed (drivers, hardware model) is unchecked
- Verifying QUIC implementations using Ivy, Crochet, Rousseaux, Sambon, Piraux, Legay, arXiv March 2025, preprint, opened abstract
- paper
- fact: extends a formal spec from QUIC draft-18 to draft-29 and tests seven implementations
- fact: the work found ambiguities in the spec
- this is testing against a formal spec, not a proof of an implementation
- Rust network stacks: LwRustIP and smoltcp appeared in search results; I found no proof work on either
- the Kani report on s2n-quic is covered in verified_systems.md
other items near this
- cryptographic protocol Rust code with Hax and F*: crypto.md
- distributed protocols and the proof-to-code gap: distributed_protocols.md
(d) network configuration and control plane
- CB-Ver, Zhang, Alberdingk Thijm, Walker, Gupta, FMCAD 2026, peer reviewed, opened abstract
- paper
- fact: modular verification of properties that âeventually stabilizeâ; it âchecks the necessary component-by-component requirements in parallel using an SMT solverâ
- fact: the verification algorithm is formalized and proved sound in Lean
- this checks network configurations; Agni instead verifies range-analysis properties through a trusted C-to-SMT translation
- not implementation verification: the router software is outside the model
- Batfish, Minesweeper, Lightyear, Hoyan: seen in search results only, not opened
- Lightyear on arXiv (search result)
- inference: the connection to this study is that config checkers assume the router implements BGP as modeled; no work I found checks that assumption against code
what is missing
- no map of eBPF verifier coverage
- evidence: Agni says it covers âOnly Range Analysisâ; Sun and Su found bugs even in the proved range analysis; Jitterbug leaves out the checker; I found no paper that sorts verifier bugs by which proof would have caught them
- path pruning, pointer typing, and the verifierâs treatment of helper functions have no proofs I could find
- evidence: the Rutgers page says the group looks at âpath-exploration logicâ but lists no finished paper on it
- this review did not find an end-to-end Wasm proof from specification to machine code
- evidence: pieces exist (WasmCert, Crocus, Arrival, VeriWasm, LFI proof, WaVe), and WaVe says multi-thread sandboxes are out of scope
- no study of the cost of false rejections against the cost of unsound acceptance, in proof terms
- evidence: bpfix measures rejections; the proofs measure soundness; the inspected sources do not join them
- I did not find a production TCP, QUIC, or TLS implementation proof within the searches listed below
- evidence: in my search, QUIC work was spec-based testing (Ivy); Vigor is the latest full-NF proof I found
- caveat: broad search was patchy; I did not search for seL4 network stacks or HACL-style TLS beyond crypto.md
- proofs about program bugs that the verifier accepts
- evidence: Heimdallâs nine bug classes pass the verifier
research we can do
- a verifier-bug coverage map
- question: of all fixed Linux eBPF verifier bugs, which would a proof of range analysis, of tnum, of path pruning, or of the JIT have prevented?
- builds on
- Agni (what its proofs cover)
- Sun and Su (bugs found anyway)
- Jitterbug (its own count of 82 JIT bugs)
- what is new: a bug corpus labeled by the proof that would cover it, over 2019 to 2026
- why it may matter: it tells proof teams where the remaining risk is, and whether the next proof should be path pruning or something else
- first experiment: mine âbpf: fixâ commits with a verifier or JIT tag; label 200 by component; ask two people to label independently and measure agreement
- convincing result: a table such that one unproved component holds a large share (say over a third) of the fixes that look like soundness problems
- cost: about two weeks of one person; labeling is the work
- scoop risk: the Rutgers group, or any kernel-security survey; I have not seen this exact study
- inference: a label like âsoundness bugâ will be argued over; keep the rule written down
- generated packet parsers that the kernel verifier accepts
- question: can EverParse or Vest formats generate XDP/eBPF parsing code that passes the verifier, and does it catch bugs in hand-written eBPF parsers?
- builds on
- Vest in verified_systems.md
- EverParse
- Heimdall (program-level bugs that pass the verifier)
- VUPER (parser as oracle)
- what is new: the verified parser is used both as the generated code and as the oracle against hand-written eBPF
- EverParse emits C; the verifier wants bounded loops and checked offsets, so there is a real compile-to-verifier step to design
- why it may matter: packet parsing is where many eBPF programs spend their code, and the verifier only checks safety, not whether the parse is right
- first experiment: take 20 open-source XDP programs that parse IPv4/IPv6/TCP/TLS headers; write the formats once; run differential tests of each program against the verified parser on a fuzz corpus; count mismatches
- convincing result: real disagreements in programs that the verifier accepted, and a generated parser that loads and runs at near the same speed
- cost: about 4 to 6 weeks
- scoop risk: Heimdallâs group (Gang Tan also co-wrote VUPER) is close; so are Vest authors
- inference: I did not check how many XDP programs hand-parse; that count decides if the experiment is worth it
- WaVe-style runtime proof with threads, in Verus
- question: can the hostcall boundary of a Wasm runtime be proved safe when one sandbox runs several threads?
- builds on
- WaVe (the single-thread proof and its stated limit)
- Verus systems work
- the Wasm threads proposal
- what is new: the thread case, which WaVe lists as outside the proof, and a time-of-check to time-of-use argument (a bug where state changes between a check and its use)
- why it may matter: threaded runtimes need guarantees beyond the reviewed single-thread proof
- first experiment: port the hostcalls that touch paths (
path_open,fd_read) to Verus; add a second thread that races on file descriptors; see which WaVe invariants break - convincing result: a proof of the fd-table invariants under races, with overhead below WaVeâs mean of 2.16x on hostcalls
- cost: 2 to 3 months; the OS specification is the hard part
- scoop risk: the original WaVe group (UCSD, CMU)
- caveat: WaVeâs fd-table and path-translation code are the parts the paper says are tricky; I have not read the code
- certificates for eBPF checked by a small verified checker
- question: how small can a checker be, if an untrusted prover supplies the invariants, and can the checker be proved against a real ISA semantics?
- builds on
- Finkâs talk (the design)
- Yuan and othersâ Rocq semantics (the spec to prove against)
- Kops (Lean proofs tied to the verifier)
- PREVAIL (the analyzer that can serve as prover)
- what is new: a checker with a soundness proof, with LLM-written or PREVAIL-written invariants as the untrusted input
- why it may matter: it turns the âverifier is large and unprovedâ problem into âchecker is small and provedâ, the move that worked for LFI
- first experiment: a checker for straight-line plus bounded-loop programs only, in Rocq or Lean, proved against the 153-instruction semantics; check the 200 smallest programs in the kernel selftests
- convincing result: the checker accepts at least what the kernel accepts on the selftests and rejects all known verifier-bypass proof-of-concept programs
- cost: 4 to 6 months; the semantics for helper calls and maps is the cost
- scoop risk: high, from the TU Munich group and the Zhejiang/Inria group
- inference: I would only do this with a partner from the Rocq semantics group
what I would try first
- idea 1, because it costs two weeks and gives targets for ideas 2 and 4; then idea 2
what I searched
- queries (web search and page fetch; arXiv, USENIX, ACM, SPLASH, LPC, DPDK, project pages)
- âeBPF verifier formal verification 2026â
- âWebAssembly formally verified runtime compiler sandbox 2025 2026â
- âverified network function packet parser formal verification 2025 2026 Verus EverParse Vigorâ
- Agni, Jitterbug, Crocus, Arrival, VeriWasm, WaVe, PREVAIL, Rex, Heimdall, Vigor by name
- âformally verified TCP stack or QUICâ, âverified Rust network stack smoltcpâ, ânetwork configuration verification 2025 2026â, âWebAssembly mechanized semantics Isabelle Rocq 2025 2026â, âLLM eBPF program synthesis verifierâ, âLightweight Fault Isolationâ
- sources opened: Jitterbug, Agni CAV, SEV (OSDI 2024), SAS 2025 precision paper, WaVe, Iris-WasmFX, LFI verification paper, Rex, Heimdall, VUPER, Access Control paper, Kops, bpfix, CB-Ver, Ivy QUIC (abstract), eBPF ISA formalization (official page), Arrival (official page), VeriWasm (official page), Vigor (abstract), EverParse (blog), CHC Wasm (abstract), DPDK slides, LPC talk page
- that is about 24 sources; about 14 were read beyond the abstract (Jitterbug, Agni, SEV, SAS 2025, WaVe, Heimdall, VUPER, LFI verification, Rex, DPDK slides, Iris-WasmFX, and parts of others)
- seen in search results only (not opened): PREVAIL, Crocus, CAV 2024 rBPF JIT, WasmRef-Isabelle and WasmCert, LFI (ASPLOS 2024), Lightyear, Batfish, Minesweeper, Hoyan, Cranelift CVE advisories, LwRustIP, smoltcp, SOSP 2025 âProve It to the Kernelâ
- Prove It to the Kernel: Precise Extension Analysis via Proof-Guided Abstraction Refinement, Hao Sun and Zhendong Su
- official SOSP 2025 program confirms its identity and venue
- ACM full text remained blocked by a challenge page during the October 8 follow-up
- retrieved secondary metadata describes externally generated proofs checked in the kernel
- not used as evidence for its exact method or results without the primary text
- direct closest-work gap before proposing proof-guided eBPF refinement
- Prove It to the Kernel: Precise Extension Analysis via Proof-Guided Abstraction Refinement, Hao Sun and Zhendong Su
- not covered
- the newest (2026) work on Cranelift register allocation checking, TLS/QUIC parsers in the Everest line beyond the EverParse blog, P4 and SmartNIC verification (only Petr4 appeared), seL4-based network stacks, DNS and BGP implementation proofs, Windows eBPF verifier work beyond PREVAIL, the eBPF âServalâ line (mentioned in Heimdallâs related work, not opened)
- proofs and benchmark numbers were not reproduced
- paper collection
- added opened PDFs: Jitterbug, Agni (CAV), SEV, SAS 2025 precision, Iris-WasmFX, LFI verification, Kops, bpfix, Heimdall, VUPER, Access Control, CB-Ver, Rex, Ivy QUIC; WaVe was already there
- not added: papers I did not open
Last edited: