Lyhyesti: Craft CMS:n tietoturva riippuu PHP2Shellin jälkeen palvelimen PHP:stä, ei Craftista. Erityisesti toimistojen, joilla on monta Craft-sivustoa, kannattaa nyt tarkistaa jokainen palvelin erikseen. Korjauksen ja uudelleenkäynnistyksen jälkeen .env, Security Key, devMode, dokumenttijuuri ja Project Configin vertailu kuuluvat tarkistukseen.
Mitä PHP2Shell tarkoittaa Craft-sivustoille
Craft CMS on toimistojen suosiossa, koska se tarjoaa joustavat sisältömallit ja siistit mallipohjat. Siksi monet toimistot ylläpitävät kymmeniä Craft-sivustoja eri palvelimilla ja hosting-paketeissa. PHP-tiimin mukaan PHP-haavoittuvuudet CVE-2026-109618 ja CVE-2026-109619 sallivat haittakoodin suorittamisen etänä ilman kirjautumista, Craft-versiosta riippumatta.
Toimistoille tärkein kysymys on siksi organisatorinen: mikä sivusto toimii missä, millä PHP:llä ja kuka vastaa päivityksestä? Luettelo kaikista asennuksista palveluntarjoajineen, PHP-tiloineen ja yhteyshenkilöineen on ensimmäinen askel. Miten tuemme toimistoja tässä, kuvaa sivu Tietoturvakumppani toimistoille.
Craft CMS:n tietoturva: PHP-version tarkistus
Control Panelissa Työkalut > Järjestelmäraportti näyttää PHP-version, tietokannan ja asennetut liitännäiset. Se on versio, jolla sivusto toimii verkossa. Craft-konsoli php craft, jonon käsittely ja cron-ajot käyttävät sen sijaan komentorivi-PHP:tä. Molempien on oltava korjattuja.
Korjatut upstream-versiot ovat 8.5.12, 8.4.27, 8.3.36 ja 8.2.35. Monet hosting-palveluntarjoajat tuovat korjaukset backporttina; numero pysyy silloin samana. Mitkä versiot ovat haavoittuvia, näyttää sivu Mitkä PHP-versiot ovat haavoittuvia?. Mitä PHP-versioita teidän Craft-versionne tukee, tarkistatte järjestelmävaatimuksista craftcms.comin dokumentaatiosta.
Craft käsittelee taustatehtävät jonossa. Jos se toimii pysyvänä prosessina prosessinhallinnan alla, myös se on käynnistettävä PHP-päivityksen jälkeen uudelleen.
Craftin hakemistot ja asetukset
| Paikka | Sisältö | Tarkistuskohde |
|---|---|---|
.env |
Tietokantatunnukset, CRAFT_SECURITY_KEY, muut avaimet |
arvot uusittava epäilyn jälkeen |
config/general.php |
devMode, allowAdminChanges, Control Panelin polku |
sisään ujutettu PHP-koodi |
config/project/ |
Project Config YAML:na | vertailu Gitiin |
web/ |
Dokumenttijuuri: index.php, cpresources/, usein lataukset |
ylimääräiset PHP-tiedostot |
storage/ |
Lokit, ajonaikaiset tiedostot, usein tietokantavarmuuskopiot | ei saavutettavissa verkon kautta |
templates/ |
Twig-mallipohjat | vieras JavaScript |
modules/, vendor/ |
omat moduulit ja liitännäiset | muutetut tiedostot, composer audit |
Usein huomaamatta jäävä kohta on storage/backups/. Craft tallentaa sinne tietokantavarmuuskopioita, jotka voivat sisältää täydellisiä asiakas- ja lomaketietoja. Tämä kansio ei saa koskaan olla dokumenttijuuren alapuolella.
Vaarattomat tarkistukset komentorivillä:
# Näytetään Project Configin ja tietokannan erot
php craft project-config/diff
# PHP-tiedostot dokumenttijuuressa paitsi index.php
find web -type f -name "*.php" ! -name "index.php"
composer audit
Tuotannossa devMode kuuluu olla false. Kun devMode on päällä, Craft näyttää yksityiskohtaisia virheilmoituksia poluilla ja koodiotteilla, jotka helpottavat hyökkääjien työtä.
Control Panel, käyttäjät ja liitännäiset
Control Panel sijaitsee oletuksena osoitteessa /admin. Tarkistakaa, kenellä on ylläpitäjän oikeudet, ja poistakaa entisten työntekijöiden ja freelancerien tunnukset. Craft tukee kaksivaiheista tunnistautumista; käyttäkää sitä kaikilla korotetuilla oikeuksilla varustetuilla tileillä.
Asettakaa tuotannossa allowAdminChanges arvoon false. Silloin kenttiä, osioita ja liitännäisten asetuksia voi muuttaa vain versioidun Project Configin kautta, ja jokainen poikkeama näkyy Gitiin verrattaessa. Plugin Storen liitännäiset tuovat mukanaan omaa PHP-koodia; tarkistakaa, ylläpidetäänkö ne vielä ja sopivatko ne tavoiteltuun PHP-versioon.
// config/general.php, ote tuotantoympäristöä varten
'devMode' => false,
'allowAdminChanges' => false,
Mihin Craft-päivitys pystyy ja mihin ei
Craftin tai liitännäisen päivitys sulkee tämän koodin virheitä ja voi mahdollistaa uudemmat PHP-versiot. Se ei korjaa PHP:tä, ei käynnistä PHP-FPM:ää eikä jonoa uudelleen, ei uusi vuotanutta Security Keytä eikä poista vieraita tiedostoja hakemistoista web/ tai storage/.
Toimistoille, joilla on monta Craft-asennusta, korjauksen jälkeen korostuu toistettavuus. Kirjatkaa jokaisesta sivustosta ylös, mikä PHP-versio on käytössä webissä ja komentorivillä, milloin uudelleenkäynnistys vahvistettiin ja olivatko tarkistukset poikkeavia. Tämä yleiskatsaus auttaa asiakkaiden kysymyksissä ja tulevissa ilmoituksissa. Ajatelkaa myös julkisesti tavoitettavia staging- ja kehitysympäristöjä. Ne toimivat usein devMode:lla, vanhemmilla tiloilla ja oikeilla asiakastiedoilla, ja ne unohtuvat mielellään päivityksissä. Jos on epäselvää, koskeeko asia asiakassivustoa, tiedottakaa asiakasta asiallisesti sen sijaan, että odottaisitte.
Miten PHP SOS auttaa konkreettisesti?
- Kartoitamme kanssanne kaikki Craft-asennukset palveluntarjoajineen, PHP-tiloineen ja vastuineen.
- Varmennamme korjauksen ja uudelleenkäynnistyksen palvelinkohtaisesti ja varmuuskopioimme lokit 20.10.2026 alkaen.
- Tarkistamme dokumenttijuuren,
storage:n, asetukset, käyttäjät ja Project Configin vertailun. - Pyynnöstä hoidamme asiakassivustojenne jatkuvan tietoturvahuollon tietoturvahuoltosopimuksessa, myös nimissänne.
Usein kysytyt kysymykset
Koskeeko PHP2Shell Craft CMS:ää?
Craft CMS:ssä itsessään ei ole uutta aukkoa. Se toimii kuitenkin PHP:llä, ja PHP2Shell on PHP:ssä. Jokainen Craft-asennus korjaamattomalla palvelimella on siksi mahdollisesti haavoittuva Craft-versiosta riippumatta.
Mistä Craft näyttää PHP-version?
Control Panelissa kohdassa Työkalut > Järjestelmäraportti. Siellä ovat PHP-versio, tietokanta ja asennetut liitännäiset. Asennettua backportia ei tunnista numerosta; sen vahvistaa hosting-palveluntarjoajanne.
Mikä Security Key on Craftissa ja miksi se uusitaan?
Tiedoston .env Security Key on tarkoitettu tietojen allekirjoittamiseen ja salaamiseen. Se, joka tuntee sen, voi olosuhteista riippuen väärentää istuntoja tai lomaketietoja. Epäilyn jälkeen se kannattaa uusia sovittuna toimistonne kanssa.
Mitä hyötyä on asetuksesta allowAdminChanges arvolla false?
Silloin kenttiä, osioita ja liitännäisten asetuksia ei voi enää muuttaa tuotannossa Control Panelin kautta. Muutokset tulevat vain versioidun Project Configin kautta, mikä tekee manipuloinnista vaikeampaa ja näkyvämpää.