PHP2Shell
Alvarlegur veikleiki · CVSS 9.2 Critical vulnerability · CVSS 9.2

PHP2Shell: alvarlegir veikleikar í kjarna PHP PHP2Shell: critical vulnerabilities in core PHP

Tilkynning frá CERT-ISAdvisory from CERT-IS →

PHP2Shell er samheiti yfir alvarlegra öryggisveikleika í PHP sem nýlega hafa verið lagfærðir. Þeir geta gert óauðkenndum árásaraðilum kleift að keyra kóða á netþjóni eða komast yfir viðkvæm gögn úr minni PHP-ferla. PHP knýr um 70% vefsíðna, þar á meðal WordPress, Drupal og MediaWiki (Wikipedia).

PHP2Shell is a family of critical vulnerabilities recently fixed in core PHP. They can allow unauthenticated attackers to execute code or expose sensitive process memory. PHP powers approximately 70% of websites, including platforms such as WordPress, Drupal and Wikipedia's MediaWiki.

9.2CVSS alvarleikastigCVSS severity score
2CVE-númerCVEs
~70%vefsíðna keyra á PHPof websites run on PHP
EnginNoneauðkenning nauðsynlegauthentication required

Hvað er PHP2Shell?What is PHP2Shell?

PHP2Shell er heiti á tveimur alvarlegum minnisöryggisveikleikum (e. memory-safety vulnerabilities) í PHP sem geta gert árásaraðilum kleift að keyra kóða á vefþjónum án auðkenningar eða komast yfir viðkvæmar upplýsingar úr minni þeirra.

Veikleikarnir eru skráðir undir CVE-2026-109618 og CVE-2026-109619 og tengjast annars vegar rangri meðhöndlun þegar tiltækt minni þrýtur (e. out-of-memory) og hins vegar ógildum minnisvísunum sem haldast á milli beiðna (e. stale global state).

Veikleikarnir eru í PHP sjálfu en ekki í þeim veflausnum sem nota PHP. Vefsíður geta því verið berskjaldaðar þótt forritskóði þeirra sé að öðru leyti öruggur.

WordPress, Drupal og Joomla voru notuð við öryggisprófanir til að sýna fram á hvernig hægt væri að nýta veikleikana til að keyra kóða á vefþjónum án auðkenningar (e. unauthenticated remote code execution). Misnotkun veikleikanna er þó ekki bundin við þessar veflausnir.

Þann 21. október 2026 voru gefnar út öryggisuppfærslur fyrir PHP sem lagfæra veikleikana. Þróunarteymi PHP brást við með miklum hraða og fagmennsku og vann náið með öryggissérfræðingum að lagfæringum.

PHP2Shell is a family of memory-safety vulnerabilities in core PHP. It comprises two related vulnerability classes, tracked as two CVEs: corruption caused by out-of-memory handling, and stale global state that survives across requests.

The vulnerable code is in PHP itself. Websites can be affected even when their application code is secure, including a simple “Hello World” application running on an affected PHP version.

Sites running the latest patched PHP releases are protected. The PHP team responded to these reports with exceptional speed and professionalism, working closely with researchers to deliver comprehensive fixes.

WordPress, Drupal and Joomla were representative targets used to demonstrate unauthenticated remote code execution. Exploitation does not require one of those applications.

Hvað geta árásaraðilar gert?What attackers can do

Prófanir sýndu fram á að hægt væri að nýta veikleikana til að keyra kóða á vefþjónum án auðkenningar. Þetta var staðfest með prófunum á WordPress, Drupal og Joomla, þar sem notaðar voru nýjustu gámamyndir (e. container images) sem tiltækar voru þegar prófanirnar fóru fram.

Einnig var sýnt fram á að hægt væri að nálgast viðkvæmar upplýsingar úr minni PHP-ferla, óháð því hvaða veflausn væri í notkun.

We demonstrated remote code execution against WordPress, Drupal and Joomla using their latest container images at the time of testing. We also demonstrated application-agnostic memory disclosure.

>_

Keyra kóða án auðkenningarExecute code without authentication

Árásaraðilar geta keyrt kóða á viðkvæmum vefþjónum án þess að þurfa að skrá sig inn. Það getur gert þeim kleift að ná stjórn á þjónustunni, komast yfir viðkvæm gögn, færa sig yfir í önnur kerfi innan netkerfisins eða breyta efni vefsíðna.

On affected servers – potentially taking control of the server, accessing sensitive data, moving laterally, or defacing its websites.

⌗

Lesa viðkvæmar upplýsingar úr minniRead sensitive memory

