
OrcaCyber Research - PHP2Shell: Hur en misslyckad begäran blev fjärrkodkörning
- OrcaNYOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 per 1M tokens · 13 tok/s
- deepseekNYDeepSeek: DeepSeek V4.1 Flash 10172026-10-1745Intelligens
- DeepSeekNYDeepSeek: DeepSeek V4.1 Flash2026-10-1740Intelligens
- OrcaNYOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 per 1M tokens · 151 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2952Intelligens
- anthropicAnthropic: Claude Sonnet 5.52026-09-2856Intelligens
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 per 1M tokens · 1076 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2238Intelligens
- OpenAIOpenAI: GPT-6 Sol2026-09-2248Intelligens
- AnthropicAnthropic: Claude Opus 5.52026-09-2258Intelligens
- xAIGrok 4.72026-09-2146Intelligens
- OrcaOrca: OrcaCyber Zero 1.02026-09-17$3.00 / $7.50 per 1M tokens · 157 tok/s
- OrcaOrca: OrcaVerify Text 1.02026-09-16$2.00 / $0.00 per 1M tokens · 1885 tok/s
- OpenAIOpenAI: GPT-6 Astra2026-09-0453Intelligens77Kodning
- GoogleGoogle: Gemini 3.8 Flash2026-09-0241Intelligens76Kodning
- AlibabaQwen: Qwen3.8 Max (0902)2026-09-0245Intelligens76Kodning
- AnthropicAnthropic: Claude Fable 5.12026-09-0153Intelligens82Kodning
- TencentTencent: Hy4 preview2026-08-28$0.83 / $2.50 per 1M tokens · 49 tok/s
- AlibabaQwen: Qwen3.8 Flash2026-08-26$0.15 / $0.47 per 1M tokens · 105 tok/s
- z-aiZ.ai: GLM 5.3 Flash2026-08-2642Intelligens72Kodning
Konceptbeviset i denna undersökning skapades med OrcaCyber Zero och OrcaCyber Ultra-modeller. Forskningspaketet dokumenterar analys på källkodsnivå, en kontrollerad reproduktion med en anpassad offentlig exploit, en artefakt för minnesläcka, processkrascher och bevis på kommandokörning. De tillhandahållna filerna registrerar inte oberoende vilka steg som utfördes av respektive modell; modellattributionen tillhandahålls av forskningsteamet.
Ett fatalt slut-på-minne-tillstånd bör avsluta en förfrågan säkert. Här kunde det avbryta PHP medan det inbyggda tillståndet bara var delvis initierat, vilket lämnade referenser som bestod in i nästa förfrågan. Resultatet var ett brott mot minnets livslängd mellan förfrågningar, med konsekvenser som sträckte sig från informationsröjande till fjärrkodkörning i den testade miljön.
Viktigaste bevisningen i korthet
• Mål — PHP 8.4.26, Apache/mod_php, en enda worker, isolerad Docker-lab.
• Kraschloggar — En SIGABRT och tre SIGSEGV-arbetaravslut i det medföljande utdraget.
• HTTP-svar — 819 200 byte i det URL-avkodade PHPSESSID-värdet.
• Exekveringsbevis — code>uid=33(www-data) gid=33(www-data) groups=33(www-data)/code>.
• Regression — Rapporten beskriver fyra misslyckade försök på patchad PHP 8.4.27; råa körningar medföljer inte.
Källa: uppladdade REPORT.md, crash_evidence.log, leak_attempt.resp och rce_proof_8426.txt. Bilagorna som beskrivs nedan återger dessa artefakter som typsatta bevispaneler; de är inte fotografier eller ursprungliga terminalskärmbilder.
1. Sårbarheten: ägarskapsfel vid förfrågningsgränsen
De två relaterade problemen gäller avbruten initiering av förfrågan och inaktuella runtime-globala pekare. I den relevanta PHP-arkitekturen kan hantering av multipart/form-data och callbacks för uppladdningsförlopp i sessionen köras före normal användarapplikationskod. En exceptionell övergång i kontrollflödet, inklusive code>zend_bailout()/code>, kan hoppa över förväntad städning och lämna tillstånd som pekar på minne som senare frigörs eller återanvänds.
Säkerhetsinvariant: en workerglobal referens som exponeras för förfrågan B får aldrig referera till minne vars ägande och livstid upphörde med förfrågan A. Det rapporterade felet bryter mot den invarianten.
Den demonstrerade slutpunkten var en minimal PHP-sida som helt enkelt returnerade OK; exploitberättelsen beroende inte på SQL-injektion på applikationsnivå, filinkludering eller deserialiseringsslutpunkter.
2. Tekniskt förlopp
• A1 — avbrott. Hantering av multipart och uppladdningsförlopp utlöser OOM under rensning, vilket lämnar kvar föråldrat sessionstillstånd.
• B1 — läcka. En efterföljande begäran gör att serialiseringen av sessionscookies läser förbi ett giltigt sessions-ID.
• Adressåterställning. Läckta pekarvärden används för att härleda relevant biblioteks- och heap-layout i den byggversionen.
• A2/B2 — korruption. Ytterligare en sekvens med två förfrågningar formar och omdirigerar inaktuella data som används vid avstängning.
• Resultat. Den anpassade offentliga exploiten rapporterar kommandoexekvering som www-data.

