Patching

PHP2Shell: CVE-2026-109618 og CVE-2026-109619

To fejl i selve PHP, ikke i et framework eller et plugin, der lader en angriber køre kode på serveren uden at logge ind. Kører en server PHP til en hjemmeside, er det denne opdatering, du skal installere i dag.

Det korte svar

Opdatér til PHP 8.5.12, 8.4.27, 8.3.36 eller 8.2.35, eller til din distributions rettede pakke, og genstart alle PHP-FPM-pools. Begge fejl har CVSS v4.0 9.2 og lader en angriber uden login køre kode på serveren. PHP's sikkerhedsteam skriver, at der ikke findes en fuld afbødning. PHP 8.1 og ældre får ingen officiel udgivelse.

Hvad de to fejl er

CVE-2026-109618, RCE via hukommelsesmangel. Løber PHP tør for hukommelse på det forkerte tidspunkt, kan request-data blive efterladt halvt initialiseret, og oprydningen behandler det derefter som gyldigt. En angriber, der kan bringe en request i den tilstand, kan ødelægge hukommelsen.

CVE-2026-109619, RCE via forældet global tilstand. Noget af den tilstand, der hører til én request, bliver liggende i en global variabel, efter at requestens hukommelse er frigivet. Næste request på samme worker kan bruge den, før den normale initialisering nulstiller den. Det er en use after free. Advisoriet bekræfter to veje: tidlige INI-diagnosticeringer og session upload progress, som er slået til som standard og ikke kræver, at applikationen kalder session_start().

Ubuntu udsender rettelser til sine pakker helt tilbage til PHP 5, så regn med, at alle versioner, du kører, er ramt. watchTowr, der udgav en FAQ samme dag, melder om udnyttelse i praksis. PHP-projektets egen meddelelse siger det ikke, så betragt det som rapporteret og ikke bekræftet.

Hvor rettelsen findes

KildeRettet versionBemærkninger
PHP upstream8.5.12, 8.4.27, 8.3.36, 8.2.35Kildekode og Windows-builds på php.net
Debian 13 trixiephp8.4 8.4.27-1~deb13u1DSA-6574-1, trixie-security
Debian 12 bookwormphp8.2 8.2.35-1~deb12u1DLA-4848-1, via Debian LTS
Ubuntu 26.04 LTSphp8.5 8.5.4-0ubuntu1.5Ubuntus security-pocket
Ubuntu 24.04 LTSphp8.3 8.3.6-0ubuntu0.24.04.13Ubuntus security-pocket
Ubuntu 22.04 LTSphp8.1 8.1.2-1ubuntu2.28Ubuntus security-pocket
Officielle Docker-imagesphp:8.5, php:8.4 og punkt-tagsGenbygget 21. oktober 2026; dine egne images skal stadig bygges igen

Bruger du det frivilligt drevne Remi-repository, skrev PHP-teamet, at det ikke ville have opdateringer på udgivelsesdagen, og anbefalede distributionspakker eller at bygge fra kilden.

Tjek hvad du kører

# Hvilken PHP kører webserveren faktisk? CLI kan være en anden end FPM.
php -v
php-fpm8.4 -v                       # Debian/Ubuntu, ret versionen til
dpkg -l 'php*-common' | awk '/^ii/ {print $2, $3}'
rpm -q php-common                   # RHEL-familien

# Er den risikable standard stadig slået til? (afbødning for CVE-2026-109619)
php -i | grep session.upload_progress.enabled

Tjek FPM-programmet eller pakkeversionen, ikke kun php -v. På servere med flere PHP-versioner installeret side om side er CLI ofte ikke den, der leverer siden.

Opdatér og genstart

# Debian / Ubuntu
sudo apt update && sudo apt install --only-upgrade 'php8.*'
sudo systemctl restart php8.4-fpm   # hver FPM-version du kører
sudo systemctl reload apache2       # hvis du bruger mod_php

# RHEL-familien
sudo dnf upgrade 'php*'
sudo systemctl restart php-fpm httpd

En pakkeopgradering alene er ikke nok. Gamle FPM-workers holder den sårbare kode i hukommelsen, indtil de genstarter. I containere henter du det nye base-image og bygger igen. En kørende container ændrer sig ikke, fordi tagget på Docker Hub er flyttet.