Árásaraðilar geta nálgast upplýsingar úr minni PHP-ferla, svo sem lykilorð, auðkenningartákn (e. authentication tokens), API-lykla og stafræn skilríki. Upplýsingarnar geta tilheyrt öðrum beiðnum eða þjónustum sem keyra á sama netþjóni.

From the PHP process, including passwords, authentication tokens, API keys and certificates belonging to other requests or the server itself.

!

Stela upplýsingum án þess að keyra kóðaSteal data without code execution

Árásaraðilar geta komist yfir viðkvæmar upplýsingar beint úr minni PHP-ferla án þess að þurfa fyrst að ná fram fjarkeyrslu kóða. Slíkar árásir geta verið erfiðari í greiningu fyrir öryggislausnir sem einblína á að greina keyrslu skaðlegs kóða.

Through memory disclosure, without first achieving remote code execution. This can make the activity harder to detect with tools focused on malicious code execution.

VeikleikarnirThe vulnerabilities

CVE FlokkurClass ÁhrifImpact Sýnt fram áDemonstrated
CVE-2026-109618
Spilling vegna minnisskorts (OOM)Out-of-memory (OOM) corruption
Keyra kóða án auðkenningar sem PHP-vinnsluferli vefþjónsins (e. web worker)Execute code without authentication as the PHP web worker
Fjarkeyrsla kóða án auðkenningar á WordPress, Drupal og JoomlaPre-authentication RCE on WordPress, Drupal and Joomla
CVE-2026-109619
Úrelt sameiginleg staða milli beiðnaStale global state across requests
Kalla fram use-after-free til að leka minni vinnsluferlis eða keyra kóðaTrigger a use-after-free to disclose worker memory or execute code
Fjarkeyrsla kóða án auðkenningar á WordPress og Drupal; minnisleki óháður forritiPre-authentication RCE on WordPress and Drupal; application-agnostic remote memory disclosure

Berskjaldaðar og lagfærðar útgáfurVulnerable and fixed PHP releases

PHP-greinPHP branch Berskjaldaðar útgáfurVulnerable releases Fyrsta lagfærða útgáfaFirst fixed release
8.28.2.34 og eldraand older8.2.35
8.38.3.35 og eldraand older8.3.36
8.48.4.26 og eldraand older8.4.27
8.58.5.11 og eldraand older8.5.12
PHP frá Linux-dreifingum:PHP from Linux distributions: Red Hat, AlmaLinux, Rocky, Debian, Ubuntu o.fl. bæta lagfæringum oft inn í eldri útgáfur (e. backport) án þess að útgáfunúmerið breytist. Til dæmis er 8.3.33-1.el10_2.alma.1 lagfært þótt 8.3.33 sé lægra en 8.3.36. Berðu pakkaútgáfuna saman við töfluna yfir stýrikerfi hér að neðan eða öryggistilkynningu dreifingarinnar. Breytingaskrá pakkans sýnir hvað er komið inn: rpm -q --changelog php-common | head. Red Hat, AlmaLinux, Rocky, Debian, Ubuntu and others often backport fixes into older releases without changing the version number. For example, 8.3.33-1.el10_2.alma.1 is patched even though 8.3.33 is below 8.3.36. Compare the package version with the operating systems table below or your distribution's advisory. The package changelog shows what is included: rpm -q --changelog php-common | head.
Fljótleg athugunQuick check

Sláðu inn PHP-útgáfuna þína (t.d. 8.3.21) til að sjá hvort hún sé viðkvæm. Enter your PHP version (e.g. 8.3.21) to see whether it is affected.

Staða lagfæringaFix status

Staða lagfæringa hjá algengustu Linux-dreifingum og PHP-veitum. Taflan er uppfærð handvirkt og staðan breytist hratt – farðu alltaf eftir tilkynningu dreifingarinnar sjálfrar.

Fix status for the most common Linux distributions and PHP sources. The table is updated by hand and the situation changes quickly – always go by your distribution's own advisory.

DreifingDistribution ÚtgáfaRelease PHP StaðaStatus Lagfærð pakkaútgáfaFixed package HeimildSource
Kveiktu á JavaScript til að sjá töfluna.Enable JavaScript to see the table.

