
CVE-2026-35330: strongSwan EAP-SIM/AKA Heap-Overflow-PoC
strongSwan EAP-SIM / EAP-AKA Attribut-Parser Pre-Auth Heap Buffer Overflow via Integer Underflow.
parse_attributes() in src/libsimaka/simaka_message.c:419 liest TLV-Header, deren length-Byte 4-Byte-Wörter zählt. Für den AT_RAND / AT_ENCR_DATA-Zweig:
if (hdr->length * 4 > in.len || in.len < 4)
return invalid_length(hdr->type);
data = chunk_create(in.ptr + 4, hdr->length * 4 - 4);
Wenn hdr->length == 0, unterläuft hdr->length * 4 - 4 zu (size_t)0xFFFFFFFFFFFFFFFC. Der anschließende -Aufruf ruft und mit dieser nahezu -Länge auf — ASan stoppt das OOB- innerhalb von ().
add_attribute()malloc(sizeof(attr_t) + len)memcpy(..., data.ptr, len)SIZE_MAXmemcpylibsimaka.sonegative-size-paramDer Absturz wird von simaka_message_create_from_payload(...) gefolgt von msg->parse(msg) erreicht. Es ist keine Authentifizierung erforderlich; der EAP-SIM/AKA-Dispatcher parst die Nutzlast vor jeder Peer-Credential-Überprüfung.
Betroffen: strongSwan <= 5.9.13. Behoben im Upstream-Master-Commit aa5aaebc33 (2026-04-21).
gcc -fsanitize=address -g -O0 poc.c -lsimaka -lstrongswan -o poc
./poc
Der PoC linkt gegen die installierte libsimaka.so und libstrongswan.so und ruft direkt die öffentliche API auf. Header aus dem strongSwan-Entwicklungspaket sind erforderlich (-I/usr/include ist normalerweise ausreichend, wenn libstrongswan-dev installiert ist).
libsimaka.so <= 5.9.13 (aus Upstream-Tarball erstellt; einige Distributionen portieren Fixes zurück)gcc mit AddressSanitizer-UnterstützungDieses Projekt wird unter der GNU GPLv3 veröffentlicht.
Es wird für defensive Sicherheitsforschung, Bildung und autorisierte Tests bereitgestellt. Verwenden Sie diesen Code nicht gegen Systeme oder Dienste ohne ausdrückliche Genehmigung des Eigentümers.
Unbefugte Nutzung kann geltendes Recht verletzen. Die Autoren erteilen keine Erlaubnis zum Testen von Drittsystemen und sind nicht für Missbrauch verantwortlich.
Siehe die LICENSE-Datei für Gewährleistungs- und Haftungsbedingungen.