← Tillbaka till listan

PHP2Shell blåste upp: CVSS 9.2, dagen före öppningen, och de två hålen var i kod i 10 år.

itadol5j

Först är slutsatsen att:PHP producerade en obehörig fjärrkod för CVSS 9.2, siffror CVE-2026-109618 och CVE-2026-109619, med ett smeknamn PHP2Shell. Den 20 oktober offentliggjordes det och den 21 oktober kl 1400 UTC-fläckar släpptes, medan Amazons honungssköterskor spelades in den 17 oktober - fyra dagar före öppningen.

Vad som är värre än det är det andra: dessa två hål är de första att komma till PHP 5.4, vilket betyder att det är så.De har varit i kod i över ett decennium.Jag vet inte. Och år 2024, när PHP kärnutvecklarrevisionen upptäckte OOMs väg, träffades teamet för att diskutera hur man fixar det.Vi gick inte med på det och sedan fixade vi det inte.Jag vet inte. Anledningen är att ingen trodde att det verkligen kunde användas.

Denna fras ser nu särskilt ironisk ut. Anledningen till att inte kunna göra det är inte att hålet är obetydligt, utan att kedjan är för komplex för att gå utöver den fysiska förmågan hos mänskliga forskare. Sedan kom AI och skrev ut det.

PHP2Shell Hole Cover: Impact Scope och Exposure Host

För det första, få ordet "multinationell nödsituation" ur vägen. Titta.

Titelns favoritord är "global alarm". Det är inte en överdrift den här gången, men det är en tydlig poäng.

  • PHP OfficiellEtt förhandsmeddelande utfärdades den 20 oktober och angav att UTC den 21 oktober kl 14.00 skulle släppas i en säker version om detaljerna läcktes eller fältades. Som ett resultat knivhöggs CVE-numret till Hacker News samma dag, och lanseringen planerad till 22 oktober tvingades till en dag tidigare.
  • Cert-EUsläpp rådgivande 2026-018 och inkludera båda CVE.
  • CloudflareDen 21 oktober sa CTO Dane Knecht direkt att "den tidiga attacken har setts dyka upp", och WAF-reglerna släpptes i sin helhet, inklusive fria användare. Men han betonade sig själv att det bara var stopp och den verkliga lösningen lappade.
  • Amazon hot informationMadPot honung burkar fångades försöker den 17 oktober, och en annan sats fångades den 21 oktober, och nyttolast och infrastruktur pekade på ett antal olika angripare. php2shell är redan allmänt används.
  • Titta TowrBåda hålen återskapas, medan försök att utnyttja båda observeras.

Så "attacken har hittats" är inte en rendering, utan ett faktum. Och den multinationella nödsituationen är inte ett slag - det är bara att huvudpersonerna i svaret är tillverkare, CDN och akutorganisationer, inte någon regering i landet.

Två, två hål, två helt olika sätt att dö.

Många tror att det är ett hål med två siffror, nej. Dessa är två separata attackvägar, varje CVSS 9.2.

Jämförelse av tekniska vägar för två hål

CVE-2026-109618: Bomb när minnet är uttömt

Behandlingen av en förfrågan avbryts när PHP-minnesdistributionen misslyckas. Problemet är:Vid denna tidpunkt kan de interna förfrågningsdata ha endast halvinitierats, och den efterföljande rengöringslogiken skulle ha använt denna oinkorporerade bit av dåliga data som giltiga data.

Den trigger metoden är enkel: konstruera en mångsidiga begäran för att implodera minnet. Det konstiga är,Storleken på begäran verkar matcha ditt tak.Det är inte den post max storlek du ställer in, det är avkodningen och konsumtionen av intern bearbetning.

Det värsta är mod php. Mod php för Apache när du begär start misslyckadesDet kommer fortfarande att städa upp., så denna kedja kan slutföras innan någon tillämplig kod körs. Din PHP-kod är så ren, det finns inget kryphål, det finns inget stopp för det.

PHP-FPM kommer att döda arbetaren när den inte startar, bara för att skära kedjan, så officiellt är mod php den högsta risken. Men var uppmärksam - det betyder inte att FPM är säkert.Efter framgångsrik startDet finns fortfarande en möjlighet till utnyttjande.

CVE-2026-109619: Dirty state mellan förfrågningar

Den här är värre. PHP kommer att återanvända arbetsprocessen för att behandla flera förfrågningar. Den sista begäran om att släppa minnet, pekaren förblir i det interna tillståndet; nästa begäran kommer in.Läs den tomma adressen innan normal initiering.Jag vet inte.

Dödliga fel (nedbrytning av minne, prestanda timeout) avbryter statlig rengöring. Ännu värre, någon icke-dödlig diagnos under avstängningen skulle ha ersatt fel tillstånd.Redo det.Jag vet inte.

