
CVE-2026-35330: strongSwan EAP-SIM/AKA 힙 오버플로 PoC
strongSwan EAP-SIM / EAP-AKA 속성 파서에서 정수 언더플로로 인해 발생하는 인증 전 힙 버퍼 오버플로.
parse_attributes()는 src/libsimaka/simaka_message.c:419에서 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로 배포됩니다.
이 코드는 방어적 보안 연구, 교육, 그리고 승인된 테스트를 위해 제공됩니다. 소유자의 명시적 허가 없이 이 코드를 시스템이나 서비스에 사용하지 마십시오.
무단 사용은 적용 법률을 위반할 수 있습니다. 저자는 제3자 시스템을 테스트할 권한을 부여하지 않으며 오용에 대한 책임을 지지 않습니다.
보증 및 책임 조항은 LICENSE 파일을 참조하십시오.