CVE-2026-109619: 
PHP 취약점 분석 및 완화

개요

CVE-2026-109619 is a critical use-after-free vulnerability in PHP's global state management, part of the broader "PHP2Shell" (php2shell) vulnerability cluster disclosed on October 21, 2026. PHP maintains various global state that temporarily points into request memory; in certain scenarios this state is not correctly reset or is repopulated after being reset, causing a subsequent request handled by the same worker to access freed memory before normal initialization occurs. This can result in unauthenticated remote code execution (RCE). Affected versions include PHP 8.2.x before 8.2.35, 8.3.x before 8.3.36, 8.4.x before 8.4.27, and 8.5.x before 8.5.12, as well as PHP 5.4.x and later branches below those thresholds. It carries a CVSS v3.1 base score of 8.1 (High) and a CVSS v4.0 base score of 9.2 (Critical) (PHP Advisory, Red Hat).

기술적 세부사항

The root cause is a use-after-free (CWE-416) combined with improper handling of exceptional conditions (CWE-755) and access of uninitialized pointers (CWE-824). PHP worker processes retain global state—including session, error, object, and extension state—that points into per-request heap memory. When a fatal error (e.g., OOM, uncaught exception, parse failure) or a non-fatal diagnostic interrupts request processing before the matching reset occurs, the global state continues to reference freed request memory. A subsequent request on the same worker can then read, branch on, or free this stale state before normal initialization replaces it. Two confirmed consumer paths exist: (1) INI diagnostics raised before php_request_startup() (e.g., deprecated settings in .htaccess or PHP_VALUE headers) that access stale error state, and (2) the session upload-progress handler, which runs before ordinary session initialization and can consume stale session or decoder state. Unauthenticated RCE has been demonstrated against Apache mod_php and PHP-FPM. The attack requires no authentication and no user interaction, but does require that a producer and consumer request reach the same worker process (PHP Advisory, oss-security).

영향

Successful exploitation allows an unauthenticated remote attacker to achieve heap use-after-free, memory disclosure, and full remote code execution with the privileges of the web server worker process. All three CIA pillars are fully compromised: confidentiality (access to sensitive data including password hashes and MFA secrets), integrity (arbitrary code execution and file modification), and availability (worker crash or takeover). Unit 42 reported that in at least one confirmed intrusion against a European government entity, attackers reached password hashes and MFA secrets within two hours of exploitation. The vulnerability affects any PHP-based web application running on Apache mod_php, PHP-FPM, LiteSpeed, or similar persistent-worker SAPIs, and downstream products including Palo Alto Networks PAN-OS, Siemens RUGGEDCOM APE1808, and numerous NAS and network appliances (PHP Advisory, Red Hat).

악용 가능성

CVE-2026-109619 is actively exploited in the wild and was added to CISA's Known Exploited Vulnerabilities (KEV) catalog on October 26, 2026, with a federal patch deadline of October 29, 2026 (CISA KEV). Amazon's MadPot threat intelligence identified exploitation attempts four days before public disclosure (around October 17, 2026). Multiple high-confidence proof-of-concept exploits are publicly available, including multi-stage heap-spray frameworks targeting mod_php and PHP-FPM. The EPSS score is 0.99997 (extremely high probability of exploitation). Threat actors attributed to APT10 (China-linked) and Lazarus Group (DPRK) have been observed exploiting this vulnerability. Cloudflare reported millions of exploitation attempts within hours of disclosure, and honeypots recorded successful shell access. Mirai botnet operators have also attempted to weaponize the flaw (Feedly TI, CISA).

