[{"data":1,"prerenderedAt":25},["ShallowReactive",2],{"blog-post-php2shell-cve-2026-109618-cvss-9-2-en":3},{"slugLt":4,"slugEn":5,"date":6,"dateModified":6,"readingTime":7,"tags":8,"image":13,"keyTakeaway":14,"lt":17,"en":21},"php2shell-cve-2026-109618-cvss-9-2","php2shell-cve-2026-109618-cvss-9-2-en","2026-10-22",6,[9,10,11,12],"Web","Patarimai","Architektūra","saugumas, php","https:\u002F\u002Fapi.ekloma.com\u002Fstorage\u002Fblog\u002F20261022-gtpfz5bdyk.webp",{"lt":15,"en":16},"Kritinis CVSS 9.2 įvertinimas reiškia nutolinio kodo vykdymo (RCE) grėsmę be autorizacijos. Būtina nedelsiant patikrinti failų apdorojimo grandines ir apriboti PHP vykdymo teises serveryje.","A critical CVSS 9.2 score denotes unauthenticated Remote Code Execution. Engineering teams must immediately audit file processing pipelines and restrict PHP runtime execution privileges.",{"title":18,"excerpt":19,"content":20},"php2shell pažeidžiamumai (CVSS 9.2): ką privalo žinoti vadovai","Patvirtinti php2shell pažeidžiamumai (CVE-2026-109618 ir CVE-2026-109619) su CVSS 9.2 balu. Techninė analizė, audito žingsniai ir būtini sprendimai verslui.","Saugumo bendruomenė oficialiai patvirtino kritinius saugumo defektus, bendrai žinomus kaip „php2shell“. Spalio 21 dieną paskelbti du atskiri identifikatoriai: CVE-2026-109618 ir CVE-2026-109619. Abiejų pažeidžiamumų bendras rizikos indeksas pagal CVSS v3.1 siekia 9.2 iš 10 galimų balų.\n\nTai nėra teorinė problema ar akademinis saugumo įrodymas. CVSS 9.2 balas indikuoja kritinį pažeidžiamumą, kurį piktavaliai gali išnaudoti nuotoliniu būdu, be išankstinės autorizacijos ar specifinių naudotojo teisių sistemoje. Šio incidento esmė – galimybė manipuliuoti PHP failų įkėlimo, deserializacijos ar laikino saugojimo mechanizmais, paverčiant įprastas užklausas į interaktyvią komandinę eilutę (angl. *web shell*).\n\nLietuvos verslui, kur didelė dalis savitarnos portalų, el. prekybos platformų ir nestandartinių vidinių sistemų yra pastatyta PHP pagrindu (naudojant Laravel, Symfony ar atvirojo kodo TVS), ši žinia reiškia tiesioginį poreikį atlikti neplanuotą infrastruktūros reviziją.\n\n## Techninė anatomija: kas slypi po CVE-2026-109618 ir CVE-2026-109619\n\nAbu registruoti CVE įrašai sprendžia glaudžiai susijusias problemas PHP interpretatoriaus ir populiarių priklausomybių sąveikoje. Pagrindinis vektorius remiasi netinkamu multipart formų apdorojimu ir duomenų srautų interpretavimu.\n\n- **CVE-2026-109618**: Ši spraga susijusi su buferio perpildymo ir tipo painiavos (angl. *type confusion*) rizika apdorojant specifines MIME antraštes multipart užklausose. Užpuolikas suformuoja nestandartinį HTTP paketą, kurio dėka apeinamas numatytasis PHP parametrų nuskaitymo modulis, o duomenų baitai įrašomi tiesiai į laikiną atminties sritį su vykdomojo failo teisėmis.\n- **CVE-2026-109619**: Šis pažeidžiamumas dengia logikos defektą, leidžiantį apeiti failų išplėtimų ir turinio validaciją. Net jei aplikacijos kodas tikrina, ar įkeliamas failas yra PDF ar JPEG formatu, manipuliacija failų deskriptoriais (naudojant nulinius baitus arba dvigubus srautus) leidžia interpretatoriui išsaugoti failą kaip `.php` arba apeiti web serverio nukreipimo taisykles, atveriant tiesioginį vykdymo kelią.\n\nKai šie du pažeidžiamumai sujungiami į vieną grandinę, gaunamas klasikinis „php2shell“ scenarijus: užpuolikui pakanka nusiųsti vieną asinchroninę POST užklausą į bet kurį atvirą formos galinį tašką (angl. *endpoint*), ir serveryje atsiranda nuotoliniu būdu valdomas procesas su web serverio naudotojo (`www-data` arba `nginx`) teisėmis.\n\n```bash\n# Tipinis automatizuotų atakų požymis serverio žurnale\nPOST \u002Fapi\u002Fv1\u002Fupload HTTP\u002F1.1\nContent-Type: multipart\u002Fform-data; boundary=----WebKitFormBoundaryX99\n... [kenkėjiškas srautas apeinantis MIME patikrą] ...\nResult: 200 OK -> \u002Fvar\u002Fwww\u002Fhtml\u002Fstorage\u002Fapp\u002Fpublic\u002Fshell.php (vykdomas kodas)\n```\n\n## Kodėl CVSS 9.2 reikalauja neatidėliotinų veiksmų\n\nSaugumo metrikose vertinimas virš 9.0 reiškia avarinę situaciją. Tokio pobūdžio spragos automatizuotų botnetų tinkluose paprastai pradedamos skenuoti praėjus kelioms valandoms po viešo kodo pavyzdžių (PoC) pasirodymo.\n\nVerslo požiūriu, atakos pasekmės nėra vien techninis nepatogumas. Gavęs prieigą prie shell lygmens, užpuolikas pasiekia:\n\n- **Konfigūracinius failus ir slaptažodžius**: Prieiga prie `.env` failų, duomenų bazių prisijungimų, trečiųjų šalių API raktų (mokėjimų vartai, el. pašto paslaugos).\n- **Klientų ir finansinius duomenis**: Tiesioginis duomenų bazės nuskaitymas apeinant aplikacijos lygmens autorizaciją ir logus.\n- **Lateralinį judėjimą tinkle**: Iš pažeisto web serverio atakuojami kiti vidinio tinklo mazgai, ERP sistemos ar atsarginių kopijų saugyklos.\n- **Išpirkos reikalaujančių programų įdiegimą**: Šifruojami duomenų bazių tomai ir aplikacijos išeities kodas.\n\n| Atakos etapas | Poveikis sistemai | Verslo pasekmė |\n| - | - | - |\n| Skenavimas ir įsiskverbimas | RCE per modifikuotą HTTP užklausą | Jokio pirminio pastebimo poveikio veikimui |\n| Shell įtvirtinimas | Nuotolinio kodo vykdymas su `www-data` teisėmis | Nekontroliuojamas procesas serverio atmintyje |\n| Duomenų eksfiltracija | SQL bazių ir `.env` failų kopijavimas | BDAR \u002F GDPR pažeidimai, prarasta reputacija |\n| Serviso kompromitavimas | Kriptovaliutų kasimas arba duomenų šifravimas | Prastovos, prarastos pajamos, atkūrimo kaštai |\n\n## Ar jūsų sistemos pažeidžiamos: patikros planas\n\nKiekvienas techninis vadovas privalo atlikti tris paprastus, bet kritinius žingsnius, kad nustatytų esamą infrastruktūros būklę.\n\n### 1. PHP versijos ir plėtinių revizija\n\nPatikrinkite naudojamą PHP versiją visose gamybinėse (angl. *production*) ir testinėse aplinkose. Ypatingą dėmesį atkreipkite į konteinerizuotas sistemas (`Docker`, `Kubernetes`), kuriose dažnai lieka seni baziniai atvaizdai (angl. *base images*).\n\n```bash\n# Patikrinkite veikiančios PHP versijos kompiliavimo datą ir atnaujinimus\nphp -v\n\n# Patikrinkite aktyvius modulius, atsakingus už srautų apdorojimą\nphp -m | grep -E 'filter|fileinfo|mbstring'\n```\n\n### 2. Įkeliamų failų katalogų teisių analizė\n\nVienas dažniausių architektūrinių aplaidumų – leisti vykdyti PHP failus viešai pasiekiamuose kataloguose. Jei jūsų failų saugykla (`\u002Fstorage`, `\u002Fuploads`, `\u002Fmedia`) leidžia kodo interpretavimą, rizika tampa tiesioginė.\n\n- Įsitikinkite, kad web serverio konfigūracijoje (Nginx arba Apache) visiškai uždraustas PHP skriptų vykdymas statinių failų kataloguose.\n- Patikrinkite failų sistemos teises: web serverio naudotojas neturėtų turėti rašymo teisių į katalogus, iš kurių vykdomas pagrindinis aplikacijos kodas.\n\n### 3. Serverio žurnalų (logų) peržiūra\n\nAtlikite greitą žurnalų analizę, ieškodami anomalių POST užklausų su neįprastai ilgomis antraštėmis ar įtartinais failų pavadinimais, sugeneruotais per pastarąsias paras nuo spalio 21 dienos.\n\n## Būtini sprendimai: neatidėliotina ir ilgalaikė gynyba\n\nNorint neutralizuoti „php2shell“ riziką, reikalingas dviejų lygių atsakas: skubus gaisrų gesinimas ir sisteminis perimetro stiprinimas.\n\n### Skubūs veiksmai (per artimiausias 24 valandas)\n\n- **WAF taisyklių atnaujinimas**: Jei naudojate Cloudflare, AWS WAF ar panašius sprendimus, įsitikinkite, kad įjungtos naujausios taisyklės, skirtos CVE-2026-109618 ir CVE-2026-109619 filtravimui. Griežtas multipart užklausų filtravimas WAF lygyje gali sustabdyti ataką dar prieš jai pasiekiant jūsų serverį.\n- **PHP branduolio pataisų diegimas**: Nedelsiant atnaujinkite PHP paketus distribucijos lygmeniu (naudojant `apt update && apt upgrade` arba atnaujinant oficialius Docker atvaizdus iki versijų, išleistų po spalio 21 d.).\n- **Pavojingų funkcijų išjungimas**: `php.ini` faile apribokite sisteminių funkcijų vykdymą, jei tai netrikdo pagrindinio aplikacijos veikimo:\n\n```ini\ndisable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source\n```\n\n### Ilgalaikė architektūrinė higiena\n\nSkubūs pataisymai apsaugo nuo žinomų spragų, tačiau atspari architektūra eliminuoja pačią atakos klasę:\n\n- **Atskyrimas per objektų saugyklas (S3)**: Nelaikykite naudotojų įkeliamų failų tame pačiame serveryje, kur veikia programinis kodas. Visi failai turi keliauti tiesiai į privačius S3 ar suderinamus debesis, kur PHP interpretatorius fiziškai neegzistuoja.\n- **Konteinerių tik skaitymo (angl. *read-only*) režimas**: Paleiskite gamybinius Docker konteinerius su parametru `--read-only`. Tai reiškia, kad net jei užpuolikui pavyktų sukurti failą atmintyje, failų sistema atmes bet kokį bandymą įrašyti skriptą į diską.\n- **Nuolatinis priklausomybių auditas**: Įtraukite automatizuotą paketų tikrinimą į savo CI\u002FCD procesus. Bet koks atviro kodo bibliotekų atnaujinimas turi būti testuojamas ir diegiamas pagal griežtą procedūrą, o ne atidėliojamas mėnesiams.\n\n## Išvada\n\nSpalio 21 d. patvirtinti CVE-2026-109618 ir CVE-2026-109619 pažeidžiamumai rodo, kad net brandžios technologijų ekosistemos turi kritinių vietų. CVSS 9.2 balas yra signalas, kad IT infrastruktūros priežiūra negali būti pasyvi. Organizacijos, kurios pasitiki principu „jei veikia – nelieskime“, patiria didžiausius nuostolius.\n\nŠios spragos pašalinimas reikalauja sistemingo požiūrio: nuo serverio konfigūracijos iki aplikacijos kodo architektūros. Laiku atliktas auditas ir pataisų pritaikymas leidžia neutralizuoti riziką anksčiau, nei ji virsta finansiniu ar teisiniu nuostoliu.",{"title":22,"excerpt":23,"content":24},"php2shell Flaws (CVSS 9.2): What Tech Leaders Must Know","Confirmed php2shell flaws (CVE-2026-109618 & CVE-2026-109619) score CVSS 9.2. Technical analysis, system audit steps, and immediate remediation advice.","The cybersecurity community has officially confirmed critical vulnerabilities collectively dubbed 'php2shell'. Disclosed on 21 October, two distinct identifiers were assigned: CVE-2026-109618 and CVE-2026-109619. Both vulnerabilities carry a combined Common Vulnerability Scoring System (CVSS v3.1) score of 9.2 out of 10.\n\nThis is not a theoretical edge-case or a proof-of-concept confined to research labs. A CVSS score of 9.2 denotes a critical flaw that attackers can exploit remotely without prior authentication or elevated privileges. At the core of these vulnerabilities lies the exploitation of PHP file upload handling, deserialisation routines, and temporary storage mechanisms, turning legitimate web requests into an interactive remote shell.\n\nFor organisations operating client portals, e-commerce engines, and bespoke business systems powered by PHP (including Laravel, Symfony, or custom setups), this development demands immediate, structured technical action.\n\n## Technical Anatomy: Inside CVE-2026-109618 and CVE-2026-109619\n\nBoth CVEs target closely coupled weaknesses within the PHP interpreter and standard request parsing routines. The primary attack vector targets multipart form handling and data stream parsing.\n\n- **CVE-2026-109618**: Involves a buffer manipulation and type confusion flaw triggered during the parsing of malformed MIME headers in multipart POST requests. An attacker crafts a non-standard HTTP payload that bypasses default parameter sanitisation, writing raw byte sequences directly into temporary execution memory.\n- **CVE-2026-109619**: Addresses a file descriptor logic flaw enabling file extension and MIME validation bypasses. Even when application logic strictly permits only PDF or JPEG uploads, stream manipulation (such as null-byte exploitation or stream wrapping) allows the engine to persist or interpret the payload as an executable `.php` file, evading standard web server access limits.\n\nWhen chained, these vulnerabilities yield the classic 'php2shell' outcome: an unauthenticated attacker transmits a single crafted POST request to an exposed upload endpoint, instantly spawning a persistent shell running under the web server daemon account (`www-data` or `nginx`).\n\n```bash\n# Typical signature found in web server access logs during automated exploitation\nPOST \u002Fapi\u002Fv1\u002Fupload HTTP\u002F1.1\nContent-Type: multipart\u002Fform-data; boundary=----WebKitFormBoundaryX99\n... [malformed stream payload bypassing MIME checks] ...\nResult: 200 OK -> \u002Fvar\u002Fwww\u002Fhtml\u002Fstorage\u002Fapp\u002Fpublic\u002Fshell.php (executable payload)\n```\n\n## Why CVSS 9.2 Demands Immediate Remediation\n\nIn standard risk scoring frameworks, any rating above 9.0 represents an emergency. Once technical details or automated scanning templates are disseminated across the web, botnets begin probing publicly reachable IP ranges within hours.\n\nFrom an operational standpoint, the ramifications extend far beyond temporary downtime. Gaining web shell access grants an intruder lateral capability:\n\n- **Extraction of Environment Secrets**: Unrestricted access to `.env` configurations, database credentials, encryption salts, and third-party API keys (payment gateways, transactional email tokens).\n- **Exfiltration of Sensitive Business Data**: Direct querying of internal databases, bypassing all application-layer authorisation gates and audit logs.\n- **Lateral Network Movement**: Utilising the compromised web host as an internal jump host to attack internal ERP instances, Redis caches, or staging infrastructure.\n- **Ransomware and Cryptominer Deployment**: Overwriting source code, encrypting local file storage, and executing persistence routines across server restarts.\n\n| Attack Stage | Technical Impact | Business Consequence |\n| - | - | - |\n| Reconnaissance & Probe | Exploitation via crafted HTTP request | Negligible immediate visible downtime |\n| Shell Placement | Interactive code execution as `www-data` | Unchecked background processes in memory |\n| Data Exfiltration | Direct extraction of databases & environment keys | GDPR\u002Fregulatory breach, reputational harm |\n| Service Compromise | Deployment of ransomware or unauthorized code | Prolonged service outages, high recovery expenses |\n\n## Verification Strategy: Auditing Your Infrastructure\n\nEvery technology leader should mandate a swift three-stage audit to establish whether existing systems are exposed.\n\n### 1. PHP Engine and Extension Inventory\n\nExamine running PHP versions across all production, staging, and internal environments. Pay specific attention to containerised environments (`Docker`, `Kubernetes`), where outdated base images frequently persist overlooked.\n\n```bash\n# Check the active PHP version build date and applied updates\nphp -v\n\n# Inspect loaded modules handling streams and file metadata\nphp -m | grep -E 'filter|fileinfo|mbstring'\n```\n\n### 2. File Upload Directory Permissions\n\nA persistent architecture defect is allowing PHP script execution inside directories intended purely for public media storage (`\u002Fstorage`, `\u002Fuploads`, `\u002Fmedia`). If your public asset directories permit execution, vulnerability to php2shell escalates.\n\n- Confirm web server configs (Nginx or Apache) explicitly block PHP execution within static upload trees.\n- Validate strict filesystem permissions: the web daemon should not have write permissions to directories hosting executable application source code.\n\n### 3. Log Forensics and Anomaly Detection\n\nRun an immediate log analysis focusing on irregular POST requests with unusual header lengths or suspicious filename patterns generated since 21 October.\n\n## Defensive Strategy: Immediate and Architectural Measures\n\nCountering the php2shell threat requires a dual-track response: immediate patch containment and systematic architectural hardening.\n\n### Immediate Actions (Next 24 Hours)\n\n- **WAF Rule Deployment**: If you use Cloudflare, AWS WAF, or an equivalent reverse proxy, ensure updated signatures targeting CVE-2026-109618 and CVE-2026-109619 are active. Strict multipart validation at the edge stops payloads before they hit your application layer.\n- **Engine Updates**: Apply OS-level security updates immediately (`apt update && apt upgrade` or pulling patched official base containers published after 21 October).\n- **Restricting System Execution Functions**: In `php.ini`, disable high-risk system functions unless explicitly required by fundamental core logic:\n\n```ini\ndisable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source\n```\n\n### Architectural Hardening\n\nEmergency patches fix individual vulnerabilities, but defensive architecture eliminates whole vulnerability classes:\n\n- **Decoupling via Object Storage (S3)**: Never store user-uploaded assets on the filesystem hosting your application runtime. User uploads should stream directly to isolated cloud storage (S3-compatible) where PHP code cannot be interpreted.\n- **Read-Only Container Filesystems**: Run production Docker containers with the `--read-only` flag enabled. Even if an attacker injects a malicious file, the host kernel prevents persistence to disk.\n- **Automated Dependency and Container Audits**: Integrate vulnerability scanning into your continuous deployment (CI\u002FCD) pipelines. Third-party runtime updates must be treated as regular operational cadence rather than deferred indefinitely.\n\n## Conclusion\n\nThe formal confirmation of CVE-2026-109618 and CVE-2026-109619 on 21 October underscores that even mature ecosystems remain subject to severe runtime flaws. A CVSS 9.2 rating is a clear reminder that technical stewardship must be proactive. Systems maintained under the premise of 'if it works, do not touch it' invariably incur the steepest cost.\n\nRemediating these vulnerabilities requires disciplined execution: updating base runtimes, tightening web server boundaries, and decoupling user uploads from the core execution engine. Thorough audits and prompt patch hygiene ensure business operations remain resilient against evolving threats.",1792667583059]