Sitwazzjoni attwali: PHP2Shell. Żewġ vulnerabbiltajiet kritiċi ta' PHP (CVSS 9,2) jippermettu kodiċi malizzjuż mingħajr login. Patches mill-21/10/2026.X'għandu jsir issa →

Iċ-ċiklu tal-ħajja tat-talba: startup, eżekuzzjoni, shutdown

Kif PHP jibda proċessi, jittratta talbiet u jnaddaf bejniethom. Bil-fażijiet MINIT sa MSHUTDOWN u r-rabta ma' CVE-2026-109619.

Stat 6 min. qariGħarfien dwar PHP

Fil-qosor: Iċ-ċiklu tal-ħajja tat-talba ta' PHP għandu żewġ livelli. Darba għal kull proċess PHP jgħabbi l-estensjonijiet tiegħu (fażi MINIT) u fl-aħħar jiżżarmahom mill-ġdid (MSHUTDOWN). Għal kull talba individwali hemm fażi proprja ta' bidu u ta' tindif (RINIT u RSHUTDOWN). Fit-tħaddim tal-web worker wieħed jittratta ħafna talbiet wara xulxin, u għalhekk PHP irid jirrisettja b'mod affidabbli l-istat kollu tat-talba bejn żewġ talbiet. Eżatt f'dan il-konfini kien jinsab CVE-2026-109619, it-tieni vulnerabbiltà ta' PHP2Shell.

Żewġ livelli: il-proċess u t-talba

Għal min mhuwiex tekniku jgħin xbieha: worker ta' PHP huwa bħal sportell f'uffiċċju pubbliku. L-isportell jiġi mwaqqaf darba filgħodu, bil-formoli, it-timbri u l-kompjuter. Imbagħad jaslu ħafna viżitaturi wara xulxin. Wara kull viżitatur il-mejda trid tkun vojta, biex il-ħaddieħor ma jarax dokumenti ta' ħaddieħor.

PHP jaħdem eżatt hekk. Meta jibda proċess, jgħabbi estensjonijiet u issettjar li huma l-istess għat-talbiet kollha. Kull talba mbagħad tirċievi memorja proprja, varjabbli proprji u data proprja tat-talba bħal $_GET, $_POST jew $_FILES. Fi tmiem it-talba PHP jeħles din il-memorja. Il-PHP Internals Book jiġbor dan fil-qosor: PHP jinsa l-memorja tat-talba fi tmiem kull talba.

Il-fażijiet taċ-ċiklu tal-ħajja tat-talba ta' PHP f'ħarsa

L-ismijiet ġejjin minn ġewwa PHP; kull estensjoni tista' tidħol f'dawn il-fażijiet.

Fażi Meta taħdem Kemm-il darba Kompitu tipiku
MINIT (Module Init) meta jibda l-proċess darba għal kull proċess tirreġistra estensjonijiet, toħloq entrati ini, data permanenti
GINIT meta jinħolqu l-globals għal kull proċess, f'threads għal kull thread tipprepara varjabbli globali ta' estensjoni
RINIT (Request Init) fil-bidu ta' kull talba għal kull talba tipprepara l-memorja u l-istat tat-talba
Eżekuzzjoni bejniethom għal kull talba il-kodiċi PHP tagħkom jaħdem
RSHUTDOWN fi tmiem kull talba għal kull talba teħles ir-riżorsi tat-talba
PRSHUTDOWN wara RSHUTDOWN għal kull talba, rarament użat l-aħħar xogħlijiet ta' tindif
MSHUTDOWN meta jintemm il-proċess darba għal kull proċess teħles data permanenti

Sentenza importanti mill-PHP Internals Book għall-iżviluppaturi ta' estensjonijiet: il-globals ma jitbattlux awtomatikament wara kull talba. Dak li jrid ikun frisk għal kull talba jappartjeni fir-reset f'RINIT. Din ir-regola turi għaliex il-konfini bejn żewġ talbiet huwa post kritiku għas-sigurtà.