Officiellt bekräftade vägar inkluderar: RCE med dödligt fel när PHP 8.5 aktiverade Fatal felbacktraces (standardöppning) och sessionens livscykel RCEs på motor php och FPM.session.upload_progress Som standard kan du agera som en tidig konsument i ett tillstånd av smuts.Och det finns inget behov av att tillämpa call(s)Jag vet inte.

Detta hål är fortfarande fäst.Memory LeakJag vet inte. Vad var leaking? är lösenordet, token, API-nyckeln, certifikat för andra förfrågningar i processminnet. Wiz jämförde direkt med Heartbled, vilket inte är för mycket.

Tidslinje, mer än titeln Look.

PHP2Shell Event Timeline: avsatt från 2024 till 10-17 fältanvändning
TidVad hände?
År 2024PHP kärnutvecklare granskning fann OOM, att bugg, laget hade ingen konsensus om lagen, sätta den på håll.
2026-08Ryan Austin of Calif identifierar kryphål med OpenAI GPT-5.6 Sol; Wiz Independent Discovery
2026-10-17Amazon MadPot, honungen kan spela in ett försök, fyra dagar före öppningen.
2026-10-20CVE-nummer läckt i Hacker News och Social Media, PHP
2026-10-2114:00 UTC Publication 8.5.12/8.4.27/8.3.36/8.2.35

17 oktober måste uteslutas.Allmänheten var den 20:e, men attacken ägde rum den 17:e.Amazon-förslaget är enkelt: utgångspunkten bör inte vara på utlämnandedatum, utan vidare till minst 17 oktober.

När det gäller hur angriparna fick informationen i förväg sa Amazonas "inte klart". Jag kan inte gå in i detta, men du måste acceptera en verklighet.Upplysningsdagen var aldrig attackens dag, men den dag du äntligen visste.

Fyra, den här gången är det verkligen AI.

Wiz blogg innehåller en mening som jag har läst två gånger: "Dessa underliggande brister har funnits i årtionden, men för att bevisa att de kan användas behöver de en exceptionellt komplex kedja av steg, på marginalerna för de faktiska förmågorna hos mänskliga forskare.Frontline AI-modellen sänker avsevärt tröskeln.Jag vet inte.

Specifik: Ryan Austin, forskare i Calif, hittades i OpenAI-projektet "Patch the Planet" med GPT-5.6 Sol. Wiz hittade samma problem självständigt. För att kunna utnyttja det behöver vi en kedja av fel och rikta varje mål.Minneslayouten kalibreras upprepade gångerWiz säger att frontlinjens modell tillåter dem att utveckla användbara applikationer för olika applikationer inom några timmar.

Det betyder inte "AI vann igen".Poängen är att "komplexets" moat misslyckas.

Många gamla kryphål har inte misshandlats under de senaste två decennierna, inte för att de inte är allvarliga, men eftersom tröskeln för användning är för hög - några veckors investeringar av toppforskare och lite tur. Så du sätter dem i "teoretiskt riskfyllda" kolumnen. Nu är detta staket borta.

De tioåriga hålen som ligger i ditt system och bedöms som "svåra och obearbetade" måste omvärderas.

Fem, vilken ska du gå till?

Jämförelse av PHP återställda versioner
BranchPåverkad versionDisponsal
PHP 8.5< 8.5.12Höj till 8.5.12.
PHP 8.4< 8.4.27Höj till 8.4.27.
PHP 8.3< 8.3.36Höj till 8.3.36.
PHP 8.2< 8.2.35Höj till 8.2.35.
PHP 7.4/8.0/8.1Allt alltOfficiellt opublicerad, källnivå endast
PHP 5.4 – 7.3Allt alltEOL, regeringen fixar det inte. Företag Business

Flera verkliga påminnelser:

  • Linux Release och LTS VendorFick en patch i förväg.Kontrollera tillverkarens rådgivning med ett distributionspaket. Rush inte källkoden.
  • Användning rpms.remirepo.net PHP uppgav officiellt källan den 21 oktober.Ingen uppdateringSå du kan byta till ett distributionspaket eller göra det från källkoden.
  • Windows-binären för PHP 8.5 finns också på den officiella nedladdningssidan.
  • Tro inte att det är okej att köra i behållaren - PHP-versionen av behållarspegeln måste kontrolleras.

Sex, om du inte kan få en lapp, gör dessa fyra först.

Första staten:Ingen av dessa nedan kommer att göra dig säker.Den officiella PHP-frasen är "minska exponeringen för specifika attackvägar, men gör inte installationer säkrare". Deras värde är att ge dig tid att få fläckar.

Fyra interimsbegränsningsåtgärder och deras begränsningar

