SilentShield
← Takaisin blogiin
TietoturvaPHPVaroitus

Kriittiset PHP-haavoittuvuudet (CVE-2026-109618 ja CVE-2026-109619): mitä tapahtui ja mitä sinun pitää tehdä

Marc Wagner·22. lokakuuta 2026·7 min lukuaika

PHP-projekti julkaisi 21. lokakuuta 2026 korjaukset kahteen kriittiseen haavoittuvuuteen, ja CERT-EU julkaisi samana päivänä varoituksen 2026-018. Molemmat on arvioitu luokkaan 9,2, ja molempien kuvataan sallivan koodin suorittamisen etänä ilman todennusta. Jos ylläpidät WordPress-sivustoa, verkkokauppaa tai muuta PHP-sovellusta, asia koskee sinua, ja korjaus on päivitys, ei asetus. Tämä artikkeli kertoo, mitä tiedetään, miten hyökkäys pääsee sisään ja mitä sinun kannattaa tehdä. Tilanne: 22. lokakuuta 2026, CERT-EU:n varoituksen version 1.1 mukaan.

Mitä tapahtui

PHP ilmoitti tietoturvaversiosta 20. lokakuuta ja julkaisi korjaukset 21. lokakuuta kello 13.30 UTC. CERT-EU nimeää varoituksensa ”Critical Vulnerabilities in PHP” ja luettelee kaksi CVE-tunnusta: CVE-2026-109618 ja CVE-2026-109619, kummankin arvio on 9,2. CERT-EU kirjoittaa lisäksi, että teknisistä yksityiskohdista keskustellaan nyt julkisesti ja että ensimmäiset haavoittuvuuden todistavat koodiesimerkit (proof of concept) ovat alkaneet levitä. Varoitus ei vahvista hyökkäyksiä käytännössä, mutta sen mukaan tämä tekee todennäköisemmäksi, että hyökkääjät hyödyntävät haavoittuvuuksia jo. Pidä asiaa kiireellisenä.

Keitä asia koskee

Altis on jokainen PHP-versio, joka on tuetun haaran korjattua versiota vanhempi, sekä jokainen haara, jonka tuki on päättynyt.

HaaraAltis alleKorjattu versiossa
PHP 8.58.5.128.5.12
PHP 8.48.4.278.4.27
PHP 8.38.3.368.3.36
PHP 8.28.2.358.2.35
PHP 8.1 ja vanhemmatkaikki versiotei säännöllistä päivitystä; PHP:n tietoturvatiimi on julkaissut minimaaliset lähdekoodin takaisinporttaukset versioille 7.4, 8.0 ja 8.1

CERT-EU mainitsee PHP-FPM:n, Apachen ja mod_php:n, php-cgi:n, FrankenPHP:n ja LiteSpeedin. PHP-tiimin mukaan mod_php on suurin riski. Myös tuotteet, jotka sisältävät PHP:n, voivat olla alttiita; CERT-EU viittaa tämän artikkelin lopussa Hollannin NCSC:n luetteloon. Jokainen asennus, joka palvelee verkkopyyntöjä, lasketaan mukaan riippumatta siitä, onko siinä latauslomaketta vai ei.

Miten hyökkääjä pääsee käsiksi ensimmäiseen haavoittuvuuteen

Kenenkään ei tarvitse kirjautua. CERT-EU:n mukaan esitelty hyökkäys osoittaa, että yksi pyyntö ilman kirjautumista riittää laukaisemaan hyökkäyksen ennen kuin mitään sovelluskoodia suoritetaan. Tämän useimmat ohittavat: ei ole väliä, onko WordPressisi ajan tasalla, onko lisäosasi korjattu tai onko yhteydenottolomakkeesi suojattu. Pyyntö osuu ensin PHP-moottoriin.

