🇰🇷 한글 설명
PHP의 getimagesize() 함수가 멀티 청크 모드(예: php://filter)로 이미지를 읽을 때 초기화되지 않은 힙 메모리를 APPn 세그먼트로 유출할 수 있는 취약점입니다. 이는 php_read_stream_all_chunks() 함수에서 버퍼를 덮어쓰면서 포인터를 전진시키지 않아 발생하는 버그로, 민감한 데이터가 노출될 수 있습니다.
💡 쉬운 설명
이미지 파일을 처리하는 과정에서 컴퓨터 메모리의 일부가 제대로 정리되지 않아, 다른 프로그램이 사용하던 중요한 정보가 이미지 데이터에 섞여 들어갈 수 있는 문제입니다. 이를 통해 공격자가 서버 내부의 민감한 정보를 훔쳐볼 위험이 있습니다.
🇺🇸 원문 (English)
In PHP versions:8.1.* before 8.1.34, 8.2.* before 8.2.30, 8.3.* before 8.3.29, 8.4.* before 8.4.16, 8.5.* before 8.5.1, the getimagesize() function may leak uninitialized heap memory into the APPn segments (e.g., APP1) when reading images in multi-chunk mode (such as via php://filter). This occurs due to a bug in php_read_stream_all_chunks() that overwrites the buffer without advancing the pointer, leaving tail bytes uninitialized. This may lead to information disclosure of sensitive heap data and affect the confidentiality of the target server.
📍 영향받는 시스템
PHP 8.1 < 8.1.34, 8.2 < 8.2.30, 8.3 < 8.3.29, 8.4 < 8.4.16, 8.5 < 8.5.1
⚔️ 공격 벡터
php://filter와 같은 멀티 청크 모드를 이용한 이미지 처리 요청을 통한 정보 유출
🛡️ 대응 방법
취약점이 해결된 최신 버전의 PHP(8.1.34, 8.2.30, 8.3.29, 8.4.16, 8.5.1 이상)로 업데이트
🔧 검증 코드
출력된 PHP 버전이 취약한 버전 범위(예: 8.1.34 미만 등)에 해당되는지 확인
php -v | grep -E 'PHP (8.1\[0-9\.]*|8.2\[0-9\.]*|8.3\[0-9\.]*|8.4\[0-9\.]*|8.5\[0-9\.]*)'