PHP 보안팀이 인증 없이 원격 코드 실행(RCE)이 가능한 PHP2Shell 취약점 두 건을 확인하고 수정 버전 PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35를 공개했다. PHP를 운영하는 팀은 실제 서비스에 연결된 런타임을 확인해 즉시 업데이트해야 한다.
두 취약점은 CVE-2026-109618과 CVE-2026-109619이며, 모두 CVSS v4.0 기준 9.2점이다. 보안팀은 두 결함의 원인과 영향 범위를 공식 권고문에 공개했다. PHP 공식 발표
CVE-2026-109618은 메모리 부족(OOM) 상황에서 내부 데이터가 완전히 초기화되기 전에 요청 처리가 중단되고, 정리 과정에서 잘못된 상태를 처리하면서 코드 실행으로 이어질 수 있는 취약점이다. PHP 보안팀은 Apache mod_php에서 애플리케이션 코드가 실행되기 전에 인증 없는 원격 코드 실행이 가능하다고 확인했다. PHP-FPM, php-cgi, FrankenPHP, LiteSpeed도 영향 범위에 포함되지만, 이 CVE에 대해 PHP-FPM의 완전한 공격은 시연되지 않았다. CVE-2026-109618 권고문
CVE-2026-109619은 요청에 속한 내부 상태가 메모리 해제 뒤에도 남아 같은 작업자가 처리하는 후속 요청에서 접근될 수 있는 취약점이다. 공식 권고문은 세션 업로드 진행률 처리 등을 이용해 mod_php와 PHP-FPM에서 원격 코드 실행이 가능하다고 확인했다. CVE-2026-109619 권고문
초기 공개된 일부 분석과 PoC는 취약점의 작동 원인을 정확히 설명하지 못했다. 후속 조사에서는 기존의 캐시 포인터 사용 후 해제(use-after-free) 설명을 뒷받침하는 특정 공격 경로가 성립하지 않는다는 지적이 나왔고, 다른 경로에서도 원격 코드 실행이 입증되지 않았다. 다만 이는 PHP 보안팀이 확인한 두 취약점의 존재와 원격 코드 실행 영향을 부정하지 않는다. 초기 조사 분석, CVE-2026-109618 저장소, 공개 PoC
패치가 즉시 적용되지 않는다면 임시 조치는 일부 공격 경로의 노출만 줄일 수 있다. CVE-2026-109618에는 애플리케이션이 덮어쓸 수 없도록 memory_limit=-1을 적용하고 웹 서버나 프록시에서 요청 크기를 제한하는 방법이 권고됐다. 메모리 제한이 필요하면 취약한 경로를 촉발할 수 있는 RLIMIT_AS나 RLIMIT_DATA 대신 컨테이너 또는 cgroup 제한을 사용할 수 있지만, 자원 고갈 위험이 있고 완전한 해결책은 아니다. CVE-2026-109619은 session.upload_progress.enabled를 끄고 모든 작업자를 재시작하면 확인된 세션 관련 경로를 막을 수 있다. PHP 8.5에서는 fatal_error_backtraces를 비활성화해 별도로 확인된 경로를 완화할 수도 있다.
운영 환경에 설치된 PHP 버전을 PHP-FPM, Apache, 컨테이너 등 실제 요청을 처리하는 프로세스별로 확인해야 한다. CLI에서 php -v로 확인한 버전과 웹 요청을 처리하는 버전이 다를 수 있으며, 업데이트 뒤에도 장시간 실행되는 프로세스가 패치된 런타임을 사용하는지 확인해야 한다. PHP 8.1 이하 버전은 PHP 프로젝트의 일반 보안 릴리스를 더는 받지 않는다. 일부 구버전 브랜치에는 공급업체 백포트나 제한적인 소스 패치가 있을 수 있다.
Cloudflare는 알려진 공격 경로를 겨냥한 WAF 규칙을 배포했고 초기 공격을 관찰했다고 밝혔다. 공격 시도가 확인됐다는 사실만으로 서버 침해가 발생했다고 볼 수는 없다. WAF는 임시 방어책이며 PHP 업데이트를 대신하지 않는다. 원본 서버에 Cloudflare를 거치지 않고 접근할 수 있다면 해당 보호가 적용되지 않을 수 있다. Cloudflare 긴급 관리 규칙 업데이트, 무료 고객용 규칙 업데이트
PHP 보안팀은 두 취약점 모두에 대해 설정만으로 완전히 막는 방법은 없으며, PHP 업데이트가 유일한 완전한 해결책이라고 밝혔다. PHP 재단은 Laravel, Cloudflare, 보안 연구자들과 대응을 조율했다. OpenAI에 따르면 Calif는 Patch the Planet 이니셔티브에서 GPT-5.6 Sol을 이용해 취약점 하나를 발견했고, Wiz도 두 취약점을 각각 발견해 제보했다. OpenAI의 공개 설명
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요