Udajne kriticka zranitelnost mod_php

Jozef Drahovsky (for freebsd) freebsdcz3 at jozef.drahovsky.sk
Thu Oct 22 18:45:07 CEST 2026


Dňa 22.10.2026 o 14:22 Jozef Drahovsky (for freebsd) napísal(a):
>
> Dňa 22.10.2026 o 12:20 Dan Lukes napísal(a):
>> On 21.10.2026 21:50, Jozef Drahovsky (for freebsd) wrote:
>>> má kritickú zraniteľnosť, ktorá sa prejaví pri špecifických 
>>> podmienkach keď prvý dotaz spraví pretečenie pamäte a druhý spustí 
>>> kód z toho čo pretieklo. Ak som to správne pochopil.
>>
>> Nektere zdroje to zhruba tak popisuji. A nekteri tvrdi, ze exploit 
>> videli funkcni, jini tvrdi, ze se funkcnost toho udajne funkcniho 
>> exploitu zreprodukovat nepodarilo.
>>
>> Na muj vkus trochu moc zmatku. Skutecnou nebezpecnost toho exploitu 
>> zatim stale povazuji za neobjasnenou.


Pre informáciu.
Nájdené zmeny v kóde zodpovedajú tomu čo sa propaguje, ale na využite 
doterajšej chyby treba okrem iného aj veľa správnej vesmírnej konštalácie.
Keďže mod_php obsahuje opravené jadro Zend, tak dopad môže byť širší ako 
len na Apache.

Zend/zend_execute_API.c pribudlo pri ukončovaní požiadavky:
+ EG(record_errors) = false;
+ EG(num_errors) = 0;
+ EG(errors) = NULL;
+ EG(error_handling) = EH_NORMAL;
+ EG(exception) = NULL;

main/main.c sa po uvoľnení jednotlivých vstupných globálnych premenných 
dopĺňa označenie, že už neobsahujú platnú hodnotu:
   zval_ptr_dtor(&PG(http_globals)[i]);
+ /* May be accessed before php_request_startup() */
+ ZVAL_UNDEF(&PG(http_globals)[i]);

V Zend/zend_alloc.c bola odstránená pôvodná cesta okamžitého prerušenia:
- zend_bailout();
- exit(1);

Zaznamená čakajúcu chybu pamäte a nastaví prerušenie:
EG(delayed_oom).state = ZEND_OOM_STATE_PENDING;
zend_atomic_bool_store_ex(&EG(vm_interrupt), true);


Pre tvrdý pamäťový limit pribudla samostatná funkcia 
zend_mm_hard_limit_error(), ktorá končí:
_exit(137);


Jozef



More information about the Users-l mailing list