Ensimmäinen haavoittuvuus, CVE-2026-109618, toimii näin:

  1. Pyyntö saapuu osoitteeseen, jota PHP palvelee. Ei kirjautumista, ei tiliä.
  2. PHP alkaa lukea pyynnön sisältöä. CERT-EU mainitsee esimerkkinä lomakepohjaisten tiedostolatausten käsittelyn.
  3. PHP valvoo memory_limit-rajaansa longjmp()-kutsulla. Kun raja ylittyy, PHP hyppää pois siitä, mitä se oli tekemässä, ja päättää pyynnön.
  4. Jos tämä tapahtuu kesken pyynnön sisäisten tietojen rakentamisen, nuo tiedot ovat vain puoliksi rakennettuja.
  5. Jälkisiivous käsittelee virheelliset tiedot päteviksi ja vapauttaa muistia, jota ei ole koskaan alustettu. Tuossa muistissa voi yhä olla aiempien varausten tietoja, joita hyökkääjä on hallinnut.
  6. Sieltä varoitus kuvaa koodin suorittamista palvelimella.

Sitä, miten hyökkääjä ohjaa viimeistä vaihetta, emme tarkoituksella kuvaa. Riittää tietää, että sisäänkäynti ei ole sinun sovelluksesi, ja siksi mikään sovelluksesi sisällä ei voi pysäyttää sitä.

Toinen haavoittuvuus: tila, joka säilyy muistinsa yli

CVE-2026-109619 on eri mekanismi, jolla on sama lopputulos. PHP pitää jokaisesta pyynnöstä sisäistä tilaa. Tietyn virheen, esimerkiksi vakavan virheen (fatal error), jälkeen tämä tila voi jäädä voimaan, vaikka sen alla oleva muisti on vapautettu. Seuraava pyyntö, jonka sama worker käsittelee, voi silloin käyttää tätä vanhentunutta tilaa ennen kuin se nollataan tavalliseen tapaan. Hyökkääjä tarvitsee kaksi pyyntöä, jotka päätyvät samalle workerille; CERT-EU arvioi lopputuloksen kuten ensimmäisessä haavoittuvuudessa: koodin suorittaminen etänä.

Mitä sinun kannattaa tehdä tänään

  1. Selvitä, mikä PHP-versio sivustoasi todella palvelee. php -v komentorivillä näyttää komentorivin version, joka voi poiketa verkkopalvelimesi versiosta. Tarkista php-fpm -v, hosting-paneelisi tai sivu, joka kutsuu phpinfo()-funktiota. Jaetussa verkkopalvelussa kysy palveluntarjoajaltasi.
  2. Päivitä korjattuun versioon: 8.5.12, 8.4.27, 8.3.36 tai 8.2.35. Jakelut siirtävät korjauksia usein vanhempiin versioihin muuttamatta versionumeroa; etsi siksi CVE-tunnukset toimittajasi tietoturvatiedotteesta. Konteissa rakenna uudelleen päivitetystä peruskuvasta. PHP-tiimi huomauttaa, että rpms.remirepo.net:ssä ei ollut julkaisupäivänä päivityksiä, ja suosittelee jakelun paketteja tai rakentamista lähdekoodista.
  3. Käynnistä jokainen PHP-worker uudelleen. Levylle asennettu päivitys ei muuta jo käynnissä olevia prosesseja. Käynnistä PHP-FPM tai verkkopalvelin uudelleen ja tarkista sen jälkeen käynnissä oleva versio uudelleen.
  4. Jos et voi päivittää tänään, erota palvelin julkisista verkoista, kunnes korjaus on asennettu ja tarkistettu. CERT-EU on selvä: vain päivitys korjaa nämä haavoittuvuudet kokonaan.
  5. Jos käytät PHP 8.1:tä tai vanhempaa, kysy toimittajaltasi takaisinporttausta tai siirry tuettuun haaraan. Nämä versiot eivät saa säännöllisiä päivityksiä.

Väliaikaiset keinot, jotka pienentävät riskiä mutta eivät korjaa

