Lyhyesti: Laravelin haavoittuvuus, jota monet kehittäjät nyt etsivät, on PHP2Shell, ja se on PHP:ssä itsessään. Laravel-päivitys ei sulje sitä. Tärkeitä ovat korjattu PHP, kaikkien prosessien, myös queue-workerien ja Octanen, uudelleenkäynnistys sekä .env:n, storage:n ja public:n tarkistus.
Mitä PHP2Shell tarkoittaa Laravel-sovelluksille
Laravel on monen omatekoisen ratkaisun perusta: asiakasportaalit, sisäiset työkalut, varausjärjestelmät, sovellusten rajapinnat. PHP-tiimin mukaan PHP-haavoittuvuudet CVE-2026-109618 ja CVE-2026-109619 sallivat haittakoodin suorittamisen etänä ilman kirjautumista. Sillä, kuinka siistiä Laravel-koodi on, ei ole tässä merkitystä.
Haavoittuvia ovat ajotavat PHP-FPM, Apache mod_php:llä, php-cgi, FrankenPHP ja LiteSpeed. Laravel Octane voi käyttää FrankenPHP:tä palvelimena; silloin PHP on FrankenPHP-ohjelmassa tai konttikuvassa ja päivittyy sen mukana. Miltä tämä näyttää FrankenPHP:n kohdalla, kuvaa sivu FrankenPHP:n suojaus.
Laravelin haavoittuvuus: PHP-version ja prosessien tarkistus
Komentorivillä php artisan about näyttää PHP-version, Laravel-version ja tärkeitä asetuksia, kuten ympäristön ja debug-tilan. Se on kuitenkin CLI-PHP:n versio. Verkkopyynnöt käsittelee PHP-FPM tai Octane, ja se voi olla eri versio. Pyytäkää epäselvässä tapauksessa ylläpitäjää vahvistamaan, mikä pakettitila on käytössä kaikilla reiteillä.
Korjatut upstream-versiot ovat 8.5.12, 8.4.27, 8.3.36 ja 8.2.35; backportit voivat kantaa vanhempia numeroita. Mitä PHP-versioita teidän Laravel-versionne tukee, tarkistatte järjestelmävaatimuksista laravel.comin dokumentaatiosta.
Päivityksen jälkeen tulee Laravelissa useimmin unohtuva osa: pitkäikäiset prosessit.
# Näytetään versiot ja asetukset
php artisan about
# Käsketään queue-workerit päättymään nykyisen työn jälkeen
php artisan queue:restart
# Lopetetaan Horizon, jotta prosessinhallinta käynnistää sen uudelleen
php artisan horizon:terminate
Workerit käynnistyvät sen jälkeen uudelleen vain, jos prosessinhallinta, kuten Supervisor tai systemd, valvoo niitä. Octane-palvelimet ja kontit on käynnistettävä kokonaan uudelleen tai otettava käyttöön uudella kuvalla. Konttiympäristöissä pätee PHP:n korjaus Docker-konteissa.
Missä Laravel-sovellukset ovat haavoittuvia
| Paikka | Sisältö | Tarkistuskohde |
|---|---|---|
.env |
APP_KEY, tietokanta, sähköposti, API-avaimet |
ei saa koskaan olla avattavissa verkon kautta |
bootstrap/cache/config.php |
välimuistissa oleva asetus salaisuuksineen | oikeudet, muutospäivä |
public/ |
dokumenttijuuri: index.php |
ylimääräiset PHP-tiedostot |
storage/app/public |
lataukset, saavutettavissa polun public/storage kautta |
ei PHP-tiedostoja |
storage/logs/ |
laravel.log, usein pyyntötietoineen |
talteen, ei julkiseksi |
vendor/ |
Composer-paketit | composer audit, vertailu tiedostoon composer.lock |
Hakemisto storage/app/public on saavutettavissa symbolisen linkin kautta polussa public/storage. Sinne tallennettu PHP-tiedosto voidaan palvelimen asetuksista riippuen suorittaa suoraan. Estäkää se verkkopalvelimen tasolla.
APP_DEBUG on tuotannossa oltava false. Debug-tulosteella varustettu virhesivu voi näyttää ympäristömuuttujia, polkuja ja osia koodista ja helpottaa jokaisen hyökkääjän työtä.
Hallintaliittymät ja paketit riskinä
Laravel-sovelluksilla ei ole yhtenäistä hallintaliittymää. Usein ne ovat omia alueita tai paketteja, kuten Filament tai Nova. Tarkistakaa, kenellä on ylläpitäjän oikeudet, onko kirjautumisessa kaksivaiheinen vaihe ja tarvitseeko hallintareittien olla ulkopuolelta saavutettavissa. Myös API-tokenit, esimerkiksi Sanctumista tai Passportista, kannattaa epäilyn jälkeen kumota ja antaa uudet.
Tarkistakaa lisäksi, ovatko kehityksen työkalut tavoitettavissa tuotannossa, esimerkiksi debug-palkit, Telescope tai testireitit. Ne näyttävät usein pyyntöjä, kyselyjä ja asetuksia, ja ne kuuluvat kirjautumisen taakse tai kokonaan pois tuotantoympäristöstä.
Composer-paketit ovat toinen suuri lohko. Jokainen riippuvuus tuo mukanaan omaa koodia, ja ylläpitämättömät paketit estävät myöhemmin PHP-päivitykset. composer audit näyttää tunnetut aukot, mutta ei korvaa oman koodin tarkistusta.
Mihin Laravel-päivitys pystyy ja mihin ei
Laravelin tai yksittäisten pakettien päivitys sulkee tämän koodin tunnetut virheet. Se ei korjaa PHP:tä, ei käynnistä workereita uudelleen, ei uusi vuotanutta APP_KEY:tä eikä poista tiedostoja hakemistoista storage tai public. Sen, onko ennen korjausta tapahtunut jotain, voi selvittää vain tarkistamalla lokit, tiedostot ja tietokannan.
Tiimeille, joilla on käyttöönottoputki, pätee: PHP-päivitys kuuluu myös build-ympäristöön ja peruskuviin, muuten seuraava käyttöönotto tuo taas vanhan version. Tarkistakaa lisäksi, ovatko staging- tai review-ympäristöt julkisesti tavoitettavissa. Ne toimivat usein arvolla APP_DEBUG=true ja oikeilla tiedoilla, ja ne jäävät helposti huomaamatta tietoturvapäivityksissä.
Miten PHP SOS auttaa konkreettisesti?
- Tarkistamme Laravel-sovelluksenne web-, CLI- ja worker-PHP:n ja tuemme kaikkien prosessien hallittua uudelleenkäynnistystä.
- Varmuuskopioimme lokit 20.10.2026 alkaen, tietokannan ja koodin tilan ja vertaamme sitä repositorioonne.
- Tarkistamme
.env:n, asetusten välimuistin,storage:n,public:n, ylläpitäjätilit ja API-tokenit. - Oman koodin syvempää tarkastusta varten välitämme erikoistuneiden kumppaneiden kautta tietoturva-auditoinnin tai penetraatiotestin.
Usein kysytyt kysymykset
Pitääkö minun päivittää Laravel PHP2Shellin takia?
Laravel-päivitys ei sulje PHP2Shelliä, koska aukko on PHP-tulkissa. Pitäkää Laravel silti ajan tasalla. PHP2Shellia vastaan tarvitsette korjatun PHP:n ja kaikkien PHP-prosessien, myös workerien, uudelleenkäynnistyksen.
Miksi PHP-FPM:n uudelleenkäynnistys ei Laravelissa usein riitä?
Queue-workerit, Horizon, Octane ja ajastin toimivat omina PHP-prosesseinaan komentoriviltä. Ne lataavat PHP:n kerran käynnistyessään ja jatkavat sen jälkeen vanhalla versiolla muistissa, kunnes ne käynnistetään uudelleen.
Mitä tehdä, jos .env-tiedosto on voinut vuotaa?
Silloin APP_KEY, tietokannan salasana ja kaikki ulkoisten palvelujen avaimet kannattaa uusia. Huomatkaa, että uusi APP_KEY päättää voimassa olevat istunnot ja tekee vanhalla avaimella salatut tiedot lukukelvottomiksi; suunnitelkaa se kehittäjienne kanssa.