
CVE-2026-35330: strongSwan EAP-SIM/AKA ヒープオーバーフロー PoC
整数アンダーフローによるstrongSwan EAP-SIM / EAP-AKA属性パーサーの事前認証ヒープバッファオーバーフロー
src/libsimaka/simaka_message.c:419 の parse_attributes() は、length バイトが4バイトワード数を示す TLV ヘッダーを読み取ります。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() は、この SIZE_MAX に近い長さで malloc(sizeof(attr_t) + len) と memcpy(..., data.ptr, len) を呼び出します — ASan は libsimaka.so 内の OOB memcpy を negative-size-param で停止させます。
クラッシュは simaka_message_create_from_payload(...) に続く msg->parse(msg) から到達します。認証は不要です。EAP-SIM/AKA ディスパッチャーは、ピア資格情報のチェック前にペイロードを解析します。
影響を受けるバージョン: strongSwan <= 5.9.13。アップストリーム master のコミット aa5aaebc33(2026-04-21)で修正済み。
gcc -fsanitize=address -g -O0 poc.c -lsimaka -lstrongswan -o poc
./poc
PoC はインストール済みの libsimaka.so と libstrongswan.so にリンクし、公開 API を直接呼び出します。strongSwan 開発パッケージのヘッダーが必要です(libstrongswan-dev がインストールされていれば、通常 -I/usr/include で十分です)。
libsimaka.so <= 5.9.13(アップストリームの tarball からビルドされたもの。一部のディストリビューションは修正をバックポートしています)gccこのプロジェクトは GNU GPLv3 の下で公開されています。
本コードは、防御的なセキュリティ研究、教育、および許可を得たテストのために提供されています。所有者から明示的な許可を得ずに、システムやサービスに対して本コードを使用しないでください。
無断使用は適用法に違反する可能性があります。著者は第三者のシステムをテストする許可を与えておらず、誤用について一切の責任を負いません。
保証および責任に関する条件については、LICENSE ファイルを参照してください。