I onsdags fick vi många frågor om PHP2Shell, och SVT skrev att miljontals sajter riskerade att drabbas. Här är vad som hände hos oss, timme för timme.
Säkerhetshålet sitter i PHP, programspråket som WordPress körs på, och inte i WordPress självt. Det gick alltså inte att lösa med en uppdatering av sajten. Det var servern som behövde åtgärdas.
Kvällen innan visste ingen vad det gällde
PHP gick ut med en avisering kl. 22.32 på tisdagskvällen den 20 oktober. Där stod att två kritiska hål skulle rättas dagen efter, men inget om hur de fungerade. Med så lite information fanns det inget vi kunde ändra på servrarna.
På onsdagsförmiddagen dök ett angreppsexempel upp på GitHub. Då såg vi att angreppet gick via en funktion i PHP som visar hur långt en filuppladdning har kommit.
Vi stängde funktionen samma eftermiddag
Kl. 14.57 började vårt driftbolag Synotio stänga av funktionen på alla servrar, och kl. 15.12 var det klart. WordPress använder inte funktionen, så vi kunde stänga av den utan att någon sajt påverkades.
Avstängningen stängde den väg som det publicerade angreppet använde. Den riktiga lösningen var den rättade PHP-versionen, och den släppte PHP kl. 16.00.
Sedan uppdaterade vi alla servrar
Kl. 18.16 började vi rulla ut den rättade PHP-versionen, och kl. 01.32 var den installerad hos alla kunder, även på servrar med äldre PHP-versioner.
Tidslinjen, svensk tid
- 20 oktober kl. 22.32: PHP aviserar två kritiska hål, utan detaljer.
- 21 oktober kl. 10.31: ett angreppsexempel publiceras på GitHub.
- 21 oktober kl. 14.57–15.12: vi stänger av funktionen som angreppet använder, på alla servrar.
- 21 oktober kl. 16.00: PHP släpper rättelserna.
- 21 oktober kl. 18.16: vi börjar rulla ut den rättade PHP-versionen.
- 22 oktober kl. 01.32: uppdateringen är klar hos alla kunder, även på äldre PHP-versioner.
Behöver ni göra något?
Ligger er sajt i vår drift behöver ni inte göra något. Har ni hosting någon annanstans, fråga er leverantör om PHP är uppdaterat efter den 21 oktober och hur de har hanterat äldre versioner.
För utvecklare
PHP2Shell består av CVE-2026-109618 och CVE-2026-109619, båda med 9,2 i CVSS v4.0. Angreppsexemplet utnyttjade session upload progress, så vi satte session.upload_progress.enabled = Off globalt i php.ini. Enligt PHP:s säkerhetsmeddelande täcker det CVE-2026-109619 och är inget fullständigt skydd, därför uppdaterade vi så fort det gick.
De dedikerade servrarna uppdaterades med paket från Remi och de delade klustren med CloudLinux ALT PHP. Versioner som inte längre får officiella uppdateringar fick bakåtportade patchar. Rättade versioner från PHP: 8.5.12, 8.4.27, 8.3.36 och 8.2.35.
Hör av er om ni undrar något, eller om ni vill att vi tittar på hur er sajt driftas.