• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Alan-Jowett / ebpf-verifier
87%

Build:
DEFAULT BRANCH: main
Repo Added 18 May 2022 08:38PM UTC
Files 79
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH main
branch: SELECT
CHANGE BRANCH
x
  • No branch selected
  • dependabot/github_actions/actions/checkout-6
  • dependabot/github_actions/softprops/action-gh-release-3
  • dependabot/submodules/ebpf-samples-6a81f8e
  • dependabot/submodules/external/bpf_conformance-11c237b
  • dependabot/submodules/external/bpf_conformance-151bcd7
  • dependabot/submodules/external/bpf_conformance-15e0553
  • dependabot/submodules/external/bpf_conformance-28ddd7f
  • dependabot/submodules/external/bpf_conformance-318cc3b
  • dependabot/submodules/external/bpf_conformance-394a188
  • dependabot/submodules/external/bpf_conformance-514fa97
  • dependabot/submodules/external/bpf_conformance-5c5c4a8
  • dependabot/submodules/external/bpf_conformance-5df55bc
  • dependabot/submodules/external/bpf_conformance-6247cdd
  • dependabot/submodules/external/bpf_conformance-8b5330d
  • dependabot/submodules/external/bpf_conformance-8e6ed4a
  • dependabot/submodules/external/bpf_conformance-bb9f745
  • dependabot/submodules/external/bpf_conformance-cca727c
  • dependabot/submodules/external/bpf_conformance-e208f52
  • dependabot/submodules/external/bpf_conformance-e271c76
  • dependabot/submodules/external/bpf_conformance-f558566
  • dependabot/submodules/external/bpf_conformance-ff36a50
  • dependabot/submodules/external/libbtf-0570bf0
  • dependabot/submodules/external/libbtf-08ae1af
  • dependabot/submodules/external/libbtf-21f05ef
  • dependabot/submodules/external/libbtf-2517e6c
  • dependabot/submodules/external/libbtf-3c0cbd6
  • dependabot/submodules/external/libbtf-3c2012b
  • dependabot/submodules/external/libbtf-55c22b7
  • dependabot/submodules/external/libbtf-6a09e51
  • dependabot/submodules/external/libbtf-6be26ec
  • dependabot/submodules/external/libbtf-7c29af8
  • dependabot/submodules/external/libbtf-846bf15
  • dependabot/submodules/external/libbtf-ba5ab5e
  • dependabot/submodules/external/libbtf-d6d87ae
  • dependabot/submodules/external/libbtf-db73a3f
  • dependabot/submodules/external/libbtf-e1e4e01
  • dependabot/submodules/external/libbtf-e3a95e2
  • dependabot/submodules/external/libbtf-e437bd8
  • dependabot/submodules/external/libbtf-f3864e6
  • dependabot/submodules/external/libbtf-f96afc3
  • failure-slice
  • fix-issue-626-validmapkeyvalue-print
  • fix-ub-radix-substr
  • issue-728-observation-check
  • llm-context-doc
  • main
  • refs/heads/main
  • test/rfc9669-llm-conformance
  • verifier_fuzzing_support

27 Jul 2026 07:29AM UTC coverage: 86.764% (+0.1%) from 86.649%
30559636792

push

github

elazarg
Fix 32-bit soundness holes that let unsafe programs pass verification

Two independent classes of ALU32/JMP32 unsoundness allowed a crafted program to
be accepted while performing an out-of-bounds stack access.

MOVSX: the no-op fast path returned early for `wX sN= wX`, skipping the
zero-extension applied at the end of the function. The verifier kept a
sign-extended 64-bit value where the CPU produces a zero-extended 32-bit one, so
`r1 = r10; r2 = -1; w2 s8= r2; r1 += r2` was analyzed as r10 - 1 while the CPU
computes r10 + 0xFFFFFFFF, and the resulting out-of-bounds store was proved
in-bounds. The verifier already contradicted itself here: with r1 = -1,
`w2 s8= r1` yielded 0xFFFFFFFF but `w2 s8= r2` yielded -1 for the same operation
and input. Guard the fast path with bin.is64; the 64-bit form remains a no-op.

32-bit compares: the helpers emitted constraints over the 64-bit svalue/uvalue
variables after testing only the truncated 32-bit views. When a register's
64-bit value falls outside the 32-bit range those views say nothing about how the
64-bit variables are ordered, so branches that concrete executions do take were
proved dead, and unsafe code on them was never checked. Test the 64-bit intervals
instead, falling back to the existing no-constraint case. Precision is unchanged
for registers holding genuine 32-bit values, since the comparison itself pins the
operand's sign in the branches that assert one.

assume_unsigned_32bit_lt already guarded every branch this way, which is why only
the >, >=, s<, s<=, s> and s>= paths were affected.

Also drop the interval parameters these helpers no longer read.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Elazar Gershuni <elazarg@gmail.com>

19 of 19 new or added lines in 2 files covered. (100.0%)

107 existing lines in 5 files now uncovered.

9328 of 10751 relevant lines covered (86.76%)

6280124.66 hits per line

Relevant lines Covered
Build:
Build:
10751 RELEVANT LINES 9328 COVERED LINES
6280124.66 HITS PER LINE
Source Files on main
  • Tree
  • List 79
  • Changed 10
  • Source Changed 9
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
30559636792 main Fix 32-bit soundness holes that let unsafe programs pass verification Two independent classes of ALU32/JMP32 unsoundness allowed a crafted program to be accepted while performing an out-of-bounds stack access. MOVSX: the no-op fast path returned... push 30 Jul 2026 04:38PM UTC elazarg github
86.76
29279923487 main Drive sample verification tests from the inventory; parallelize CI (#1195) Full-program verification of the ebpf-samples corpus was 17 C++ files generated by scripts/generate_verify_project_tests.py from test-data/elf_inventory.json, then compile... push 13 Jul 2026 07:59PM UTC web-flow github
86.65
28137986881 main Bump actions/checkout from 6 to 7 Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)... push 25 Jun 2026 12:28AM UTC elazarg github
86.39
27778108035 main Release v0.2.5 Bump project version to 0.2.5 and add a CHANGELOG entry covering ELF loader hardening, numeric-domain soundness fixes, and the writable helper output initialization documentation update since v0.2.4. Also updates the using_installe... push 18 Jun 2026 06:03PM UTC elazarg github
86.39
24597451955 dependabot/github_actions/softprops/action-gh-release-3 Merge f9467a679 into b9010eee4 Pull #177 18 Apr 2026 05:13AM UTC web-flow github
88.98
23971858946 dependabot/submodules/external/libbtf-6a09e51 Merge 8edcac58e into b9010eee4 Pull #176 04 Apr 2026 05:14AM UTC web-flow github
88.98
23971858138 dependabot/submodules/external/bpf_conformance-f558566 Merge 79078ef91 into b9010eee4 Pull #175 04 Apr 2026 05:12AM UTC web-flow github
88.98
23372535569 dependabot/submodules/external/libbtf-0570bf0 Merge b6d9862d0 into b9010eee4 Pull #173 21 Mar 2026 05:13AM UTC web-flow github
88.98
23372536310 dependabot/submodules/external/bpf_conformance-15e0553 Merge d9b74c65c into b9010eee4 Pull #174 21 Mar 2026 05:12AM UTC web-flow github
88.98
23080970838 dependabot/submodules/external/bpf_conformance-8e6ed4a Merge 60d05c8d9 into b9010eee4 Pull #171 14 Mar 2026 05:12AM UTC web-flow github
88.98
See All Builds (321)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc