
CVE-2026-35330: strongSwan EAP-SIM/AKA overflow dell'heap PoC
Overflow heap del buffer nel parser degli attributi EAP-SIM / EAP-AKA di strongSwan, sfruttabile prima dell'autenticazione tramite underflow di intero.
parse_attributes() in src/libsimaka/simaka_message.c:419 legge gli header TLV il cui campo length conta parole di 4 byte. Per il ramo 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);
Quando hdr->length == 0, hdr->length * 4 - 4 causa un underflow a . La successiva chiamata a effettua e con quella lunghezza prossima a — ASan intercetta il fuori dai limiti all'interno di ().
(size_t)0xFFFFFFFFFFFFFFFCadd_attribute()malloc(sizeof(attr_t) + len)memcpy(..., data.ptr, len)SIZE_MAXmemcpylibsimaka.sonegative-size-paramIl crash viene raggiunto da simaka_message_create_from_payload(...) seguito da msg->parse(msg). Non è richiesta autenticazione; il dispatcher EAP-SIM/AKA analizza il payload prima di qualsiasi verifica delle credenziali del peer.
Versioni interessate: strongSwan <= 5.9.13. Risolto nel commit aa5aaebc33 del ramo upstream master (2026-04-21).
gcc -fsanitize=address -g -O0 poc.c -lsimaka -lstrongswan -o poc
./poc
Il PoC si collega alle librerie installate libsimaka.so e libstrongswan.so e chiama direttamente l'API pubblica. Sono necessari gli header del pacchetto di sviluppo di strongSwan (di solito -I/usr/include è sufficiente quando libstrongswan-dev è installato).
libsimaka.so <= 5.9.13 (compilato dal tarball upstream; alcune distribuzioni backportano le correzioni)gcc con supporto ad AddressSanitizerQuesto progetto è rilasciato sotto licenza GNU GPLv3.
È fornito per scopi di ricerca difensiva sulla sicurezza, formazione e test autorizzati. Non utilizzare questo codice contro sistemi o servizi senza il permesso esplicito del proprietario.
L'uso non autorizzato potrebbe violare le leggi applicabili. Gli autori non concedono il permesso di testare sistemi di terze parti e non sono responsabili per un uso improprio.
Consulta il file LICENSE per i termini di garanzia e responsabilità.