
CVE-2026-35330: strongSwan EAP-SIM/AKA تجاوز سعة الكومة PoC
تجاوز سعة المخزن المؤقت في الكومة قبل المصادقة في محلل سمات EAP-SIM / EAP-AKA في strongSwan عبر تدفق سفلي لعدد صحيح.
تقرأ الدالة 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 سفليًا إلى (size_t)0xFFFFFFFFFFFFFFFC. يستدعي add_attribute() بعد ذلك malloc(sizeof(attr_t) + len) وmemcpy(..., data.ptr, len) بهذا الطول القريب من SIZE_MAX — يوقف ASan عملية memcpy خارج الحدود داخل libsimaka.so (negative-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 المثبتتين ويستدعي واجهة برمجة التطبيقات العامة مباشرة. ملفات الرؤوس من حزمة تطوير strongSwan مطلوبة (-I/usr/include كافية عادةً عند تثبيت libstrongswan-dev).
libsimaka.so <= 5.9.13 (مبنية من الحزمة المصدرية الأصلية؛ بعض التوزيعات تُرجِع الإصلاحات إلى إصداراتها الأقدم)gcc مع دعم AddressSanitizerصدر هذا المشروع بموجب رخصة GNU GPLv3.
إنه مُقدَّم لأغراض البحث الأمني الدفاعي والتعليم والاختبار المصرح به. لا تستخدم هذا الكود ضد أنظمة أو خدمات دون إذن صريح من المالك.
قد ينتهك الاستخدام غير المصرح به القانون المعمول به. لا يمنح المؤلفون إذنًا لاختبار أنظمة الأطراف الثالثة وليسوا مسؤولين عن سوء الاستخدام.
راجع ملف LICENSE لشروط الضمان والمسؤولية.