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 →

Iz-Zend Engine: il-qalb ta' PHP

Iz-Zend Engine tittraduċi l-kodiċi PHP f'opcodes u teżegwih. Min jaf il-komponenti tagħha jifhem għaliex vulnerabbiltajiet fil-qalba, bħal PHP2Shell, jirranġahom biss aġġornament ta' PHP.

Stat 5 min. qariGħarfien dwar PHP

Fil-qosor: Iz-Zend Engine hija l-qalba ta' PHP. Tittraduċi l-kodiċi PHP f'opcodes, teżegwihom f'magna virtwali u fl-istess ħin tamministra l-varjabbli u l-memorja. Minn PHP 4 'l hawn tinsab f'kull installazzjoni ta' PHP. Peress li l-vulnerabbiltajiet ta' PHP2Shell jinsabu f'din il-qalba, ma jgħinux plugins jew aġġornamenti taċ-CMS, imma biss PHP aġġornata b'restart.

X'inhi z-Zend Engine?

Iz-Zend Engine hija l-parti ta' PHP li tagħmel ix-xogħol effettiv. Kull ħaġa oħra, bħall-konnessjoni mas-server tal-web jew l-estensjonijiet għad-databases, tinbena fuqha. Tistgħu tqabbluha mal-magna ta' karozza: il-karrozzerija u t-tagħmir jvarjaw, il-magna tmexxi kollox.

Skont il-manwal ta' PHP, l-isem huwa magħmul mill-ismijiet tal-iżviluppaturi Zeev Suraski u Andi Gutmans. L-engine ġiet ippreżentata f'nofs l-1999 u minn PHP 4.0, li ħarġet f'Mejju 2000, saret il-qalba ta' PHP. Minn dak iż-żmien ġiet irrevedita sostanzjalment diversi drabi.

Verżjoni ta' PHP Engine L-iktar bidla importanti skont il-manwal u l-RFCs
PHP 4.0 (2000) Zend Engine l-ewwel qalba komuni, prestazzjoni aħjar
PHP 5.0 (2004) Zend Engine 2.0 mudell ġdid tal-oġġetti
PHP 7.0 (2015) Zend Engine 3.0 PHPNG: strutturi tad-dejta aktar kompatti, AST
PHP 8.0 (2020) Żvilupp ulterjuri kompilatur JIT bħala parti minn OPcache

Il-komponenti: kompilatur, magna virtwali, memorja

L-engine taħdem fi stadji ċari u separati. Minn PHP 7, skont l-RFC dwar is-siġra astratta tas-sintassi, hemm tliet fażijiet sal-bytecode:

  1. Lexer: ifarrak il-kodiċi sors f'tokens, pereżempju kliem ewlieni, ismijiet ta' varjabbli u ktajjen ta' karattri.
  2. Parser: jibni mit-tokens siġra astratta tas-sintassi (AST) li tirrappreżenta l-istruttura tal-programm.
  3. Kompilatur: joħloq mill-AST op-arrays, jiġifieri listi ta' opcodes, waħda għal kull fajl u funzjoni.
  4. Executor (Zend VM): jaħdem l-opcodes. Skont l-RFC tal-JIT, kull opcode għandu funzjoni handler li teżegwixxih.
  5. Ġestjoni tal-memorja: tirriżerva u teħles il-memorja għal kull talba u fl-istess ħin tissorvelja l-limitu minn memory_limit.

It-tokens ta' skrip jistgħu jsiru viżibbli bl-estensjoni Tokenizer. Dan huwa bla ħsara u jgħallem:

<?php
$code = '<?php $summe = 2 + 3; echo $summe;';
foreach (token_get_all($code) as $token) {
    if (is_array($token)) {
        echo token_name($token[0]), ': ', trim($token[1]), "\n";
    } else {
        echo 'Zeichen: ', $token, "\n";
    }
}

L-output juri entrati bħal T_VARIABLE: $summe jew T_LNUMBER: 2. Eżattament b'dawn il-blokok il-parser ikompli jaħdem.

Kif iz-Zend Engine tamministra l-varjabbli?

Kull varjabbli ta' PHP tinsab, skont il-manwal, f'kontenitur imsejjaħ zval. Fih it-tip u l-valur kif ukoll informazzjoni ta' ġestjoni, fosthom għadd ta' referenzi (refcount). Il-kontatur jindika kemm ismijiet ta' varjabbli jindikaw lejn l-istess kontenitur.

<?php
$a = str_repeat('x', 10);
$b = $a;        // ebda kopja, it-tnejn jindikaw lejn l-istess valur
$b .= 'y';      // issa biss issir il-kopja (copy on write)
unset($a);      // il-kontatur jinżel, il-memorja tinħeles meta jilħaq 0

Meta l-kontatur jilħaq żero, l-engine teħles il-memorja. Għal referenzi ċirkolari bejn l-oġġetti hemm ukoll garbage collector. Aktar dwar dan fl-artikolu Ġestjoni tal-memorja f'PHP.

Ir-reviżjoni PHPNG għal PHP 7 bdiet eżattament hawn. Skont l-RFC ta' Dmitry Stogov u Zeev Suraski, kien jitratta strutturi tad-dejta aktar kompatti u rappreżentazzjoni aktar għaqlija tal-valuri. L-RFC semma qligħ fil-prestazzjoni ta' 20 sa 110 fil-mija f'applikazzjonijiet reali.

