Lyhyesti: WordPress-päivitys ei auta PHP-aukkoa PHP2Shell vastaan, koska virhe ei ole WordPressissä vaan PHP:ssä, palvelimen ohjelmistossa, joka suorittaa WordPressin. Dr. Webin mukaan WordPress.org ei siksi suunnittele omaa päivitystä. Suojan voi antaa vain PHP-päivitys palvelimella ja kaikkien PHP-prosessien uudelleenkäynnistys. Sen asentaa yleensä hosting-yrityksenne tai palvelimen ylläpitäjä.
Lähtökohta: ”Mehän päivitimme kaiken”
PHP2Shellin ensimmäisten otsikoiden jälkeen monet ylläpitäjät tekivät itsestään selvän: avasivat WordPressin hallintapaneelin, klikkasivat ”Päivitä nyt” ja päivittivät lisäosat ja teemat samalla. Sen jälkeen kaikki on vihreää, ja tunne sanoo: valmista.
Tässä aukossa tunne pettää. Se ei johdu WordPressistä vaan siitä, missä virhe on. Myös Cloudflare huomauttaa ilmoituksessaan, ettei sovelluskoodin tai lisäosien päivitys korjaa aukkoja.
WordPress-päivitys ja PHP-aukko: kerrosmalli
WordPress-verkkosivusto koostuu useista kerroksista, jotka rakentuvat toistensa päälle. Jokaisella kerroksella on omat päivityksensä ja usein oma vastuutahonsa:
| Kerros | Esimerkki | Kuka tyypillisesti päivittää | Koskeeko PHP2Shell? |
|---|---|---|---|
| Käyttöjärjestelmä | Debian, Ubuntu, AlmaLinux | hosting-yritys tai palvelimen ylläpitäjä | ei, mutta toimittaa usein PHP-paketin |
| Verkkopalvelin | Apache, Nginx, LiteSpeed | hosting-yritys tai palvelimen ylläpitäjä | ajotapa vaikuttaa riskiin |
| PHP-ajoympäristö | PHP-FPM, mod_php | hosting-yritys tai palvelimen ylläpitäjä | kyllä, aukko on tässä |
| WordPressin ydin | WordPress | ylläpitäjä tai toimisto | ei |
| Lisäosat ja teemat | WooCommerce, sivurakentimet | ylläpitäjä tai toimisto | ei |
Hallintapaneelin päivityspainike tavoittaa vain kaksi alinta riviä. PHP-ajoympäristö on niiden alla ja WordPressille näkymätön. Miten muut järjestelmät rakentuvat PHP:n varaan, kuvaa artikkeli CMS-järjestelmät ja verkkokaupat PHP:llä.
Miksi WordPress ei voi sulkea aukkoa
Voisi luulla, että WordPress voisi ”ohjelmoida ympärillä”. PHP2Shellin kohdalla se ei toimi kahdesta syystä.
Ensinnäkin molemmat virheet ovat siinä, miten PHP käsittelee pyyntöjä ja siivoaa niiden jälkeen. Se tapahtuu riippumatta siitä, mikä ohjelma PHP:ssä toimii. Toiseksi PHP-tiimi on osoittanut Apachelle ja mod_php:lle hyökkäyksen, joka toimii ennen kuin sovelluskoodia ylipäätään suoritetaan. WordPress, sen lisäosat ja kaikki tietoturvalisäosat eivät silloin pääse edes toimimaan.
Samasta syystä ei auta myöskään ”kovennuslisäosa”, joka muuttaa asetuksia ini_set()-funktiolla. php.net neuvoo nimenomaisesti olemaan asettamatta väliaikaistoimia tätä kautta.
Entä hallinnoitu WordPress?
Hallinnoidun WordPressin tarjouksissa palveluntarjoaja huolehtii usein WordPress-päivitysten lisäksi myös alla olevasta palvelimesta. Se on PHP2Shellin kannalta etu mutta ei automatiikkaa. Kysykää konkreettisesti, onko PHP-päivitys asennettu ja onko kaikki PHP-prosessit käynnistetty uudelleen. Lausuma ”Pidämme WordPressinne ajan tasalla” ei vastaa tähän kysymykseen.
Monta verkkosivustoa, yksi PHP-asennus
Toimistojen ja yritysten, joilla on useita verkkosivustoja, kannattaa tuntea eräs erityispiirre: samalla palvelimella monet WordPress-asennukset jakavat usein saman PHP-version. Jos se on päivittämätön, kaikki ovat alttiita riippumatta siitä, kuinka hyvin kutakin yksittäistä verkkosivustoa ylläpidetään. Toisaalta PHP-päivitys suojaa kaikkia asennuksia kerralla, kunhan kaikki siihen kuuluvat PHP-prosessit käynnistetään sen jälkeen uudelleen. Joka ylläpitää useita PHP-versioita rinnakkain, päivittää jokaisen erikseen.
Vihreä WordPress-hallintapaneeli ei kerro mitään PHP2Shellistä. Ratkaisevaa on PHP:n korjaustila palvelimella ja kaikkien PHP-prosessien uudelleenkäynnistys.
PHP-version lukeminen WordPressissä oikein
WordPress näyttää PHP-version: hallintapaneelissa kohdassa Työkalut, Sivuston kunto, Tiedot-osiossa Palvelin. Se on hyvä ensimmäinen vihje mutta ei todiste.
Jos siinä lukee haara kuten 8.1 tai vanhempi, se on selvä varoitusmerkki, sillä niille ei ole enää virallisia päivityksiä. Jos siinä lukee 8.2.35, 8.3.36, 8.4.27 tai 8.5.12, korjattu tila on asennettu. Jos siinä lukee tuetun haaran vanhempi numero, backport voi silti olla asennettu. Jakelut ja hosting-yritykset eivät tällöin usein muuta numeroa. Selvyyden tuo vain hosting-yrityksen vahvistus tai katsaus paketin muutoslokiin. Miten se tehdään, kerrotaan kohdassa PHP-version ja korjaustilan tarkistaminen.
Mitä WordPress-ylläpitäjien tulisi tehdä sen sijaan
- Kysykää hosting-yritykseltä tai palvelimen ylläpitäjältä: Onko PHP päivitetty, milloin, ja onko kaikki PHP-prosessit käynnistetty uudelleen? Vastaus kirjallisena.
- Tarkistakaa PHP-haara: Jos verkkosivusto toimii versiolla 8.1 tai vanhemmalla, suunnitelkaa siirtymä tuettuun haaraan. Mitä versioita WordPress-versionne tukee, näkyy wordpress.orgin järjestelmävaatimuksista. Vaihdon asiakasvalikossa kuvaa PHP-version vaihtaminen hosting-asiakasalueella.
- Tarkistakaa jäljet: uudet PHP-tiedostot kansiossa
wp-content/uploads, tuntemattomat ylläpitäjätilit, vieraat merkinnät kansiossamu-plugins. Tyypilliset piilopaikat kuvaa sivu WordPress ja PHP2Shell. - Pitäkää WordPress silti ajan tasalla: ydin, lisäosat ja teemat sulkevat muita aukkoja. Se pysyy velvollisuutena, vain eri velvollisuutena.
- Selvittäkää vastuu: Jos toimisto ylläpitää verkkosivustoa, kirjatkaa, vastaako se myös PHP:stä vai vain WordPressistä.
Juuri viimeinen kohta aiheuttaa usein aukkoja. Toimisto ylläpitää WordPressiä, hosting-yritys palvelinta, ja jokainen luulee toisen pitävän PHP2Shellin silmällä.
Miten PHP SOS auttaa konkreettisesti?
- Kerrosten selvittäminen: Toteamme, kuka WordPress-verkkosivustonne kohdalla vastaa mistäkin kerroksesta.
- PHP:n päivitys: Omilla tai hallinnoiduilla palvelimilla asennamme PHP-päivityksen ja käynnistämme kaikki prosessit uudelleen.
- WordPressin tarkistus: Etsimme hyökkäyksen jälkiä tiedostoista, tietokannasta ja tileistä.
- Todiste: Saatte korjaustilan kirjallisena, myös toimistolle tai asiakkaille välitettäväksi.
Toimintatavan kuvaa PHP-päivityspalvelu.
Yhteenveto
WordPress-päivitys on hyvää ylläpitoa, mutta PHP2Shelliä vastaan väärä kerros. Aukko on kerroksen syvemmällä, palvelimen PHP:ssä. Joka ymmärtää tämän, kysyy oikean kysymyksen oikealta taholta: onko PHP päivitetty, käynnistetty uudelleen ja todistettu?
Usein kysytyt kysymykset
Julkaiseeko WordPress tietoturvapäivityksen PHP2Shelliä vastaan?
Dr. Webin mukaan WordPress.org ei suunnittele päivitystä PHP2Shelliä vastaan, koska aukko on palvelimen PHP-tulkissa. Ratkaisun tuo vain hosting-yrityksen tai palvelimen ylläpitäjän tekemä PHP-päivitys.
Mistä näen WordPressissä PHP-version?
Hallintapaneelissa kohdassa Työkalut, Sivuston kunto, Tiedot-osiossa Palvelin. Näytetty numero ei kuitenkaan kerro varmasti, onko korjaus asennettu, koska hosting-yritykset rakentavat korjauksia usein backportteina ilman uutta versionumeroa.
Suojaako tietoturvalisäosa PHP2Shelliltä?
Vain hyvin rajoitetusti. Lisäosa toimii itse PHP:ssä ja aktivoituu vasta, kun WordPress on ladattu. Apachella ja mod_php:lla PHP-tiimin mukaan hyökkäys osoitettiin, ennen kuin sovelluskoodia ylipäätään suoritetaan. Siinä lisäosa ei voi puuttua asiaan.
Pitäisikö WordPress silti päivittää?
Kyllä. WordPressin, teemojen ja lisäosien ajantasaiset versiot sulkevat muita aukkoja ja kuuluvat hyvään ylläpitoon. Ne eivät vain ratkaise PHP2Shell-ongelmaa.