Hvað á að gera?What should you do?

  1. Athugaðu hvaða PHP-útgáfu þú keyrirCheck which PHP version you run

    Vefþjónninn getur notað aðra PHP-útgáfu en skipanalínan (t.d. PHP-FPM eða mod_php). Staðfestu útgáfuna sem vefurinn keyrir í raun og veru.

    The web server may use a different PHP version than the command line (e.g. PHP-FPM or mod_php). Confirm the version your site actually runs.

    php -v
    php-fpm -v
  2. Uppfærðu PHPUpdate PHP

    Uppfærðu í lagfærða útgáfu fyrir þína grein (sjá töflu hér að ofan) og endurræstu PHP-FPM eða vefþjóninn svo breytingin taki gildi. Ef þú keyrir grein eldri en 8.2, sem nýtur ekki lengur stuðnings, skaltu færa þig yfir í studda grein.

    Update to the fixed release for your branch (see the table above) and restart PHP-FPM or the web server so the change takes effect. If you run a branch older than 8.2, which is no longer supported, move to a supported branch.

    Uppfærðu alla pakka (líka PHP frá deb.sury.org eða Ondřej-PPA):

    Update all packages (also PHP from deb.sury.org or the Ondřej PPA):

    sudo apt update
    sudo apt upgrade

    Endurræstu PHP-FPM, eða Apache ef þú notar mod_php:

    Restart PHP-FPM, or Apache if you use mod_php:

    sudo systemctl restart 'php*-fpm.service'
    sudo systemctl restart apache2

    Staðfestu útgáfuna og berðu hana saman við dálkinn „Lagfærð pakkaútgáfa“ í töflunni yfir stýrikerfi:

    Check the version and compare it with the “Fixed package” column in the operating systems table:

    dpkg -l 'php*-common' | grep ^ii
  3. Ertu með vefinn í hýsingu?Is your site hosted?

    Hafðu samband við hýsingaraðilann þinn og spurðu hvort PHP hafi verið uppfært. Það dugar ekki eitt og sér að uppfæra WordPress, Drupal eða Joomla – veikleikinn er í PHP sjálfu.

    Contact your hosting provider and ask whether PHP has been updated. Updating WordPress, Drupal or Joomla alone is not enough – the vulnerability is in PHP itself.

  4. Endurnýjaðu leyndarmál ef grunur er um misnotkunRotate secrets if you suspect exploitation

    Þar sem minnisleki getur afhjúpað lykilorð, tóka, API-lykla og skilríki skaltu íhuga að endurnýja þau ef netþjónn keyrði viðkvæma útgáfu og var aðgengilegur af netinu.

    Because memory disclosure can expose passwords, tokens, API keys and certificates, consider rotating them if a server ran an affected version and was reachable from the internet.

  5. Tilkynntu atvikReport incidents

    Íslensk fyrirtæki og stofnanir geta tilkynnt öryggisatvik til CERT-IS, netöryggissveitar Íslands: cert.is.

    Icelandic companies and organisations can report security incidents to CERT-IS, the national CERT of Iceland: cert.is.

Mikilvægt:Important: Öruggur forritakóði verndar ekki gegn PHP2Shell. Eina varanlega lausnin er að keyra lagfærða útgáfu af PHP. Secure application code does not protect against PHP2Shell. The only lasting fix is to run a patched PHP release.

SELinux og AppArmor: takmarkaðu tjóniðSELinux and AppArmor: limit the damage

SELinux og AppArmor eru öryggiskerfi í Linux-kjarnanum (e. mandatory access control) sem takmarka hvað hvert forrit má gera, óháð því hvaða notandi keyrir það. Þau koma ekki í veg fyrir PHP2Shell-veikleikana sjálfa og stöðva ekki minnisleka innan PHP-ferlisins. En ef árásaraðili nær að keyra kóða í gegnum PHP getur vel stillt SELinux eða AppArmor hindrað hann í að breyta vefskrám, ræsa önnur forrit, tengjast út á netið eða lesa skrár utan vefsvæðisins – og þannig stöðvað innbrotið við vefþjóninn í stað þess að það breiðist út.

Uppfærsla PHP er eina raunverulega lausnin. SELinux og AppArmor eru viðbótarvörn (e. defense in depth) sem skiptir mestu máli einmitt í veikleikum af þessu tagi.

SELinux and AppArmor are Linux kernel security systems (mandatory access control) that limit what each program may do, regardless of which user runs it. They do not prevent the PHP2Shell vulnerabilities themselves and do not stop memory disclosure inside the PHP process. But if an attacker gets code running through PHP, a well-configured SELinux or AppArmor can stop them from modifying web files, starting other programs, connecting out to the network or reading files outside the web root – containing the break-in at the web server instead of letting it spread.

Updating PHP is the only real fix. SELinux and AppArmor are defense in depth – and this kind of vulnerability is exactly where it matters most.

SELinux

Red Hat, AlmaLinux, Rocky Linux, CentOS Stream, Oracle Linux, Fedora, Amazon Linux Red Hat, AlmaLinux, Rocky Linux, CentOS Stream, Oracle Linux, Fedora, Amazon Linux

