
Pack de divulgation et PoC pour CVE-2026-96512, un contournement de la fenêtre temporelle TZ NOTBEFORE/NOTAFTER de sudo permettant une élévation de privilèges locale, avec reproduction en laboratoire et conseils de correctif.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-96512
sudo 1.9.13p3 (Debian bookworm) — Sudo Project
Une faille a été découverte dans sudo. Lorsque les règles sudoers utilisent des restrictions d'accès temporelles NOTBEFORE ou NOTAFTER avec des horodatages qui omettent l'indicateur de fuseau horaire Z final, l'évaluation temporelle repose sur la variable d'environnement TZ héritée de l'utilisateur appelant.
| CVE | CVE-2026-96512 · CVE.org |
| CWE | CWE-863 |
| CVSS | Élevé : 7.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Produit | sudo |
| Affecté | toutes les versions jusqu'à 1.9.13p3 (Debian bookworm) (inclus) |
| Corrigé | commit principal 1820a34 (aucune version amont pour l'instant) et ultérieurs |
| Auth | authentifié (voir la carte source) |
| Licence | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 uniquement · pack de divulgation fournisseur/client, pas un scanner |
plugins/sudoers parse_gentime / gram.y timespec. Le correctif sudo-project/sudo@1820a34 copie environ depuis envp et 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 -> denied (expired)TZ=UTC+14 sudo -n /usr/bin/idparse_gentime mktime honors POSIX TZ=UTC+14NOTAFTER epoch shifts +14h; command allowed as rootSans TZ : sudo -n id refusé. Avec TZ=UTC+14 : uid=0(root).
À faire en premier : Mettez à jour sudo vers le commit principal 1820a34 (aucune version amont pour l'instant) ou plus récent.
Vérifier après la mise à niveau
CVE-2026-96512-Abraxas-Labs.py contre la version corrigée : le témoin mappé ne doit pas apparaître.Si vous ne pouvez pas mettre à jour immédiatement
Ciblez uniquement http://127.0.0.1:8088 (ou le loopback que vous avez lié). Ne pointez pas ce script vers Internet.
python3 CVE-2026-96512-Abraxas-Labs.py
Le succès correspond au témoin ci-dessus dans le corps de la réponse. Un HTML 200 générique n'est pas cela.
Pile loopback utilisée pour reproduire. Images officielles sauf si un Dockerfile dans ce dossier compile depuis les sources.
cd lab
docker compose up --force-recreate
Liez l'arborescence du produit vulnérable à côté de Compose si le YAML monte un répertoire local (zip du plugin / tag source issu du tableau des versions). Ne publiez rien d'autre que 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.
Ce pack de divulgation est sous licence GNU Affero General Public License v3.0. Voir LICENSE.
Ce pack est destiné au fournisseur, au propriétaire du site et aux labs autorisés. Le script communique avec 127.0.0.1. L'utiliser contre des systèmes que vous ne possédez pas n'est pas autorisé par Abraxas Labs. Aucune garantie.