OPcache u JIT: estensjonijiet tal-engine

Mingħajr cache l-engine tittraduċi kull skrip mill-ġdid ma' kull talba. L-OPcache iżomm l-opcodes lesti fil-memorja kondiviża. Minn PHP 8.0 'l quddiem hemm ukoll kompilatur JIT. Skont l-RFC, huwa bbażat fuq DynASM, għodda mill-proġett LuaJIT, u joħloq kodiċi tal-magna direttament mill-bytecode. Il-magna virtwali tibqa' bla bidla; il-JIT jissostitwixxi biss il-punti tad-dħul tal-handlers.

Għall-operaturi dan ifisser: OPcache u JIT iħaffu l-engine, imma ma jibdlu xejn fl-aġir tagħha fil-każ ta' żbalji. Vulnerabbiltà fil-qalba tibqa' teżisti anki b'cache attiva.

Għaliex vulnerabbiltajiet fl-engine jiżnu b'mod speċjali

Iż-żewġ vulnerabbiltajiet ta' PHP2Shell jinsabu fil-qalba ta' PHP. Fil-każ ta' CVE-2026-109618, kundizzjoni ta' out-of-memory tista' tinterrompi lill-engine waqt li d-dejta tat-talba tkun inizjalizzata biss parzjalment; fit-tindif dejta invalida mbagħad tiġi trattata bħala valida. Fil-każ ta' CVE-2026-109619, stat intern jibqa' wara li l-memorja tinħeles u jista' jintuża minn talba aktar tard fl-istess worker.

Il-verżjonijiet irranġati 8.5.12, 8.4.27, 8.3.36 u 8.2.35 jibdlu, skont il-manwal ta' PHP, ukoll l-aġir tal-limitu tal-memorja: memory_limit hemmhekk huwa limitu artab, setting ġdid memory_hard_limit_percent jistabbilixxi limitu massimu iebes. Il-manwal jindika li verżjoni li ma tafx dan is-setting hija affettwata mill-vulnerabbiltajiet. Fid-distribuzzjonijiet b'backports jgħodd ukoll il-changelog tal-pakkett.

Importanti

L-engine hija mgħobbija f'kull proċess ta' PHP. Wara l-aġġornament għalhekk iridu jerġgħu jinbdew il-workers kollha ta' PHP-FPM, il-proċessi ta' Apache b'mod_php u servizzi oħra ta' PHP.

X'jiġri ġewwa meta tintlaħaq il-limitu tal-memorja jiddeskrivi l-artikolu memory_limit u Out-of-Memory. Il-klassifikazzjoni tal-vulnerabbiltà nnifisha tinsab taħt CVE-2026-109618.

Kif jgħin PHP SOS konkretament?

  • Nivverifikaw il-verżjoni u l-istat tal-pakkett: Niddeterminaw liema stat tal-engine jaħdem tassew, inklużi l-backports tad-distribuzzjoni tagħkom.
  • Naġġornaw u nerġgħu nibdew: Permezz tas-Servizz ta' patch għal PHP nitfgħu l-aġġornament u nikkontrollaw li ma jibqa' ebda proċess bil-kodiċi qadim.
  • Nissettjaw il-limiti tal-memorja b'mod raġonevoli: Nallinjaw memory_limit, il-limitu iebes il-ġdid u l-limiti tal-cgroup mal-applikazzjoni tagħkom.
  • Neżaminaw l-anomaliji: Kraxxijiet tal-workers jew proċessi b'exit status 137 niklassifikawhom u nivverifikaw jekk jistax ikun hemm attakk warajhom.

Mistoqsijiet frekwenti

Minn fejn ġie l-isem taz-Zend Engine?

L-isem huwa magħmul mill-ismijiet tal-iżviluppaturi tagħha: Zeev Suraski u Andi Gutmans. Skont il-manwal ta' PHP, l-engine ġiet ippreżentata f'nofs l-1999 u minn PHP 4.0, f'Mejju 2000, saret il-qalba ta' PHP.

Iz-Zend Engine hija prodott separat li jrid jiġi installat?

Le. Iz-Zend Engine hija parti fissa minn kull installazzjoni ta' PHP. Min jaġġorna PHP jaġġorna awtomatikament ukoll l-engine. Ma għandha x'taqsam xejn mal-prodotti kummerċjali tal-kumpanija Zend.

X'inhu opcode?

Opcode huwa kmand individwali għall-magna virtwali ta' PHP, pereżempju żieda, sejħa ta' funzjoni jew assenjazzjoni. Il-kompilatur jittraduċi kull skrip f'sekwenza ta' kmandi bħal dawn, li mbagħad l-engine taħdem wieħed wieħed.

X'għandha x'taqsam iz-Zend Engine ma' memory_limit?

L-engine tamministra l-memorja ta' kull talba u tħares il-limitu minn memory_limit. Mill-verżjonijiet tas-sigurtà tal-21/10/2026 'l quddiem, skont il-manwal, dan il-limitu huwa limitu artab, imtamm b'limitu iebes permezz ta' memory_hard_limit_percent.

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