
CVE-2026-35330: PoC переполнения кучи EAP-SIM/AKA в strongSwan
strongSwan: преждевременное переполнение кучи в парсере атрибутов EAP-SIM / EAP-AKA через целочисленное исчерпание
parse_attributes() в src/libsimaka/simaka_message.c:419 читает заголовки TLV, у которых байт length подсчитывает 4-байтовые слова. Для ветви 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);
Когда hdr->length == 0, hdr->length * 4 - 4 приводит к целочисленному исчерпанию до . Последующий вызов вызывает и с этой длиной, близкой к — ASan останавливает внеграничный внутри ().
(size_t)0xFFFFFFFFFFFFFFFCadd_attribute()malloc(sizeof(attr_t) + len)memcpy(..., data.ptr, len)SIZE_MAXmemcpylibsimaka.sonegative-size-paramСбой достигается из simaka_message_create_from_payload(...) с последующим msg->parse(msg). Аутентификация не требуется; диспетчер EAP-SIM/AKA разбирает полезную нагрузку до какой-либо проверки учётных данных однорангового узла.
Затрагивает: strongSwan <= 5.9.13. Исправлено в коммите aa5aaebc33 в основной ветке (2026-04-21).
gcc -fsanitize=address -g -O0 poc.c -lsimaka -lstrongswan -o poc
./poc
PoC компонуется с установленными libsimaka.so и libstrongswan.so и напрямую вызывает публичный API. Требуются заголовки из пакета разработки strongSwan (-I/usr/include обычно достаточно, если установлен libstrongswan-dev).
libsimaka.so <= 5.9.13 (собран из исходного кода; некоторые дистрибутивы переносят исправления обратно)gcc с поддержкой AddressSanitizerЭтот проект выпущен под лицензией GNU GPLv3.
Он предоставлен для оборонительных исследований безопасности, обучения и авторизованного тестирования. Не используйте этот код против систем или сервисов без явного разрешения владельца.
Несанкционированное использование может нарушать применимое законодательство. Авторы не дают разрешения на тестирование сторонних систем и не несут ответственности за неправомерное использование.
См. файл LICENSE для условий гарантии и ответственности.