CVE-2026-77372 Desbordamiento de heap y lectura fuera de límites en la deserialización de VeraCrypt
Las rutas de serialización de Unix, macOS y FreeBSD en src/Platform/Serializer.cpp y src/Volume/VolumePassword.cpp aceptan longitudes y conteos no confiables al deserializar datos que pueden pasar del GUI o CLI sin privilegios al helper CoreService con root. Serializer::DeserializeWString asigna floor(size / sizeof(wchar_t)) elementos pero lee size bytes, y VolumePassword::Deserialize acepta PasswordSize mayores que el búfer fijo de 128 bytes, permitiendo leer fuera del búfer. Se corrige en la versión 1.26.30.
CVSS 4.0
- Probabilidad de explotación · EPSS del 09/110,1 % · percentil 0
- Explotada activamenteNo confirmada
- Exploit públicoNo conocido
Afectados
veracrypt VeraCrypt
< 1.26.30
Qué hacer
- Verificá si usás VeraCrypt y en qué versión.
- Actualizá a la versión corregida que indique el fabricante en su aviso o aplicá su mitigación.
- Revisá registros y accesos de los sistemas expuestos para descartar un uso previo.
Calculadora CVSS
CVSS 4.0 · 8.8 ALTA
CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
- Vector de ataqueLocal
- Complejidad del ataqueAlta
- Requisitos del ataquePresentes
- Privilegios requeridosBajos
- Interacción del usuarioNinguna
- Confidencialidad (sistema vulnerable)Alta
- Integridad (sistema vulnerable)Alta
- Disponibilidad (sistema vulnerable)Alta
- Confidencialidad (sistemas posteriores)Alta
- Integridad (sistemas posteriores)Alta
- Disponibilidad (sistemas posteriores)Alta
Descripción original
VeraCrypt provides disk encryption with strong security based on TrueCrypt. Prior to 1.26.30, the Unix, macOS, and FreeBSD serialization paths in src/Platform/Serializer.cpp and src/Volume/VolumePassword.cpp accept untrusted length and count values when deserializing data that can cross from the unprivileged GUI or CLI to the root CoreService helper. Serializer::DeserializeWString allocates floor(size / sizeof(wchar_t)) elements but reads size bytes, so a non-aligned size can overflow the heap allocation. VolumePassword::Deserialize accepts PasswordSize values larger than the fixed 128-byte PasswordBuffer, allowing downstream DataPtr() and Size() consumers such as the KDF to read beyond the buffer. DeserializeString, DeserializeWString, and the string and wide-string list readers also lack allocation and collection bounds, which can exhaust memory, and a zero-length DeserializeString can access an empty vector. Windows uses a different path, and the immediate CoreService pipe writer is the same-user parent process, so the documented exposure is a local defense-in-depth boundary rather than a remote attack. This issue is fixed in 1.26.30.
Referencias (3)
Resumen traducido automáticamente de la descripción original. Fuente: Nureq Monitor. Cómo funciona.