Fi tmiem talba l-ordni hija wkoll stabbilita: l-ewwel jaħdmu l-funzjonijiet ta' shutdown li rreġistrajtu b'register_shutdown_function(), imbagħad id-destructors, imbagħad il-buffer tal-output jiġi mbattal. Biss wara dan jiġi RSHUTDOWN.

Għaliex il-workers jerġgħu jintużaw

Fil-linja tal-kmand proċess jittratta talba waħda biss u jintemm. Fit-tħaddim tal-web dan kien jkun bil-mod wisq. PHP-FPM, Apache b'mod_php, LiteSpeed u FrankenPHP għalhekk iżommu workers lesti li jservu ħafna talbiet wara xulxin. MINIT imbagħad jaħdem darba, RINIT u RSHUTDOWN eluf ta' drabi. Kif FPM jikkontrolla l-workers tiegħu tispjegah PHP-FPM spjegat.

F'PHP-FPM pm.max_requests jistabbilixxi wara kemm talbiet worker jerġa' jibda. L-istandard huwa 0, jiġifieri bla limitu. Il-manwal isemmi l-issettjar bħala mezz kontra tnixxijiet tal-memorja f'libreriji ta' terzi:

; Pool ta' FPM: erġa' ibda l-worker wara 500 talba (kontra tnixxijiet tal-memorja)
pm = dynamic
pm.max_children = 20
pm.max_requests = 500

Il-modalità worker ta' FrankenPHP tmur anki aktar 'il bogħod: hemmhekk l-applikazzjoni kollha tibda darba u tibqa' fil-memorja. L-istat tal-applikazzjoni mbagħad jibqa' ħaj anki fil-livell ta' PHP. L-eżempju juri d-differenza:

<?php
function anfrageZaehler(): int
{
    static $zaehler = 0;   // fit-tħaddim klassiku ta' FPM għal kull talba terġa' 0
    return ++$zaehler;     // fil-modalità worker il-valur ikompli jgħodd matul it-talbiet
}
echo anfrageZaehler();

Fit-tħaddim klassiku t-telefonata dejjem toħroġ 1, għax PHP jiskarta l-memorja tat-talba. Fil-modalità worker il-valur jikber sakemm il-worker jgħix. Id-dokumentazzjoni ta' FrankenPHP għalhekk tagħti parir li l-istat marbut mat-talba jiġi rrisettjat apposta bejn talba u oħra.

Fejn jolqot CVE-2026-109619

CVE-2026-109619 ma jaffettwax il-kodiċi tal-applikazzjoni tagħkom, imma PHP innifsu. Skont php.net, stat intern li jappartjeni għat-talba seta' jibqa' ħaj wara li titħeles il-memorja tiegħu. Talba aktar tard fl-istess worker setgħet tużah qabel ma l-inizjalizzazzjoni rrisettjatu. Fix-xbieha: fuq il-mejda tal-isportell baqa' biċċa karta li kellha diġà tkun tneħħiet. Dettalji tal-isfruttament apposta ma nippubblikawhomx; il-klassifikazzjoni tinsab taħt CVE-2026-109619.

Il-miżuri temporanji ta' php.net għal din il-vulnerabbiltà jibdew minn modi kkonfermati, mhumiex protezzjoni sħiħa:

  1. session.upload_progress.enabled=0 f'php.ini, fil-pool ta' FPM jew fil-konfigurazzjoni tas-server, wara erġgħu ibdew il-workers kollha; mhux permezz ta' ini_set() jew .user.ini.
  2. Fuq PHP 8.5 barra minn hekk fatal_error_backtraces=0 u restart.
  3. Neħħu għal kull talba issettjar invalidu jew skadut li jipproduċi messaġġi qabel l-inizjalizzazzjoni. Li tinħeba biss il-messaġġi ma jgħinx, skont php.net.
  4. Irranġaw fl-applikazzjoni żbalji fatali u timeouts li jistgħu jinqalgħu minn barra, anki f'callbacks u fl-ipproċessar ta' uploads u importazzjonijiet.