Bevisföremål: vad de tillhandahållna filerna faktiskt visar
Bilaga A — avslutning av worker från Apache-loggen
• code>[core:notice] [pid 1:tid 1] AH00051: barnprocessen med pid 54 avslutades med signalen Abort (6), möjlig coredump i /etc/apache2/code>
• code>[core:notice] [pid 1:tid 1] AH00051: underordnad process med pid 55 avslutades med signalen Segmentation fault (11), möjlig coredump i /etc/apache2/code>
• code>[core:notice] [pid 1:tid 1] AH00051: barnprocessen med pid 58 avslutades med signalen Segmentation fault (11), möjlig coredump i /etc/apache2/code>
• code>[core:notice] [pid 1:tid 1] AH00051: barnprocess pid 61 avslutades med signal Segmentation fault (11), möjlig coredump i /etc/apache2/code>
Typsatt utdrag från crash_evidence.log (23 oktober 2026). Flera worker-avslut talar för ett minnessäkerhetsfel; enbart krascher fastställer inte RCE.
Bilaga B — HTTP-svar med avvikande sessionscookie
• code>HTTP/1.1 200 OK/code>, med binärdata utelämnad.
• code>Server: Apache/2.4.69 (Debian)/code>
• code>X-Powered-By: PHP/8.4.26/code>
• code>Set-Cookie: PHPSESSID=[utelämnade binära data]/code>
• Kodad cookielängd: 2 330 754 byte.
• URL-avkodat värde: 819 200 byte.
Mätningen beräknas direkt från leak_attempt.resp. Det binära värdet utelämnas avsiktligt för att undvika att återge något läckt processinnehåll.
Bilaga C – bevis på utförande
code>uid=33(www-data) gid=33(www-data) groups=33(www-data)/code>
Exakt innehåll i rce_proof_8426.txt, i den form det tillhandahölls. Det stöder det rapporterade utfallet av körningen men är inte en fullständig kommando-/sessionsutskrift.

