drošība · 6 min · 22.10.2026

PHP 8.2.35 līdz 8.5.12 aizver divas CVSS 9,2 kļūdas: uzbrukumi sākās sešas stundas pirms ielāpa

PHP projekts 21. oktobrī 13:52 UTC izlaida versijas 8.5.12, 8.4.27, 8.3.36 un 8.2.35, kas aizver divas kļūdas ar CVSS v4.0 vērtējumu 9,2. Abas ļauj nepieteikušamies uzbrucējam izpildīt savu kodu uz servera. Uzbrukuma mēģinājumi parādījās vēl pirms ielāpa: Patchstack līdz 07:34 UTC bija saņēmis ziņojumus par vairākiem incidentiem no hostinga partneriem, Cloudflare tehniskais direktors Dane Knecht par pirmajiem mēģinājumiem ziņoja 07:43 UTC.

Kļūdu pāri sauc par PHP2Shell. Numuri ir CVE-2026-109618 un CVE-2026-109619. Tās atrodas pašā PHP dzinējā, tāpēc skarta ir jebkura lietotne, kas apkalpo tīmekļa pieprasījumus: WordPress, Drupal, Joomla, Magento un jebkurš pašrakstīts kods, lai cik rūpīgi tas būtu pārbaudīts.

Kas tieši salūst

PHP drošības komanda paziņojumā php.net abas kļūdas apraksta īsi. CVE-2026-109618 ir koda izpilde caur atmiņas izsīkšanu. Ja PHP pietrūkst atmiņas pieprasījuma sagatavošanas vidū, iekšējie dati paliek daļēji inicializēti. Pieprasījuma beigās tīrīšanas kods šos nepabeigtos datus uzskata par derīgiem. CVE-2026-109619 ir koda izpilde caur novecojušu globālo stāvokli. Pieprasījumam piederoši iekšējie dati pārdzīvo brīdi, kad to atmiņa jau atbrīvota. Nākamais pieprasījums tajā pašā darbinieka procesā var šos datus izmantot, pirms parastā inicializācija tos atiestata.

Wiz Research, kas kļūdas atrada kopā ar Calif un OpenAI, ir konkrētāks. Pirmajā kļūdā ir use-after-free sesijas augšupielādes progresa (session upload progress) deserializētājā. Šī funkcija PHP ir kopš 5.4.0 versijas un pēc noklusējuma ir ieslēgta. Otrajā ir use-after-free fatālo kļūdu backtrace apstrādē un atsevišķa tipu sajaukšanas kļūda OPcache. Wiz demonstrēja koda izpildi bez pieteikšanās pret WordPress, Drupal un Joomla.

Pat bez koda izpildes atmiņas noplūde ir bīstama. Wiz parādīja, ka no PHP darbinieka atmiņas var nolasīt citu pieprasījumu paroles, autentifikācijas žetonus, API atslēgas un sertifikātus. Uzbrukums notiek zem lietotnes slāņa, tāpēc lietotnes žurnālos no tā paliek maz pēdu.

mod_php ir visriskantākais

Skarti ir visi SAPI: PHP-FPM, Apache mod_php, php-cgi, FrankenPHP un LiteSpeed. PHP projekts atsevišķi izceļ mod_php:

Mēs uzskatām, ka risks ir visaugstākais mod_php gadījumā: ir demonstrēts eksploits, kurā nepieteicies pieprasījums izraisa uzbrukumu, pirms vispār izpildās jebkāds lietotnes kods.

Lietotnes pašas pārbaudes šeit nepalīdz, jo tās vēl nav paspējušas izpildīties. Cloudflare 21. oktobrī ieviesa WAF noteikumus pret zināmajiem uzbrukuma vektoriem, bet tie sedz tikai jau redzētos variantus.

Laika līnija: no atraduma līdz noplūdei