CERT-EU luettelee toimenpiteitä, jotka vaikeuttavat hyökkäystä. Varoitus sanoo suoraan, etteivät ne tee asennuksesta turvallista. Käytä niitä päivitystä valmistellessasi, älä sen sijasta.

  • CVE-2026-109618 vastaan: Aseta memory_limit=-1 tavalla, jota sovellukset eivät voi ohittaa, esimerkiksi php_admin_value-asetuksella FPM-poolissa, ja tarkista, ettei mikään pool-, hakemisto- tai sovelluskohtainen merkintä aseta taas äärellistä rajaa. Aseta matala post_max_size (8M ilman latauksia, 32M latausten kanssa) ja pidä upload_max_filesize sen alapuolella. Rajoita pyynnön kokoa, kenttien määrää, multipart-osia, otsikoiden määrää ja sisäkkäisyyden syvyyttä verkkopalvelimessa tai välityspalvelimessa. Käytä kontin tai cgroupin muistirajaa saatavuuden rajana, mutta älä RLIMIT_AS- tai RLIMIT_DATA-rajoja, jotka voivat laukaista haavoittuvan varausvirheen.
  • CVE-2026-109619 vastaan: Aseta session.upload_progress.enabled=0 tiedostossa php.ini, FPM-poolissa tai palvelinasetuksessa, joka on voimassa ennen pyynnön käsittelyä (ei ini_set()-funktiolla eikä .user.ini-tiedostolla), ja käynnistä kaikki workerit uudelleen. Aseta PHP 8.5:ssä lisäksi fatal_error_backtraces=0. Poista virheelliset tai vanhentuneet pyyntökohtaiset asetukset, jotka tulostavat viestejä ennen alustusta, ja korjaa vakavat virheet ja aikakatkaisut, jotka hyökkääjä voi saavuttaa.

Mihin SilentShield tässä pystyy ja mihin ei

Tämä ei ole bottiongelma, ja sanomme sen mieluummin kuin annamme tuotesivun antaa ymmärtää muuta. Hyökkäys osuu PHP-moottoriin ennen kuin mikään meidän tuotteessamme, CAPTCHA, lisäosa tai sovelluksesi sisäinen palomuurisääntö näkee pyynnön. Lomakkeen bottisuojaus ei pysäytä sitä, eikä kenenkään pidä väittää sinulle, että se pysäyttää. Ainoa täydellinen korjaus on PHP-päivitys.

SilentShieldin API ja hallintapaneeli eivät ole kirjoitettu PHP:llä. WordPress-lisäosa ja PHP-SDK toimivat omassa PHP:ssäsi, joten niiden kohdalla päivitys on tehtävä sinun palvelimellasi. Päivityksen jälkeen tavallinen suojaus boteilta ja lomakeroskapostilta on yhtä hyödyllinen kuin ennenkin; se ei vain koskaan ollut vastaus tähän ongelmaan.

Lähteet

Usein kysytyt kysymykset

Mitkä PHP-versiot ovat alttiita haavoittuvuuksille CVE-2026-109618 ja CVE-2026-109619?

PHP 8.5 alle 8.5.12, 8.4 alle 8.4.27, 8.3 alle 8.3.36 ja 8.2 alle 8.2.35 sekä jokainen haara, jonka tuki on päättynyt (8.1 ja vanhemmat). Korjaukset julkaistiin 21. lokakuuta 2026. Versioille 7.4, 8.0 ja 8.1 PHP:n tietoturvatiimi on julkaissut minimaaliset lähdekoodin takaisinporttaukset. CERT-EU mainitsee PHP-FPM:n, Apachen ja mod_php:n, php-cgi:n, FrankenPHP:n ja LiteSpeedin.

Suojaako CAPTCHA, WordPressin tietoturvalisäosa tai palomuuri näiltä PHP-haavoittuvuuksilta?

Ei luotettavasti. Hyökkäys osuu PHP-moottoriin ennen kuin sovelluskoodia suoritetaan, joten sovelluksen sisäinen CAPTCHA tai lisäosa ei koskaan näe pyyntöä. CERT-EU toteaa, että vain päivitys korjaa haavoittuvuudet kokonaan; pyynnön koon rajat verkkopalvelimessa tai välityspalvelimessa ja PHP-asetukset pienentävät riskiä mutta eivät tee asennuksesta turvallista.

Hyödynnetäänkö PHP-haavoittuvuuksia CVE-2026-109618 ja CVE-2026-109619 jo?

CERT-EU:n varoitus ei vahvista hyökkäyksiä käytännössä. Sen mukaan teknisistä yksityiskohdista keskustellaan julkisesti ja ensimmäiset haavoittuvuuden todistavat koodiesimerkit ovat alkaneet levitä, mikä tekee todennäköisemmäksi, että hyökkääjät hyödyntävät haavoittuvuuksia jo. Päivitä niin pian kuin voit.

Valmis luopumaan CAPTCHAsta?

Aloita lomakkeidesi suojaaminen — näkymättömästi. Luottokorttia ei tarvita.