CVE-2025-40143
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
12/11/2025
Última modificación:
12/11/2025
Descripción
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
bpf: dont report verifier bug for missing bpf_scc_visit on speculative path<br />
<br />
Syzbot generated a program that triggers a verifier_bug() call in<br />
maybe_exit_scc(). maybe_exit_scc() assumes that, when called for a<br />
state with insn_idx in some SCC, there should be an instance of struct<br />
bpf_scc_visit allocated for that SCC. Turns out the assumption does<br />
not hold for speculative execution paths. See example in the next<br />
patch.<br />
<br />
maybe_scc_exit() is called from update_branch_counts() for states that<br />
reach branch count of zero, meaning that path exploration for a<br />
particular path is finished. Path exploration can finish in one of<br />
three ways:<br />
a. Verification error is found. In this case, update_branch_counts()<br />
is called only for non-speculative paths.<br />
b. Top level BPF_EXIT is reached. Such instructions are never a part of<br />
an SCC, so compute_scc_callchain() in maybe_scc_exit() will return<br />
false, and maybe_scc_exit() will return early.<br />
c. A checkpoint is reached and matched. Checkpoints are created by<br />
is_state_visited(), which calls maybe_enter_scc(), which allocates<br />
bpf_scc_visit instances for checkpoints within SCCs.<br />
<br />
Hence, for non-speculative symbolic execution paths, the assumption<br />
still holds: if maybe_scc_exit() is called for a state within an SCC,<br />
bpf_scc_visit instance must exist.<br />
<br />
This patch removes the verifier_bug() call for speculative paths.