Hvis du ikke kan opdatere i dag

PHP's sikkerhedsteam har udgivet nødløsninger, der lukker de bekræftede angrebsveje. Teamet skriver tydeligt, at de mindsker eksponeringen og ikke gør en server sikker:

; Kun nødløsninger fra PHP's sikkerhedsteam. Ikke en rettelse.
; Skal stå i php.ini eller FPM-poolen (php_admin_value), ikke ini_set() eller .user.ini
session.upload_progress.enabled = 0
post_max_size = 8M        ; 32M hvis siden tager imod uploads
; Kun PHP 8.5:
fatal_error_backtraces = 0

Genstart alle workers efter ændringen. Teamet foreslår også at begrænse request-størrelse, antal felter og multipart-dele i webserveren eller proxyen og at bruge en hukommelsesgrænse i containeren eller cgroup frem for RLIMIT_AS eller RLIMIT_DATA, som kan udløse netop den allokeringsfejl, der rammer sårbarheden. memory_limit=-1 fjerner PHP's egen hukommelsesgrænse for CVE-2026-109618, men en underliggende allokeringsfejl kan stadig nå fejlen.

Faldgruber

Sådan blev det kontrolleret. Den 21. oktober 2026 læste vi PHP's sikkerhedsmeddelelse og de to advisories på GitHub, Debians sikkerhedstracker for begge CVE'er og Ubuntus CVE-side. Vi bekræftede opdateringstidspunkterne for Docker Hub-taggene php:8.5 og php:8.4 via Docker Hubs API. Ikke testet: selve sårbarhederne. Vi har ikke forsøgt at genskabe nogen af fejlene.

Kilder

  1. PHP News Archive 2026, PHP-projektet, sikkerhedsmeddelelse og udgivelsesnoter, 21. oktober 2026
  2. GHSA-w8hw-w9fx-j79w: RCE via OOM corruption, php/php-src
  3. GHSA-6wmf-4rv5-p3rp: RCE via stale global state, php/php-src
  4. CVE-2026-109618 og CVE-2026-109619, Debians sikkerhedstracker
  5. CVE-2026-109618, Ubuntu security
  6. PHP Remote Code Execution FAQ, watchTowr

Spørgsmål

Hvad er PHP2Shell?

PHP2Shell er navnet på to kritiske sårbarheder i PHP, offentliggjort 21. oktober 2026. CVE-2026-109618 er fjernkørsel af kode via håndtering af hukommelsesmangel, der efterlader request-data delvist initialiseret. CVE-2026-109619 er fjernkørsel af kode via global tilstand, der overlever, efter at dens hukommelse er frigivet, og derefter bruges af næste request på samme worker. Begge har CVSS v4.0 9.2 og kræver ikke login.

Hvilke PHP-versioner retter CVE-2026-109618 og CVE-2026-109619?

PHP 8.5.12, 8.4.27, 8.3.36 og 8.2.35. PHP 8.1 og ældre får ingen udgivelser fra PHP-projektet, men sikkerhedsteamet har lagt minimale backports af kildekoden ud til 7.4, 8.0 og 8.1. Distributionernes pakker har rettelsen under egne versionsnumre, fx 8.4.27-1~deb13u1 på Debian 13 og 8.3.6-0ubuntu0.24.04.13 på Ubuntu 24.04.

Kan jeg afbøde PHP2Shell uden at opdatere?

Kun delvist. PHP-sikkerhedsteamet nævner nødløsninger som session.upload_progress.enabled=0, en lav post_max_size og, på PHP 8.5, fatal_error_backtraces=0, men skriver, at de blokerer bestemte angrebsveje og ikke gør en installation sikker. Kun en opdatering løser problemet helt.

Skal jeg genstarte PHP-FPM efter opdateringen?

Ja. Kørende FPM-workers har den gamle kode i hukommelsen, indtil de genstarter. Genstart alle FPM-tjenester, genindlæs Apache hvis den kører mod_php, og tjek den version, webserveren rapporterer, ikke kun CLI.

Usikker på, hvilken PHP dine servere kører?

Den gratis gennemgang finder alle PHP-versioner og pools på dine servere, og hvordan hver af dem bliver patchet. Priser.

Gratis servergennemgang