CVE-2026-68186
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
10/08/2026
Última modificación:
19/08/2026
Descripción
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
binfmt_misc: set have_execfd only once the interpreter is opened<br />
<br />
load_misc_binary() raises bprm->have_execfd as soon as it sees the &#39;O&#39;<br />
(or &#39;C&#39;) flag. This happens well before it opens the interpreter. If<br />
that open fails the flag stays set on the bprm. binfmt_misc is at the<br />
head of the format list so an interpreter open failure that returns<br />
-ENOEXEC lets the search fall through to a later format. This means it<br />
runs the matched binary directly having never staged an interpreter. So<br />
bprm->executable is NULL while have_execfd falsely claims a descriptor<br />
is present.<br />
<br />
Consequently, begin_new_exec() dereferences the missing executable:<br />
<br />
would_dump(bprm, bprm->executable);<br />
<br />
and NULL derefs. Had it not, the hand-off later in the same function<br />
would have failed anyway. FD_ADD(0, bprm->executable) rejects a NULL<br />
file with -ENOMEM. Both sites are past the point of no return so the<br />
exec cannot be unwound either way.<br />
<br />
This can be reached by unprivileged users as binfmt_misc can be mounted<br />
in user namespaces. So a user can register an &#39;O&#39; entry whose<br />
interpreter lives on a FUSE mount, have the FUSE server fail the open<br />
with -ENOEXEC and execute a native ELF file that matches the entry.<br />
<br />
have_execfd only means anything alongside the executable it describes<br />
which is not set until the interpreter has been opened and staged.<br />
So lets raise it there, next to execfd_creds, which is already set at<br />
that point. An open failure now leaves it clear, so the fallback format<br />
derives credentials from the binary and emits no AT_EXECFD, as it would<br />
for any native exec. The argv rewrite load_misc_binary() performs before<br />
the open is still not undone. This means the binary sees the interpreter<br />
path in argv[0] and its own path in argv[1] but that predates this<br />
change and only became observable once the exec stopped faulting.
Impacto
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/0f19d54e2524f0bf183b82f365ae4e49b4a2f788
- https://git.kernel.org/stable/c/1cd4e9b7967dab48c9f79a00b06ffff7208c0993
- https://git.kernel.org/stable/c/2dd0298905e97795a9c5ec30cf5b41975f821632
- https://git.kernel.org/stable/c/40c09b7a1d4e0a4866042c87c2bd911bb57566c8
- https://git.kernel.org/stable/c/5ccc99d58f94fad258c9c375715b3974e48620e8
- https://git.kernel.org/stable/c/a261dc49d99681c9c71f38d16e31812dc3e30412
- https://git.kernel.org/stable/c/a8e9e9450df44e9dd529ec5beff283f48f4f4b97
- https://git.kernel.org/stable/c/bbf5f639918dc011aaf60aab8480218758ee68c5


