Está usted visitando una publicación en la hemeroteca de CSIRT-CV.
Para acceder al portal y contenido actual, visite https://www.csirtcv.gva.es
06/02/2012
Si fa un parell de setmanes es publicava l’actualització 5.3.9 de PHP, ara es detecta una nova vulnerabilitat provocada pels canvis introduïts en el pegat que solucionaven l’anterior, relacionada amb les taules de resum (CVE-2011-4885).
Segons l'investigador Stefan Esser (i0n1c), esta nova vulnerabilitat (CVE-2012-0830) permetria l'execució remota de codi o si no n’hi ha, un atac de denegació de servici. Hi ha una prova de concepte que l’aprofita.
La vulnerabilitat es presenta en la introducció d’una nova propietat dins de php.ini, anomenada "max_input_vars" que limita el nombre màxim de paràmetres que poden ser usats en una petició (per ex:http://www.sitio.com/peticion.php?a=1&b=2&c=3). Per defecte se li assigna el valor 1000.
Açò, unit als canvis introduïts en la funció 'php_register_variable_ex' que no controlen correctament quan se supera el valor max_input_vars i s’utilitza una agrupació de variables, permet que es puga executar el codi remotament.
Si s’observa el codi canviat en php_variables.c, es comprova que només es controlen els valors menors o iguals a "max_input_vars":
if (zend_hash_núm_elements(symtable1) <= PG(max_input_vars)) {
if (zend_hash_núm_elements(symtable1) == PG(max_input_vars)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Input variables exceeded %ld. To increase the limit change max_input_vars in php.ini.", PG(max_input_vars)); }
...
Sense else que encamine per altres vies el codi. Per tant, si se supera el dit valor el codi seguiria executant-se fins a arribar a:
symtable1 = Z_ARRVAL_PP(gpc_element_p);
una macro que torna referències a la taula de resum actualitzada. És ací on es podria executar el codi arbitrari o, provocar una denegació de servici.
Sistemes Afectats:PHP 5.3.9
Referències:CVE-2012-0830
Solució:PHP ha publicat ràpidament l’actualització de PHP 5.3.10 que es troba disponible en:
http://www.php.net/downloads.php
Una vulnerabilitat podria permetre deixar sense servici la majoria de servicis web
http://unaaldia.hispasec.com/2011/12/una-vulnerabilidad-podria-permitir.html
Critical PHP Remote Vulnerability Introduced in Fix for PHP Hashtable Collision DOS
http://thexploit.com/sec/critical-php-remote-vulnerability-introduced-in-fix-for-php-hashtable-collision-dos/
Simple proof of concept for PHP bug described by Stefan Esser (@i0n1c)
https://gist.github.com/1725489