**번역본뉴스입니다. 오역이 있을수 있습니다.
PHP 8.5.12, 8.4.27, 8.3.36 및 8.2.35 버전은 인증되지 않은 원격 코드 실행(unauthenticated RCE)을 허용할 수 있는 두 가지 치명적인 취약점을 수정합니다. 모든 PHP 사용자는 즉시 업데이트할 것을 강력히 권장합니다.
위험 대상: PHP-FPM, mod_php를 사용하는 아파치(Apache), php-cgi, FrankenPHP 및 라이트스피드(LiteSpeed)를 포함하여 웹 요청을 처리하는 모든 PHP 설치 환경. 애플리케이션 코드가 실행되기도 전에 인증되지 않은 요청만으로 공격을 유발할 수 있는 익스플로잇이 실증된 바 있어, 당사는 mod_php 환경의 위험도가 가장 높은 것으로 보고 있습니다.
취약점 상세:
-
OOM(메모리 부족) 손상을 통한 RCE, CVE-2026-109618 (GHSA-w8hw-w9fx-j79w): 내부 요청 데이터가 부분적으로만 초기화된 상태에서 메모리 부족(OOM) 처리가 발생해 PHP 실행이 중단될 수 있습니다. 이후 요청 정리(cleanup) 과정에서 유효하지 않은 데이터를 유효한 것으로 간주하여 처리할 수 있습니다.
-
오래된(stale) 전역 상태를 통한 RCE, CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp): 요청에 귀속된 내부 상태가 기반 메모리가 해제된 이후에도 그대로 남아 있을 수 있습니다. 동일한 워커(worker)가 처리하는 후속 요청이 정상적인 초기화 과정을 통해 이를 재설정하기 전에 해당 잔존 상태를 사용할 수 있습니다.
업데이트 방법:
-
PHP 8.5.12, 8.4.27, 8.3.36 또는 8.2.35로 업데이트하십시오. 소스 다운로드는 당사 다운로드 페이지에서 제공되며, Windows용 소스 및 바이너리 역시 동일한 페이지에 준비되어 있습니다.
-
리눅스 배포판 및 LTS 공급업체에는 패치가 사전에 전달되었으므로, 업데이트된 패키지는 각 공급업체를 통해 확인하십시오.
-
PHP 8.1 및 이전 버전은 더 이상 PHP 프로젝트로부터 업데이트를 제공받지 않습니다. 일부 배포판 및 LTS 공급업체는 백포트(backport)된 수정본을 제공하므로 자세한 내용은 공급업체에 문의하거나 지원되는 버전으로 업그레이드하십시오.
-
이번 취약점의 심각성을 고려하여, PHP 보안팀은 소스에서 직접 빌드하거나 LTS 공급업체를 이용할 수 없는 사용자를 돕기 위해 PHP 7.4, PHP 8.0 및 PHP 8.1용 최소한의 소스 백포트를 제공했습니다.
즉시 업데이트할 수 없는 경우: 업데이트만이 유일하고 완전한 해결책이지만, 다음 조치들은 특정 공격 경로에 대한 노출을 줄여줍니다(단, 설치 환경을 완전히 안전하게 만들지는 못합니다).
OOM 손상을 통한 RCE (CVE-2026-109618) 완화 조치:
-
FPM 풀(pool)이나 아파치 설정의
php_admin_value와 같이 애플리케이션이 덮어쓸 수 없는 방식으로memory_limit=-1을 설정하고, 어떠한 풀, 디렉터리 또는 애플리케이션 설정도 다시 유한한 제한값을 부여하지 않는지 확인하십시오. 이는 공격자가 제어 가능한 PHP 메모리 제한 실패를 제거하지만, 기저 시스템의 메모리 할당 실패는 여전히 취약한 경로에 도달할 수 있습니다. -
post_max_size를 낮게 설정하십시오. 파일 업로드가 필요하지 않은 애플리케이션의 경우post_max_size = 8M로 설정하고, 파일 업로드가 필요한 경우post_max_size = 32M로 설정하십시오.upload_max_filesize는post_max_size보다 낮게 유지하십시오. 디코딩된 요청 크기, 입력 필드 수, 멀티파트 파트 수, 헤더 수 및 중첩 깊이에 대해 웹 서버 또는 프록시 수준에서 제한을 강제하는 것을 고려하십시오. 이러한 제한은 유효한Content-Length가 없는 요청에도 동일하게 적용되어야 합니다. -
가용성 경계로서 컨테이너 또는 cgroup 제한을 사용하되, 가급적 영향을 받은 워커만 종료시키는 정책을 함께 사용하십시오.
RLIMIT_AS또는RLIMIT_DATA로 대체하지 마십시오. 이러한 설정은 오히려 취약한 메모리 할당 실패를 유발할 수 있습니다.
오래된 전역 상태를 통한 RCE (CVE-2026-109619) 완화 조치:
-
session.upload_progress.enabled=0으로 설정하고 모든 워커를 재시작하십시오. 요청 파싱 전에 적용되는php.ini, FPM 풀 또는 서버 설정을 사용해야 합니다.ini_set()이나 FPM의.user.ini에 의존하지 마십시오. 이 조치는 확인된 세션 경로는 차단하지만 다른 변종 경로까지 차단하지는 못합니다. -
PHP 8.5에서는
fatal_error_backtraces=0으로 설정하고 모든 워커를 재시작하십시오. 이는 확인된 치명적 오류 백트레이스(fatal backtrace) 경로만 차단합니다. -
초기화 전에 진단 메시지를 출력하는, 요청별로 적용되는 유효하지 않거나 지원 중단된(deprecated) 설정을 제거하십시오.
error_reporting,display_errors또는@연산자로 진단 메시지를 숨기는 것은 도움이 되지 않습니다. -
콜백 실패, 업로드 및 가져오기(import) 처리 실패, 정리(cleanup) 작업 실패를 포함하여 공격자가 도달할 수 있는 치명적 오류(fatal errors) 및 실행 시간 초과(execution timeouts) 문제를 수정하십시오.
위 링크된 보안 권고문에서 전체 기술 세부 정보를 확인할 수 있습니다.
--------------------------------------------------------------------------------------광고(Advertising)--------------------------------------------------------------------------------------------------------