
CVE-2026-35330: PoC de desbordamiento de montón en EAP-SIM/AKA de strongSwan
Desbordamiento de búfer en el montón previo a la autenticación en el analizador de atributos EAP-SIM / EAP-AKA de strongSwan mediante subdesbordamiento de enteros.
parse_attributes() en src/libsimaka/simaka_message.c:419 lee cabeceras TLV cuyo byte length cuenta palabras de 4 bytes. Para la rama AT_RAND / AT_ENCR_DATA:
if (hdr->length * 4 > in.len || in.len < 4)
return invalid_length(hdr->type);
data = chunk_create(in.ptr + 4, hdr->length * 4 - 4);
Cuando hdr->length == 0, hdr->length * 4 - 4 provoca un subdesbordamiento hasta (size_t)0xFFFFFFFFFFFFFFFC. A continuación, add_attribute() ejecuta malloc(sizeof(attr_t) + len) y memcpy(..., data.ptr, len) con esa longitud cercana a SIZE_MAX; ASan detiene el memcpy fuera de límites dentro de libsimaka.so (negative-size-param).
El fallo se alcanza desde simaka_message_create_from_payload(...) seguido de msg->parse(msg). No se requiere autenticación; el despachador EAP-SIM/AKA analiza la carga útil antes de cualquier comprobación de credenciales del par.
Versiones afectadas: strongSwan <= 5.9.13. Corregido en el commit aa5aaebc33 de la rama master de upstream (2026-04-21).
gcc -fsanitize=address -g -O0 poc.c -lsimaka -lstrongswan -o poc
./poc
El PoC enlaza con las bibliotecas libsimaka.so y libstrongswan.so instaladas y llama directamente a la API pública. Se requieren las cabeceras del paquete de desarrollo de strongSwan (-I/usr/include suele ser suficiente cuando libstrongswan-dev está instalado).
libsimaka.so <= 5.9.13 (compilado desde el tarball de upstream; algunas distribuciones aplican correcciones mediante backport)gcc con soporte para AddressSanitizerEste proyecto se publica bajo la GNU GPLv3.
Se proporciona para investigación defensiva de seguridad, educación y pruebas autorizadas. No utilice este código contra sistemas o servicios sin el permiso explícito del propietario.
El uso no autorizado puede violar la legislación aplicable. Los autores no otorgan permiso para probar sistemas de terceros y no son responsables del uso indebido.
Consulte el archivo LICENSE para conocer los términos de garantía y responsabilidad.