
CVE-2026-65650용 PoC - Elgg 아바타 업로드 DoS
무제한 이미지 치수를 통한 Elgg 아바타 업로드 기능의 인증된 서비스 거부(DoS) 취약점으로, GD 메모리 고갈을 유발합니다.
< 6.3.5 (6.x 계열) 및 7.0.0-rc.1 – < 7.0.0 (7.0 릴리스 후보)6.3.5, 7.0.0actions/avatar/upload.php는 업로드된 이미지를 치수, 파일 크기 또는 메모리 검사 없이 saveIconFromUploadedFile()에 곧바로 전달합니다:
$avatar = elgg_get_uploaded_file('avatar', false);
// No dimension check.
// No size check.
// No ratio check.
if (!$owner->saveIconFromUploadedFile('avatar')) {
return elgg_error_response(elgg_echo('avatar:resize:fail'));
}
PHP의 GD 라이브러리는 디스크의 파일 크기가 아닌 이미지의 디코딩된 픽셀 치수를 기준으로 메모리를 할당합니다. 따라서 극단적인 치수를 가진 작은 파일은 GD가 접근하는 순간 엄청난 메모리 할당을 강제하게 됩니다.
1단계 — python3 CVE-2026-65650.py
2단계 — 등록된 사용자로 로그인합니다.
3단계 — 프로필 > 아바타 편집으로 이동하여 CVE-2026-65650.png를 업로드합니다.
PoC를 실행하면 GD가 이미지 디코딩에 약 286MB를 할당하고 크기 조정에 추가로 약 572MB를 할당하게 되며, 실제 파일은 디스크에서 약 308KB에 불과합니다. 14GB 메모리 / 스왑 없음 테스트 환경에서 단 한 번의 업로드로 사용 가능한 메모리가 약 1.3GB까지 감소했습니다. 메모리가 제한된 배포 환경에서는 이 정도로도 커널 OOM 킬이 PHP-FPM 워커를 종료시켜 사이트가 자체 복구 없이 다운되기에 충분합니다.
단일 저권한 계정에서 보낸 요청 하나만으로도 이러한 메모리 소비가 발생합니다. 여러 계정에서의 반복 또는 동시 요청은 효과를 가중시켜 OOM 발생 가능성을 높입니다.
Elgg 7.0.0에서 수정되었으며 6.3.5로 백포트되었습니다.