Kort sagt: En WordPress-uppdatering hjälper inte mot PHP-sårbarheten PHP2Shell, eftersom felet inte sitter i WordPress utan i PHP, programvaran på servern som kör WordPress. Enligt Dr. Web planerar WordPress.org därför inte heller någon egen uppdatering. Skydda kan bara en PHP-uppdatering på servern med omstart av alla PHP-processer. Den installerar i regel ert webbhotell eller er serverdriftansvarige.
Utgångspunkten: ”Vi har ju uppdaterat allt”
Efter de första rubrikerna om PHP2Shell har många driftansvariga gjort det närliggande: öppnat WordPress-dashboarden, klickat på ”Uppdatera nu”, tillägg och teman likaså. Därefter är allt grönt, och känslan säger: avklarat.
Vid den här sårbarheten bedrar känslan. Det beror inte på WordPress utan på var felet sitter. Även Cloudflare påpekar i sitt meddelande att en uppdatering av applikationskod eller tillägg inte åtgärdar sårbarheterna.
WordPress-uppdatering och PHP-sårbarhet: lagermodellen
En WordPress-webbplats består av flera lager som bygger på varandra. Varje lager har egna uppdateringar och ofta egna ansvariga:
| Lager | Exempel | Vem uppdaterar typiskt | Berört av PHP2Shell? |
|---|---|---|---|
| Operativsystem | Debian, Ubuntu, AlmaLinux | webbhotell eller serveradmin | nej, men levererar ofta PHP-paketet |
| Webbserver | Apache, Nginx, LiteSpeed | webbhotell eller serveradmin | driftläget påverkar risken |
| PHP-körmiljö | PHP-FPM, mod_php | webbhotell eller serveradmin | ja, här ligger sårbarheten |
| WordPress-kärna | WordPress | driftansvarig eller byrå | nej |
| Tillägg och teman | WooCommerce, page builder | driftansvarig eller byrå | nej |
Uppdateringsknappen i dashboarden når bara de två nedersta raderna. PHP-körmiljön ligger under och är osynlig för WordPress. Hur andra system bygger på PHP beskriver inlägget CMS och butiker på PHP.
Varför WordPress inte kan stänga sårbarheten
Man kunde tro att WordPress kan ”programmera runt det”. Det fungerar inte vid PHP2Shell av två skäl.
För det första ligger båda felen i sättet PHP bearbetar förfrågningar och därefter städar upp. Det sker oberoende av vilket program som körs i PHP. För det andra har PHP-teamet för Apache med mod_php visat en exploit som slår till innan någon applikationskod överhuvudtaget körs. WordPress, dess tillägg och varje säkerhetstillägg kommer då inte ens till.
Av samma skäl hjälper inget ”härdningstillägg” som ändrar inställningar via ini_set(). php.net avråder uttryckligen från att sätta tillfälliga åtgärder på den vägen.
Och vid hanterad WordPress?
Vid erbjudanden med hanterad WordPress sköter leverantören ofta inte bara WordPress-uppdateringarna utan även servern under. För PHP2Shell är det en fördel, men ingen automatik. Fråga konkret om PHP-uppdateringen har installerats och alla PHP-processer startats om. Påståendet ”Vi håller er WordPress aktuell” besvarar inte den frågan.
Många webbplatser, en PHP-installation
Byråer och företag med flera webbplatser bör känna till en särskild omständighet: på en server delar ofta många WordPress-installationer samma PHP-version. Är den opatchad är alla berörda, oberoende av hur väl varje enskild webbplats sköts. Omvänt skyddar en PHP-uppdatering alla installationer på en gång, förutsatt att alla tillhörande PHP-processer därefter startas om. Den som driver flera PHP-versioner parallellt måste uppdatera varje enskilt.
En grön WordPress-dashboard säger ingenting om PHP2Shell. Avgörande är PHP:s patchnivå på servern och omstarten av alla PHP-processer.
Läs PHP-versionen i WordPress rätt
WordPress visar PHP-versionen: i dashboarden under Verktyg, Webbplatsens hälsa, i området Rapport vid avsnittet Server. Det är en bra första fingervisning men inget bevis.
Står där en gren som 8.1 eller äldre är det en tydlig varningssignal, eftersom det inte längre finns några officiella uppdateringar för den. Står där 8.2.35, 8.3.36, 8.4.27 eller 8.5.12 är den åtgärdade nivån installerad. Står där ett äldre nummer för en gren med support kan en backport ändå vara installerad. Distributioner och webbhotell ändrar då ofta inte numret. Klarhet ger bara webbhotellets bekräftelse eller en blick i paketets changelog. Hur det går till står under Kontrollera PHP-version och patchnivå.
Vad WordPress-ägare bör göra i stället
- Fråga webbhotellet eller serverns driftansvarige: Är PHP patchat, när, och har alla PHP-processer startats om? Svar skriftligt.
- Kontrollera PHP-grenen: Körs webbplatsen på 8.1 eller äldre, planera bytet till en gren med support. Vilken version er WordPress-version stöder står i systemkraven på wordpress.org. Bytet i kundmenyn beskriver Ändra PHP-version i webbhotellets kundområde.
- Kontrollera spår: nya PHP-filer i
wp-content/uploads, okända administratörskonton, främmande poster imu-plugins. De typiska gömställena beskriver sidan WordPress och PHP2Shell. - Håll ändå WordPress aktuellt: Kärna, tillägg och teman stänger andra sårbarheter. Det förblir ett krav, bara ett annat.
- Klargör ansvaret: Om en byrå sköter webbplatsen, fastställ om den också ansvarar för PHP eller bara för WordPress.
Just den sista punkten skapar ofta luckor. Byrån sköter WordPress, webbhotellet servern, och var och en tror att den andre har koll på PHP2Shell.
Hur hjälper PHP SOS konkret?
- Klargöra lagren: Vi fastställer vem som ansvarar för vilket lager hos er WordPress-webbplats.
- Uppdatera PHP: På egna eller hanterade servrar installerar vi PHP-uppdateringen och startar om alla processer.
- Kontrollera WordPress: Vi söker efter spår av ett angrepp i filer, databas och konton.
- Bevis: Ni får patchnivån skriftligt, även för vidarebefordran till byrå eller kunder.
Förloppet beskriver PHP-patchtjänsten.
Slutsats
WordPress-uppdateringen är god skötsel men mot PHP2Shell fel lager. Sårbarheten sitter en våning längre ned, i PHP på servern. Den som förstår det ställer rätt fråga på rätt ställe: Är PHP patchat, omstartat och styrkt?
Vanliga frågor
Kommer WordPress med en säkerhetsuppdatering mot PHP2Shell?
Enligt Dr. Web planerar WordPress.org ingen uppdatering mot PHP2Shell, eftersom sårbarheten ligger i PHP-tolken på servern. Åtgärd ger bara en PHP-uppdatering från webbhotellet eller serverns driftansvarige.
Var ser jag PHP-versionen i WordPress?
I dashboarden under Verktyg, Webbplatsens hälsa, i området Rapport vid avsnittet Server. Det visade numret säger dock inte säkert om patchen är installerad, eftersom webbhotell ofta bygger in rättningar som backport utan nytt versionsnummer.
Skyddar ett säkerhetstillägg mot PHP2Shell?
Bara mycket begränsat. Ett tillägg körs självt i PHP och blir aktivt först när WordPress är laddat. Vid Apache med mod_php har enligt PHP-teamet en exploit visats redan innan någon applikationskod körs. Där kan ett tillägg inte ingripa.
Ska jag uppdatera WordPress ändå?
Ja. Aktuella versioner av WordPress, teman och tillägg stänger andra sårbarheter och är en del av god skötsel. De löser bara inte problemet PHP2Shell.