Recorded Future apkopojumā ir pilna hronoloģija. Wiz pirmo kļūdu atrada 19. augustā ar AI palīgrīkiem. 20. augustā apstiprināja koda izpildi pret Drupal, 21. augustā pret WordPress. 24. augustā ziņojums nonāca pie PHP drošības komandas, kas to apstiprināja 21. septembrī. 20. oktobrī PHP paziņoja ārpuskārtas laidienu 21. oktobrī 14:00 UTC ar piebildi, ka to paātrinās, ja detaļas noplūdīs vai sāksies uzbrukumi.

Noplūde notika. 21. oktobrī 02:29 UTC VirusTotal parādījās arhīvs ar ievainojamības aprakstu. watchTowr vēl pirms laidiena reproducēja CVE-2026-109618 un abas kļūdas novērtēja kā koda izpildi. Pēc laidiena GitHub pildījās ar repozitorijiem, kas sola PHP2Shell eksploitus. Daļa balstās uz teoriju, ko pats autors vēlāk atsauca: pētnieks J4ck3LSyN publicēja divus PoC skriptus un pēc tam atzina, ka “kešotā rādītāja” use-after-free hipotēze nav pareiza.

Cik serveru tas skar

Modat desmit dienās pirms 20. oktobra saskaitīja 4 384 302 PHP servisus uz 1 886 612 hostiem, kam versija ir nolasāma. 79 % no tiem darbojas neatbalstītā zarā. PHP 7.4, kas atbalstu zaudēja 2022. gadā, ir 878 761 servisā, vairāk nekā jebkurā atbalstītajā versijā.

VirusTotal skaita citādi, pēc IP adresēm. Apmēram 5,1 miljons IP darbina PHP, versiju atklāj tikai 1,1 miljons. No tiem 758 000 ir uz 5.4 līdz 8.1 zariem, 272 000 uz atbalstīta zara. 85 000 IP bija uz 24. septembra laidieniem, jaunākajiem pirms ielāpa. 394 000 PHP hostu papildus atver SSH, 233 000 MySQL, 68 000 RDP.

Ko darīt ar 7.4, 8.0 un 8.1

Oficiāla laidiena šiem zariem nav. PHP drošības komanda publicēja minimālus avota koda backportus php-src repozitorija zaros PHP-7.4-CVE-2026-109618-109619, PHP-8.0-CVE-2026-109618-109619 un PHP-8.1-CVE-2026-109618-109619. Bināro pakotņu nebūs. Linux distribūcijas un LTS piegādātāji ielāpus saņēma iepriekš: AlmaLinux 8, 9 un 10 pakotnes izlaida tajā pašā dienā. Brīvprātīgo uzturētais rpms.remirepo.net laidiena dienā atjauninājumu nedeva, PHP projekts tā lietotājiem iesaka pāriet uz distribūcijas pakotnēm vai būvēt no avota.

Pilna aizsardzība ir tikai atjauninājums. Ja to nevar izdarīt uzreiz, php.net uzskaita daļējus pasākumus. Pret CVE-2026-109618: memory_limit=-1 caur php_admin_value FPM pūlā vai Apache konfigurācijā, zems post_max_size (8M bez augšupielādēm, 32M ar tām) un atmiņas limits konteinera vai cgroup līmenī. RLIMIT_AS un RLIMIT_DATA lietot nedrīkst, jo tie paši izraisa ievainojamo alokācijas kļūdu. Pret CVE-2026-109619: session.upload_progress.enabled=0 php.ini vai pūla līmenī ar visu darbinieku pārstartēšanu; ini_set() vai .user.ini neder. PHP 8.5 papildus fatal_error_backtraces=0. Katrs no šiem pasākumiem aizver vienu apstiprinātu ceļu, pārējos variantus tas neskar.

watchTowr bieži uzdoto jautājumu lapā ziņo par eksploatāciju savā Attacker Eye medus podu tīklā kopš 21. oktobra. CISA uz 22. oktobri nevienu no abām kļūdām KEV katalogā vēl nav iekļāvusi. PHP 8.2 atbalsts beidzas 31. decembrī, tāpēc 8.2.35 šim zaram ir viens no pēdējiem drošības laidieniem.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no drošībasaistītie