PHP2Shell: därför brinner internet i dag, och därför berörs inte PixelUnion

Om du arbetar i närheten av en webbserver är i dag ingen lugn onsdag. Två kritiska sårbarheter i PHP, med öknamnet PHP2Shell, läckte ut på nätet innan PHP-teamet hann släppa en rättning. Administratörer över hela världen väntar nu på en patch som är planerad till 14:00 UTC i dag, och angripare väntar precis bredvid dem.
Kort version för PixelUnion-användare: dina foton är inte i fara. Den längre versionen kommer här.
Vad PHP2Shell är
PHP2Shell är namnet på två sårbarheter, CVE-2026-109618 och CVE-2026-109619. Båda har betyget 9,2 av 10 på CVSS v4.0-skalan. Det betyget innebär att en angripare kan köra sin egen kod på en sårbar server utan att logga in. I praktiken: skicka rätt förfrågan till en webbplats och få ett skal på maskinen bakom den. Därav namnet.
Den exakta grundorsaken har inte publicerats. Forskare misstänker ett minnesfel (ett så kallat use-after-free) i den del av PHP som hanterar filuppladdningar, men det är inte bekräftat, och minst en granskning ifrågasätter det. Det som är bekräftat: säkerhetsföretaget watchTowr säger att de har reproducerat en av de två sårbarheterna och att “these vulnerabilities are indeed real.” Vilka PHP-versioner som berörs är också oklart. Tidiga uppgifter nämner allt ända tillbaka till PHP 5.4, och PHP har inte publicerat något officiellt intervall.
Därför brinner internet i dag
Tre saker gör den här värre än ett vanligt säkerhetsmeddelande.
För det första, räckvidden. PHP driver ungefär tre fjärdedelar av alla webbplatser där serverspråket är känt. WordPress, de flesta webbutiker, otaliga hostingpaneler och forum bygger på det. En sårbarhet för fjärrkörning av kod i själva PHP, inte i ett enskilt tillägg eller en enskild app, träffar en enorm del av webben på en gång.
För det andra, läckan. Normalt kommer rättningen först och detaljerna senare, vilket ger försvararna ett försprång. Den här gången kom detaljerna ut före patchen. Den nödlösning som spreds först, att stänga av PHP:s funktion för uppladdningsförlopp, visade sig vara ofullständig. Under en period visste alla att dörren stod öppen och ingen hade ett lås.
För det tredje blir själva patchen en karta. När de rättade versionerna är offentliga kan angripare jämföra gammal och ny kod och se exakt vad som ändrats. Säkerhetsföretaget Sansec räknar med massutnyttjande inom ungefär 15 minuter efter släppet. Dessutom visar skanningar att omkring 884 000 internetuppkopplade servrar fortfarande uppger PHP 8.1 eller äldre. De grenarna har nått slutet av sin livstid och får sannolikt aldrig någon rättning.
I dag sitter därför många och tittar på en releasesida, redo att uppgradera i samma stund den publiceras. Några hinner inte i tid.
Därför berörs inte PixelUnion
PixelUnion bygger på Immich, och Immich är inte skrivet i PHP. Servern är TypeScript som körs på Node.js, med en separat tjänst för maskininlärning i Python. Det finns ingen PHP-tolk någonstans på vägen mellan din mobil och dina foton. En bugg i PHP:s uppladdningshantering kan inte utlösas på en server som inte kör PHP.
För fullständighetens skull: vi körde faktiskt en liten kringtjänst i PHP. Den låg utanför fotoplattformen, på separat infrastruktur, och hade ingen åtkomst till ditt bibliotek. Vi ville inte chansa på att en okänd patch skulle komma i tid, så vi stängde av den före släppfönstret. Den förblir avstängd tills vi har verifierat en rättad version.
Inget av detta betyder att vi tror oss vara immuna mot säkerhetsproblem. Alla stackar har buggar, även vår. Det som räknas är att veta exakt vad som körs var, hålla angreppsytan liten och agera snabbt när något sådant här landar. Det är jobbet, och vi fortsätter göra det.
Om du driver egna PHP-sajter, kolla PHP:s säkerhetsmeddelanden och patcha så fort releasen är ute. Om du letar efter en plats för dina foton som är byggd med den här sortens omsorg välkomnar vi dig gärna.
Kom igång gratis med PixelUnion →
Omslagsfoto av Ricardo Gomez Angel på Unsplash.