Ir-rimedju veru huwa l-aġġornament għal PHP 8.5.12, 8.4.27, 8.3.36 jew 8.2.35. Peress li l-iżball jinsab fil-worker li jaħdem, jaħdem biss wara restart tal-proċessi kollha; il-passi jinsabu taħt Erġa' ibda PHP-FPM u l-workers kollha.

Suġġeriment

Wara r-restart iċċekkjaw b'ps -eo pid,lstart,cmd | grep php jekk il-proċessi kollha ta' PHP bdewx wara l-mument tal-aġġornament.

X'jfisser iċ-ċiklu tal-ħajja għat-tħaddim u għall-iżvilupp

Mill-mudell jistgħu jinkisbu regoli ċari. Għall-amministraturi: aġġornament huwa effettiv biss meta ma jibqax jaħdem l-ebda proċess bil-kodiċi qadim. Kull modalità ta' tħaddim b'workers li jgħixu fit-tul teħtieġ restart iddokumentat. Għall-iżviluppaturi: kodiċi li jaħdem f'modalitajiet worker m'għandux iħalli stat marbut mat-talba f'varjabbli statiċi jew singletons, pereżempju data tal-utent jew permessi. Għat-tnejn japplika: żommu l-logs mill-20 ta' Ottubru 2026, biex aktar tard tkun tista' tiġi evalwata jekk seħħx xi ħaġa qabel il-patch.

Kif jgħin PHP SOS konkretament?

Mas-Servizz ta' patch għal PHP napplikaw il-mudell fil-prattika:

  • Niddeterminaw il-modalità tat-tħaddim: Nistabbilixxu jekk jaħdimx PHP-FPM, mod_php, LiteSpeed, FrankenPHP jew php-cgi u kif jiġu amministrati l-workers.
  • Aġġornament u restart: Napplikaw il-verżjoni korretta u nerġgħu nibdew kull worker b'mod ikkontrollat.
  • Verifika tal-proċessi: Nuru bi ħinijiet tal-bidu u verżjonijiet li ma baqa' l-ebda proċess qadim.
  • Niċċekkjaw il-modalitajiet worker: F'applikazzjonijiet li jgħixu fit-tul nistħarrġu jekk l-istat marbut mat-talba jiġix irrisettjat b'mod nadif.

Mistoqsijiet frekwenti

PHP jibda proċess ġdid għal kull talba?

Fil-linja tal-kmand iva, fit-tħaddim tal-web ġeneralment le. PHP-FPM, Apache b'mod_php, LiteSpeed jew FrankenPHP iħallu proċess wieħed jittratta ħafna talbiet wara xulxin. Bejn talba u oħra PHP inaddaf l-istat tat-talba.

X'inhi d-differenza bejn MINIT u RINIT?

MINIT jaħdem darba meta jibda l-proċess ta' PHP, u joħloq strutturi permanenti. RINIT jaħdem fil-bidu ta' kull talba individwali u jipprepara dak li jeħtieġ biss din it-talba.

pm.max_requests jgħin kontra CVE-2026-109619?

php.net ma jsemmix restarts aktar frekwenti tal-workers bħala miżura temporanja. L-issettjar jillimita biss kemm talbiet jittratta worker qabel ma jerġa' jibda. Kontra l-vulnerabbiltà jgħin l-aġġornament segwit mir-restart tal-workers kollha.

X'inhi l-modalità worker ta' FrankenPHP?

Fil-modalità worker l-applikazzjoni tibda darba u tibqa' fil-memorja. Dan jiffranka l-ħin, imma varjabbli statiċi, globals u caches jibqgħu bejn talba u oħra. Skont id-dokumentazzjoni ta' FrankenPHP, l-istat marbut mat-talba għalhekk irid jiġi rrisettjat apposta.

Sorsi

Kuntatt immedjat

Kull siegħa tgħodd. Iktbu lilna issa.

Iddeskrivu fil-qosor is-sistema, il-verżjoni ta' PHP u dak li osservajtu. Nikkuntattjawkom, niċċaraw is-sitwazzjoni u naħdmu mill-bogħod sakemm l-inċident jingħalaq u jiġi ddokumentat.

Għajnuna immedjata