SELinux á að vera í Enforcing-ham og vefþjónninn og PHP-FPM eiga að keyra í httpd_t-samhenginu – ekki unconfined_t. Hafðu sem fæstar httpd_*-heimildir virkar; t.d. leyfir httpd_can_network_connect PHP að tengjast hvert sem er.

SELinux should be in Enforcing mode, and the web server and PHP-FPM should run in the httpd_t context – not unconfined_t. Keep as few httpd_* booleans on as possible; httpd_can_network_connect, for example, lets PHP connect anywhere.

getenforce
sestatus
# web server and PHP-FPM should show httpd_t
ps -eZ | grep -E 'httpd|php-fpm'
# booleans that widen what PHP may do
getsebool -a | grep -E 'httpd_(can_network_connect|execmem|unified|enable_cgi) '
# actions SELinux blocked today
sudo ausearch -m avc -ts today

Slökktu aldrei á SELinux (setenforce 0) til að leysa vandamál – lagaðu frekar merkingar með restorecon eða kveiktu á einni tiltekinni heimild. Amazon Linux 2023 er sjálfgefið í Permissive-ham, sem skráir en stöðvar ekki.

Never turn SELinux off (setenforce 0) to fix a problem – fix labels with restorecon or enable one specific boolean instead. Amazon Linux 2023 defaults to Permissive mode, which logs but does not block.

AppArmor

Ubuntu, Debian, SUSE / openSUSE Ubuntu, Debian, SUSE / openSUSE

AppArmor er yfirleitt virkt, en verndar aðeins forrit sem hafa snið (e. profile). Á mörgum kerfum er ekkert snið fyrir Apache eða PHP-FPM, svo vefþjónninn keyrir óvarinn (unconfined) þótt AppArmor sé í gangi. Athugaðu það og íhugaðu að bæta við sniði.

AppArmor is usually enabled, but it only protects programs that have a profile. On many systems there is no profile for Apache or PHP-FPM, so the web server runs unconfined even though AppArmor is active. Check it, and consider adding a profile.

sudo aa-status
# "unconfined" = no profile protects it
ps auxZ | grep -E 'apache2|php-fpm|nginx'
# actions AppArmor blocked
sudo journalctl -k | grep 'apparmor="DENIED"'

Snið má búa til með aa-genprof og prófa í complain-ham áður en því er framfylgt (aa-enforce).

Profiles can be built with aa-genprof and tested in complain mode before being enforced (aa-enforce).

Gámar: Docker notar sjálfgefið AppArmor-sniðið docker-default á Ubuntu- og Debian-hýslum, og Podman notar SELinux (container_t) á Red Hat-hýslum. Keyrðu ekki PHP-gáma með --privileged, --security-opt apparmor=unconfined eða --security-opt label=disable.

Containers: Docker applies the docker-default AppArmor profile by default on Ubuntu and Debian hosts, and Podman uses SELinux (container_t) on Red Hat hosts. Don't run PHP containers with --privileged, --security-opt apparmor=unconfined or --security-opt label=disable.

Skanni fyrir skipanalínuCommand-line scanner

Sama athugun og „Athugaðu vefinn þinn“, keyrð á þinni eigin vél. Hún getur kannað margar vefslóðir, IP-tölur eða heil IP-bil í einu, líka innri net sem þessi síða nær ekki til. Niðurstöður má fá sem töflu, JSON eða CSV. The same check as "Check your website", run from your own machine. It can check many URLs, IP addresses or whole IP ranges at once, including internal networks this site cannot reach. Results come as a table, JSON or CSV.

Sækja skannannDownload the scanner

Python 3.8 eða nýrra, engin aukasöfn. GPL-3.0-or-later, frá Photon. Python 3.8 or later, no extra packages. GPL-3.0-or-later, by Photon.

chmod +x pton-scan-php2shell
./pton-scan-php2shell example.is https://example.is/blog/
./pton-scan-php2shell 192.0.2.0/24
./pton-scan-php2shell -f targets.txt --csv > results.csv
./pton-scan-php2shell --help

Skanninn sendir aðeins venjulegar GET-beiðnir og les svarhausa. Skannaðu aðeins kerfi sem þú berð ábyrgð á eða hefur leyfi til að prófa. Eins og í vefathuguninni þýðir „enginn PHP fannst“ ekki að þjónninn sé öruggur; bestu niðurstöðurnar fást með því að kanna hvern vef eftir vefslóð. The scanner only sends ordinary GET requests and reads the response headers. Only scan systems you are responsible for or have permission to test. As with the website check, "no PHP seen" does not mean the server is safe; you get the best results by checking each website by its URL.

Athugaðu vefCheck a website

Opna sem síðuOpen as page