
CVE-2026-35330 : débordement de tas EAP-SIM/AKA strongSwan PoC
Débordement de tas (heap buffer overflow) avant authentification dans l'analyseur d'attributs EAP-SIM / EAP-AKA de strongSwan via un dépassement négatif d'entier (integer underflow).
parse_attributes() dans src/libsimaka/simaka_message.c:419 lit les en-têtes TLV dont le champ length compte des mots de 4 octets. Pour la branche 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);
Lorsque hdr->length == 0, hdr->length * 4 - 4 devient un dépassement négatif vers . L'appel suivant à exécute et avec cette longueur proche de — ASan stoppe le hors limites (OOB) à l'intérieur de ().
(size_t)0xFFFFFFFFFFFFFFFCadd_attribute()malloc(sizeof(attr_t) + len)memcpy(..., data.ptr, len)SIZE_MAXmemcpylibsimaka.sonegative-size-paramLe crash est atteint depuis simaka_message_create_from_payload(...) suivi de msg->parse(msg). Aucune authentification n'est requise ; le répartiteur EAP-SIM/AKA analyse la charge utile avant toute vérification d'identifiant pair.
Version affectée : strongSwan <= 5.9.13. Corrigé dans le commit aa5aaebc33 de la branche principale (2026-04-21).
gcc -fsanitize=address -g -O0 poc.c -lsimaka -lstrongswan -o poc
./poc
Le PoC se lie aux bibliothèques installées libsimaka.so et libstrongswan.so et appelle directement l'API publique. Les en-têtes du paquet de développement strongSwan sont nécessaires (-I/usr/include est généralement suffisant lorsque libstrongswan-dev est installé).
libsimaka.so <= 5.9.13 (compilé à partir de l'archive officielle ; certaines distributions backportent les correctifs)gcc avec prise en charge d'AddressSanitizerCe projet est publié sous licence GNU GPLv3.
Il est fourni à des fins de recherche défensive en sécurité, d'éducation et de tests autorisés. N'utilisez pas ce code contre des systèmes ou services sans autorisation explicite du propriétaire.
Toute utilisation non autorisée peut violer la loi applicable. Les auteurs n'accordent pas la permission de tester des systèmes tiers et ne sont pas responsables d'une mauvaise utilisation.
Consultez le fichier LICENSE pour les termes de garantie et de responsabilité.