Ställ in minnesgräns till -1

Syfte: Att ta ut det förutsägbara PHP-minneslocket misslyckades, dvs CVE-2026-109618 har bekräftat det utlösande tillstånd som det beror på.

Poängen är,Hur?att ställas in på platser där ansökan är oförändrad, till exempel FPM Pool php_admin_value eller Apache Configuration. Du måste kontrollera att det inte finns några pops, kataloger, applikationsinställningar för att lägga till gränsen tillbaka.Sedan starta om varje arbetare.

Priset är klart: du är utanför PHP: s egna minnesstängsel, och den nedre distributionsfel kan fortfarande vara på den farliga vägen. Så det måste vara en behållare eller en grupp för att begränsa omslaget - men det är bara en strategi för att "döda drabbade människor".Använd aldrig RLIMIT AS eller RLIMIT DATADessa två är just den typ av distributionsfel som skapar kryphål.

Minska post max storlek

Webbplatser utan fil 8M för att lämna in 32M och garanterad upload_max_filesize Mindre än det. Samtidigt läggs gränserna till webbservern eller proxylagret - volymen av förfrågningar avkodade, antalet fält, antalet multipartsdelar, antalet huvuden, djupet av bon.Dessa restriktioner måste omfatta förfrågningar som inte är giltiga innehållsrättEller vi ska gå runt det.

3. Stäng av session.upload process

session.upload_progress.enabled = 0

Den är skriven i php.ini, FPM-verktyg eller serverkonfiguration.Det måste vara effektivt innan begäran.Jag vet inte. Användning ini_set() Eller FPM. .user.ini Det var för sent - det var smutsigt. Förändring är också att starta om alla arbetskamrater.

PHP 8.5 En mer singel

fatal_error_backtraces = 0

Detta block bekräftade bara dödliga felbackspår, utan andra varianter. Också kräva administratörsnivåinställningar + omstart arbetstagare.

Dessutom nämner den officiella att många ignorerar:Fixa de dödliga fel som angriparna kan utlösa och utföra time out., inklusive back-up, uppladdning, importbearbetning, rengöringsfel. Och...Radera föråldrade eller olagliga konfigurationer på begäran-förfrågan grund- De spottar ut diagnostisk information innan den initieras och matar läckan.

Denna sista mening är lättast missförstådd:Det fungerar inte för att dölja diagnosen med felrapportering, visa fel eller @.Det händer inte.

VII. Riktiga telefoner av detta

Jag vill inte avsluta med att skriva "Stäng patchen". Självklart är det en patch. Det är idag. Men vissa domar måste förändras.

  1. Termen "svårt att använda" är inte längre densamma som "förskriven".PHP denna hålets accesskedja är komplicerad nog att behöva hjälp av AI, som redan har hjälpt. De gamla hålen i din tillgångslista som markerar "teorisk" bör omvärderas.
  2. Språk går på en enda punkt.WordPress, Drupal, Joomla, Magento, MediaWiki körs alla på PHP, din applikationskodgranskning är ren och PHP-kärnan är i trubbel. Kompensatorisk rytm av infrastrukturskikt, med applikationsskikt separerade.
  3. "Ansökningskoden är trasig utan att springa." WAF kan bara fördröja.Cloudflare sa själv att det var stopgap. Att sätta WAF som en lösning är lika med att ge liv för att styra täckningen.
  4. Det finns många gamla platser i landet med PHP.Dessa stationer som körs på PHP 5.6/7.0, som för länge sedan var oöverträffade och hängda på en molnmajord, är i denna exponering på 1,3 till 1,9 miljoner. De kommer inte att få något meddelande.

Datakalibreringar registreras: W3Techs säger att PHPs står för 69,3 procent av de språk som är kända för tjänsten och Wiz 70 procent; exponeringsvärdar, säkerhetsforskaren Silas Cutler uppskattar över 1,3 miljoner och Henk Poleys Shodan-sökning är över 1,9 miljoner. Dessa siffror är av olika kaliber och använder dem inte som exakta värden, men skalan är densamma.Miljontals globalt.

En mer detalj är värt att komma ihåg: när CVE-numret läcktes, bekräftades CVSS-poängen som kom ut 10,0, PHP officiellt.Denna poäng var fel.Det är faktiskt 9.2. Ingen skulle veta något om denna detalj, men det kommer alltid att vara i omlopp. Se 10.0, du vet vilken våg det är.

Ett 10-årigt hål, två månader av AI-assisterad forskning, fyra dagar av tidig användning, en dags lappfönster. Denna tidsskala är det normala av all grundläggande programvara som följer.

Kontrollera versionen nu.php -vEller titta på dina behållare speglar på taggen. Vänta inte på morgondagen.