착취 단계

  1. Reconnaissance: Identify internet-facing PHP servers (Apache mod_php or PHP-FPM) running vulnerable versions (PHP < 8.2.35, < 8.3.36, < 8.4.27, < 8.5.12) using Shodan, Censys, or HTTP header fingerprinting tools.
  2. Producer request – trigger stale state: Send a crafted multipart POST request with a PHP_SESSION_UPLOAD_PROGRESS field and a forged PHPSESSID cookie. Include a large number of file parts with oversized filenames or a large filler part designed to exhaust memory_limit during session decode/encode. This causes PHP to OOM-bail during pre-RINIT session initialization, leaving BG(unserialize) or BG(serialize) context pointers dangling into freed request memory.
  3. Stall the upload: Deliver the multipart body in two chunks with a deliberate delay (≥1 second) between them using raw socket or FastCGI connections, ensuring the session upload-progress update runs and publishes state before the OOM occurs.
  4. Consumer request – heap spray: Send a follow-up "fire" request to the same worker, spraying the freed allocator bins with forged PHP internal structures (e.g., zend_reference, zend_array, zend_string, zend_execute_data) containing a shell command string and a pointer to zif_system (derived from a leaked zval_ptr_dtor offset or via in-band heap leak from Set-Cookie headers).
  5. Trigger destructor: The stale pDestructor pointer in the reclaimed heap object is invoked as zif_system, executing the attacker-supplied OS command as the web server user.
  6. Verify execution: Poll for a proof file (e.g., id>/out/p) or check for uid= markers in the response to confirm code execution (PHP Advisory, Feedly TI).

타협의 징후

  • Network: Unusual multipart POST requests with PHP_SESSION_UPLOAD_PROGRESS field and attacker-controlled PHPSESSID values; requests with very large numbers of file parts or oversized filenames; chunked multipart bodies with deliberate stalls; outbound connections from the PHP/web server process to unknown IPs; exploitation attempts logged at php2shell.delftintellab.com honeypot (66,000+ requests observed).
  • Logs: PHP error logs showing Allowed memory size exhausted errors during multipart parsing; repeated warnings or deprecation notices before target scripts execute; Apache/nginx access logs showing multipart POST requests to any PHP endpoint with PHP_SESSION_UPLOAD_PROGRESS in the body; FPM logs showing worker restarts or child process deaths during request startup.
  • File System: Unexpected files written by the web server user (e.g., proof files, web shells); new cron jobs or scheduled tasks created by www-data or equivalent; modified PHP session files in /tmp/sessions/ or configured session save path with serialized object payloads.
  • Process: Unusual child processes spawned by the PHP/Apache worker (e.g., /bin/bash, curl, wget, python, nc); SIGSEGV or SIGBUS signals in worker processes; worker processes consuming abnormal memory before crashing.
  • Threat Intelligence: Source IPs associated with mass scanning for PHP upload-progress endpoints; PHP_SESSION_UPLOAD_PROGRESS in POST body combined with large Content-Length values; Mirai-variant C2 callback attempts from web servers (Feedly TI, CISA).

완화 및 우회 방법

Primary remediation: Upgrade PHP to 8.2.35, 8.3.36, 8.4.27, or 8.5.12 (or later). This is the only fully reliable fix (PHP Advisory). Red Hat has issued RHSA-2026:87080 (RHEL 8), RHSA-2026:87151 (RHEL 9), and multiple EUS/SAP advisories (Red Hat).

Partial configuration mitigations (do not cover all attack paths):

  • Set session.upload_progress.enabled=0 in php.ini (not via ini_set()) and restart all workers — removes the confirmed session upload-progress consumer path.
  • Set fatal_error_backtraces=0 (PHP 8.5 only) — removes the confirmed fatal backtrace producer.
  • Set pm.max_requests=1 in PHP-FPM pool configuration — prevents stale state from surviving across requests (significant performance impact).
  • Deploy the unofficial php_uploadprogress_guard PHP extension (Hosted Power) as a stopgap for unpatched systems (php_uploadprogress_guard).
  • Apply WAF rules (AWS WAF, Cloudflare, Azure WAF) to block or monitor PHP_SESSION_UPLOAD_PROGRESS in multipart POST bodies.

Federal agencies were required to patch by October 29, 2026 per CISA BOD 22-01.

커뮤니티 반응

