Īsi: CVE-2026-109618 ir viena no abām ievainojamībām aiz PHP2Shell. Out-of-Memory stāvoklis var pārtraukt PHP, kamēr pieprasījuma dati ir inicializēti tikai daļēji; tīrīšanas laikā nederīgi dati tad var tikt uzskatīti par derīgiem. Tas ļauj izpildīt kodu bez pieteikšanās. Kļūda ir novērsta PHP 8.5.12, 8.4.27, 8.3.36 un 8.2.35.
Kas ir CVE-2026-109618?
CVE-2026-109618 (GitHub identifikators GHSA-w8hw-w9fx-j79w) ir atmiņas kļūdas ievainojamība PHP kodolā. Tā novērtēta ar CVSS v4.0 9.2. Kopā ar CVE-2026-109619 tā veido to, ko plašsaziņas līdzekļos dēvē par PHP2Shell.
Iedarbība ir tā sauktā unauthenticated Remote Code Execution: uzbrucējs no attāluma un bez lietotāja konta var izpildīt kodu tīmekļa serverī. Tādējādi ievainojamība pieder pie bīstamākās ievainojamību klases, kāda tīmekļa serverim var būt.
Kā ievainojamība principā rodas
Kad PHP apstrādā tīmekļa pieprasījumu, tas iekšēji izveido datu struktūras šim pieprasījumam, piemēram, nosūtītajiem veidlapas datiem. Ja PHP šajā laikā sasniedz savu atmiņas robežu, tas pārtrauc darbu ar Out-of-Memory stāvokli. Saskaņā ar php.net tas var notikt, kamēr pieprasījuma dati ir inicializēti tikai daļēji.
Katra pieprasījuma beigās PHP sakopj un atbrīvo atmiņu. Tieši tur ir kļūda: tīrīšana var uzskatīt nederīgus, tikai pusi izveidotus datus par derīgiem. No šīs nepareizās uzvedības noteiktos apstākļos var izvest koda izpildi.
Kāpēc šāda kļūda ir tik nopietna? Atmiņas kļūda programmēšanas valodā skar visas uz tās darbojošās lietojumprogrammas neatkarīgi no tā, cik rūpīgi tās ir programmētas. Koptā WordPress instalācija ar aktuāliem spraudņiem ir skarta tāpat kā vecs pašu izstrādāts risinājums. Tāpēc šeit nepalīdz lietojumprogrammas atjauninājums, bet tikai PHP atjauninājums.
Tālākas tehniskas ekspluatācijas detaļas mēs apzināti nepublicējam. Aizsardzībai tās nav vajadzīgas: izšķirošs ir, vai jūsu serveris izmanto labotu versiju un vai jaunie procesi patiešām darbojas.
Skartās versijas un darbības režīmi
| PHP atzars | Pēdējā versija pirms labojuma | Labots kopš |
|---|---|---|
| 8.5 | 8.5.11 | 8.5.12 |
| 8.4 | 8.4.26 | 8.4.27 |
| 8.3 | 8.3.35 | 8.3.36 |
| 8.2 | 8.2.34 | 8.2.35 |
| 8.1 un vecākas | nav oficiāla atjauninājuma | tikai minimāli pirmkoda backport labojumi versijām 7.4, 8.0, 8.1 |
Skarti ir darbības režīmi PHP-FPM, Apache ar mod_php, php-cgi, FrankenPHP un LiteSpeed. PHP komanda risku mod_php gadījumā vērtē kā augstāko. Distributīvi un hostinga sniedzēji dažkārt ievieš backport labojumus, tāpēc tiek rādīts vecāks versijas numurs, kaut gan kļūda ir novērsta. Noteicošais ir pakotnes stāvoklis un sniedzēja apstiprinājums.
Mērogam: Palo Alto Networks (Unit 42) saskaitīja vairāk nekā 22,6 miljonus publiski pieejamu, potenciāli ievainojamu instanču. BSI ir izsludinājis 3. brīdinājuma līmeni (oranžs) un rēķinājās ar ātru plašu ekspluatāciju.
CVE-2026-109618 novēršana: atjauninājums un pārstartēšana
Vienīgais pilnīgais pretlīdzeklis ir atjauninājums. Vispirms pārbaudiet versiju un pakotnes stāvokli. Pakotņu nosaukumi atšķiras pa distributīviem; piemēri pieņem PHP 8.3:
php -v
apt policy php8.3-fpm # Debian/Ubuntu
dnf info php-fpm # RHEL, AlmaLinux, Rocky, Fedora
rpm -q --changelog php-fpm | grep -i "CVE-2026-109618"
Ja pakotnes changelog min CVE numuru, backport ir ieviests. Ja tā nav, tas automātiski nenozīmē, ka pakotne ir ievainojama; tad palīdz salīdzinājums ar versiju tabulu vai pajautāšana sniedzējam.
Pēc atjaunināšanas jāpārstartē visi PHP procesi, piemēram, ar systemctl restart php8.3-fpm vai mod_php gadījumā ar Apache pārstartēšanu. Kā pārliecināties, ka vairs nedarbojas neviens vecs darbprocess, rakstīts lapā PHP-FPM un visu darbprocesu pārstartēšana.
Pagaidu pasākumi, ja atjauninājums vēl nav iespējams
php.net ir publicējis pagaidu pasākumus PHP2Shell gadījumam. Tie attiecas uz abām ievainojamībām kopā un tieši nav pilnīga aizsardzība. Tas, ka vairāki no tiem attiecas uz atmiņas robežām, atbilst CVE-2026-109618 Out-of-Memory izraisītājam; taču oficiāla atsevišķu pasākumu piesaiste atsevišķiem CVE nepastāv.
; Piemērs FPM pūlam, piem., /etc/php/8.3/fpm/pool.d/www.conf (ceļš atkarībā no distributīva atšķiras)
php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 8M ; 32M, ja nepieciešami augšupielādes
php_admin_value[upload_max_filesize] = 6M ; immer unter post_max_size
php_admin_flag[session.upload_progress.enabled] = off
Vērtībām jābūt iestatītām tā, lai lietojumprogrammas tās nevarētu pārrakstīt, tāpēc php_admin_value. Ar memory_limit=-1 pakalpojumam vajadzīgs atmiņas ierobežojums no ārpuses, izmantojot konteineru vai cgroup, nevis RLIMIT_AS vai RLIMIT_DATA. PHP 8.5 klāt nāk fatal_error_backtraces=0. Visas detaļas ir lapā Tūlītēji pasākumi, ja vēl nevarat ielāpot.
Ja nav iespējams uzreiz ne atjauninājums, ne pagaidu pasākumi, BSI iesaka skartos tīmekļa serverus uz laiku atvienot no tīkla.
Kā PHP SOS palīdz konkrēti?
Ar mūsu PHP ielāpu pakalpojumu mēs strukturēti aizveram CVE-2026-109618:
- Noskaidrot esošo stāvokli: PHP atzars, darbības režīms, pakotņu avots un backport stāvoklis katram serverim.
- Instalēt atjauninājumu no piemērota pakotņu avota vai, kur tas nav iespējams, tīri iestatīt pagaidu pasākumus pūla vai servera konfigurācijā.
- Pārbaudīt pārstartēšanu: Mēs kontrolējam, ka vairs nedarbojas veci PHP procesi.
- Apliecinājums: Jūs saņemat dokumentāciju ar versijām un pakotņu stāvokli pirms un pēc iejaukšanās, piemēram, vadībai, apdrošinātājam vai datu aizsardzībai.
Biežāk uzdotie jautājumi
Cik kritiska ir CVE-2026-109618?
Ievainojamība novērtēta ar CVSS v4.0 9.2, tātad kā kritiska. Tā ļauj izpildīt ļaunprātīgu kodu no attāluma bez pieteikšanās. BSI par PHP2Shell ir izsludinājis 3. brīdinājuma līmeni (oranžs).
Vai pietiek palielināt memory_limit?
Nē. php.net min memory_limit=-1, stingri iestatītu servera konfigurācijā, kā vienu no vairākiem pagaidu pasākumiem. Tas tieši nav pilnīga aizsardzība, un tam vajadzīgs atmiņas ierobežojums, izmantojot konteineru vai cgroup. Risinājums paliek atjauninājums.
Kāds GHSA identifikators pieder CVE-2026-109618?
GitHub Security Advisory ievainojamība ir norādīta ar GHSA-w8hw-w9fx-j79w. Otrai PHP2Shell ievainojamībai, CVE-2026-109619, identifikators ir GHSA-6wmf-4rv5-p3rp.