Bilaga D — rättelse av sessionslivscykeln
• code>static inline void php_rinit_session_globals(void)/code>
• code>@@ -121,6 +120,7 @@ static inline void php_rinit_session_globals(void)/code>
• code>* kodar om sessionen under förfrågans uppstart, före RINIT, när ingen användare/code>
• code>/* Körs före RINIT: ingen användarkod får anropas, se php_session_unserialize_init() *//code>
• code>/* Detta körs före RINIT, så vi behöver rensa dessa tidigt *//code>
• code>php_rinit_session_globals();/code>
Utvalda källdiffrader från session.c.diff. Denna ändring återställer uttryckligen sessionsglobalt tillstånd tidigare än vanlig RINIT.
3. Varför bevisningen är viktig
Minnesläckan utgör bron mellan en processkrasch och en exploitkedja. Ett sessionsvärde med onormalt storlek och inbäddad binär data är förenligt med att körmiljön tolkar ogiltigt minne som en Zend-sträng. Forskningsrapporten beskriver vidare hur kod- och heapadresser extraheras från det läckta fönstret. Bevispaketet innehåller det råa svaret men inte ett fristående skript som styrker varje återvunnen adress.
RCE-artefakten visar www-data-säkerhetskontexten. Den fastställer inte root-åtkomst, kompromettering av en produktionsmiljö eller fullständig portabilitet till godtyckliga PHP-installationer. Laboratoriekonfigurationen med en enda worker är viktig eftersom sekvenseringen av förfrågningar och worker-affinitet påverkar mekanismen.
4. En åtgärd för den underliggande livscykeln, inte bara symtomet
Den medföljande källdiffen för PHP-patchcommit 01a40e89fbfc (”Avoid state corruption via bailout”) visar tidig sessionglobal initiering, ändringar i allocatorns OOM-hantering och bredare återställnings-/städlogik. Dessa ändringar syftar till att förhindra att nativt tillstånd överlever en avbruten begäran i ett ogiltigt tillstånd. Att enbart åtgärda cookie-kodningsvägen skulle inte i sig återställa denna minnesägandegaranti.
Forskningsrapporten anger att försök mot PHP 8.4.27 inte gav den onormala cookien, kraschen eller RCE-beviset i fyra försök. De faktiska transkripten från den patchade versionen finns inte i det här paketet, så den jämförelsen rapporteras som en forskarobservation snarare än ett oberoende granskningsbart bevis.
5. Defensiva åtgärder
• Omedelbart. Uppgradera den drabbade supporterade PHP-grenen till dess säkerhetsåtgärdade version och använd leverantörens säkerhetsmeddelanden för att bekräfta exakt paketstatus.
• Minskad exponering. Överväg att begränsa multipart-indata och inaktivera code>session.upload_progress/code om den inte används; dessa ersätter inte patchen.
• Detektering.Granska krascher under initiering av begäran, oväntade 500-fel och alltför stora code>Set-Cookie/code> svarshuvuden.
• Säkerställande. Testa igen med produktionsrepresentativa arbetarpooler och verifiera att gammalt sessionstillstånd inte kan bestå mellan förfrågningar.
6. OrcaCybers forskningsmetodik
Den värdefulla forskningsuppgiften är inte bara att upptäcka enskilda osäkra operationer; det är att spåra en fullständig invariantöverträdelse genom förfrågningsparsning, allokatorbeteende, beständiga nativa globala variabler, serialisering och avstängning. OrcaCyber Zero och OrcaCyber Ultra användes för att skapa PoC i denna undersökning, enligt forskningsteamets tillskrivning. Den offentliga artefaktsamlingen stöder den tekniska reproduktionen men tillhandahåller inte körningsspår per modell eller bevisar autonom sårbarhetsupptäckt.
Bevisstrappa: källhypotes → nåbar utlösare → körtidsfel → informationsläckage → exekveringsbevis → regression i åtgärdad version. Denna sekvens skapar starkare tilltro än en sårbarhetsbeskrivning eller ett resultat som endast visar krasch. Den uppmuntrar också till att tydligt rapportera osäkerhet när källfiler eller råa körloggar saknas.
7. Omfattning och begränsningar
Denna publikation beskriver en auktoriserad isolerad Docker-lab. Exploateringen bygger på tidigare publicerad PHP2Shell-forskning, med lokal anpassning dokumenterad i den medföljande rapporten. Paketet innehåller skript, diffar, svarsbytes, loggar och bevisutdata, men utelämnar den fullständiga upstream-exploateringskopian, inbyggda skärmbilder och fullständiga råa transkript från patch-regressionstester. Ingen verklig kompromettering av offer eller kund påstås.
Källor och artefakter
Primärt: medföljande php2shell-report-bundle.tar.gz (REPORT.md; report-CVE-2026-109618.md; report-CVE-2026-109619.md; crash_evidence.log; leak_attempt.resp; rce_proof_8426.txt; PHP-källkodsdiffar). Offentlig kontext: PHP-säkerhetsrådgivningar GHSA-w8hw-w9fx-j79w och GHSA-6wmf-4rv5-p3rp; PHP:s säkerhetsutgivningsmeddelanden. Offentlig exploit-tillskrivning: 9bie/php2shell-bypass-aslr-exp. Forskningsrepository: orcacyber-php2shell-research.

Slutsats: en begäran misslyckades; en pekare överlevde; nästa begäran litade på den. Det svåra med att förstå den här sårbarheten är att fastställa den kopplingen med observerbara bevis.
Jämförda i den här artikeln1
Identifierat från den här artikeln