The vulnerability, dubbed "PHP2Shell," triggered one of the largest coordinated cybersecurity responses in recent memory. The PHP Foundation published a detailed advisory and blog post explaining the disclosure process and plans to strengthen PHP security (PHP Foundation). The embargo was broken early by a consultant who inadvertently disclosed details before the patch was released, accelerating attacker timelines. Cloudflare's CEO reported exploit attempts escalating from thousands to millions within hours of disclosure. NCSC (UK), NSA, FBI, CISA, ENISA, and cybersecurity agencies across Europe, Asia-Pacific, and Africa issued urgent advisories. Security researchers from Wiz, OpenAI (using GPT-5.6 Sol), Google, and Amazon credited AI-assisted research with discovering the vulnerabilities. Wikipedia, government websites across the Netherlands, UK, Japan, and other countries took services offline preemptively. The Register, Wired, Ars Technica, and major tech outlets provided extensive coverage. Recorded Future attributed early exploitation to APT10, while Gurucul and CYFIRMA identified a suspected DPRK campaign targeting 216 vulnerable PHP hosts (Feedly TI).

추가 리소스

리눅스 배포판 수정 현황

주요 리눅스 배포판과 그 릴리스 전반에 걸친 가용성을 수정하세요.

Debian

수정됨

bookworm

php8.2: 8.2.35-1~deb12u1

수정됨

sid

php8.4: 8.4.27-1

수정됨

trixie

php8.4: 8.4.27-1~deb13u1

수정됨

Ubuntu

수정됨

bionic (esm-infra)

php7.2: 7.2.24-0ubuntu0.18.04.17+esm14

수정됨

devel

php8.5: 8.5.9-0ubuntu2.1

영향을 받음

focal (esm-infra)

php7.4: 7.4.3-4ubuntu2.29+esm5

수정됨

jammy

php8.1: 8.1.2-1ubuntu2.28

수정됨

noble

php8.3: 8.3.6-0ubuntu0.24.04.13

수정됨

resolute

php8.5: 8.5.4-0ubuntu1.5

수정됨

trusty (esm-infra-legacy)

php5: 5.5.9+dfsg-1ubuntu4.29+esm18

수정됨

xenial (esm-infra-legacy)

php7.0: 7.0.33-0ubuntu0.16.04.16+esm22

수정됨

RHEL / CentOS

수정됨

RHEL 9

:appstream:php-0:8.0.30-1.el9_2.2.src

수정됨

RHEL 10

php-0:8.3.19-1.el10_0.2.src

수정됨

Alpine

수정됨

edge

php83: 8.3.36-r0, 8.4.27-r0, 8.5.12-r0

수정됨

v3.21

php82: 8.2.35-r0

수정됨

v3.22

php82: 8.2.35-r0

수정됨

v3.23

php83: 8.3.36-r0, 8.4.27-r0, 8.5.12-r0

수정됨

소스: 이 보고서는 AI를 사용해 생성되었습니다

관련 PHP 취약점:

CVE ID

심각도

점수

기술

구성 요소 이름

CISA KEV 악용

수정 사항이 있습니다

출판일

GHSA-5pj7-wx9m-cjh6HIGH8.2
  • PHP logoPHP
  • web-token/jwt-framework
아니요네Oct 31, 2026
CVE-2026-96633HIGH8.1
  • PHP logoPHP
  • adminneo-org/adminneo
아니요네Oct 30, 2026
GHSA-j265-mg9q-wpv9HIGH7.1
  • PHP logoPHP
  • web-token/jwt-framework
아니요네Oct 31, 2026
CVE-2026-96634MEDIUM6.9
  • PHP logoPHP
  • adminneo-org/adminneo
아니요네Oct 30, 2026
GHSA-rqmg-p367-f63rMEDIUM4.3
  • PHP logoPHP
  • power-components/turbine
아니요네Oct 31, 2026

무료 취약점 평가

클라우드 보안 포세를 벤치마킹하세요

9개 보안 영역에서 클라우드 보안 관행을 평가하여 위험 수준을 벤치마킹하고 방어의 허점을 파악하세요.

요청 평가

추가 Wiz 리소스

맞춤형 데모를 받아보세요

맞춤형 데모 신청하기

"내가 본 최고의 사용자 경험은 클라우드 워크로드에 대한 완전한 가시성을 제공합니다."
데이비드 에슬릭CISO
"Wiz는 클라우드 환경에서 무슨 일이 일어나고 있는지 볼 수 있는 단일 창을 제공합니다."
아담 플레처최고 보안 책임자(CSO)
"우리는 Wiz가 무언가를 중요한 것으로 식별하면 실제로 중요하다는 것을 알고 있습니다."
그렉 포니아토프스키위협 및 취약성 관리 책임자