🇰🇷 한글 설명
PHP 8.2.31, 8.3.31, 8.4.21, 8.5.6 미만 버전에서 SoapServer가 SOAP_PERSISTENCE_SESSION으로 설정되어 있을 때, SOAP 요청 오류 발생 시 핸들러 객체의 메모리 해제가 잘못 처리되어 포인터가 남아있습니다. 이는 use-after-free 취약점으로 이어져 메모리 손상, 정보 유출, 프로세스 크래시를 야기할 수 있습니다.
💡 쉬운 설명
웹 서버의 SOAP 통신 중 오류 발생 시 프로그램이 메모리를 잘못 정리하여 삭제된 메모리 영역에 접근하려고 합니다. 이는 서버 크래시, 데이터 유출 또는 공격자의 코드 실행을 초래할 수 있습니다.
🇺🇸 원문 (English)
In PHP versions 8.2.* before 8.2.31, 8.3.* before 8.3.31, 8.4.* before 8.4.21, and 8.5.* before 8.5.6, when SoapServer is configured with SOAP_PERSISTENCE_SESSION, the handler object is persisted across requests via session storage. However, in the case SOAP requests results in an error, the persistance is handled incorrectly, resulting in freeing the object while keeping a pointer to it, which may lead to use-after-free. This may lead to memory corruption, information disclosure, or process crashes, with confidentiality, integrity, and availability impact on the vulnerable system.
📍 영향받는 시스템
PHP 8.2.0-8.2.30, 8.3.0-8.3.30, 8.4.0-8.4.20, 8.5.0-8.5.5 (SoapServer SOAP_PERSISTENCE_SESSION 사용)
⚔️ 공격 벡터
SoapServer가 SOAP_PERSISTENCE_SESSION으로 설정된 PHP에서 의도적으로 오류를 유발하는 SOAP 요청 전송
🛡️ 대응 방법
PHP 8.2.31, 8.3.31, 8.4.21, 8.5.6 이상으로 즉시 업그레이드
🔧 검증 코드
결과의 PHP 버전이 8.2.31+, 8.3.31+, 8.4.21+, 또는 8.5.6+ 이면 패치됨, 그 이하면 취약함
php --version | grep -oP '\d+\.\d+\.\d+'