viernes 3 de febrero de 2012

Grave vulnerabilidad en PHP introducida con un parche anterior

La nueva versión de PHP 5.3.10 resuelve una vulnerabilidad que permite la ejecución de código remoto, y que fue introducida al intentar arreglar la anterior actualización.

Si hace un par de semanas se publicaba la actualización 5.3.9 de PHP, ahora se detecta una nueva vulnerabilidad provocada por los cambios introducidos en el parche que solucionaban la anterior, relacionada con las tablas hash (CVE-2011-4885).

Según el  investigador Stefan Esser (i0n1c), esta nueva vulnerabilidad (CVE-2012-0830) permitiría la ejecución remota de código o en su defecto, una ataque de denegación de servicio. Existe una prueba de concepto que la aprovecha.

La vulnerabilidad se presenta en la introducción de una nueva propiedad dentro de php.ini, llamada "max_input_vars" que limita el número máximo de parámetros que pueden ser usados en una petición (por ej: http://www.sitio.com/peticion.php?a=1&b=2&c=3). Por defecto le es asignado el valor 1000.

Esto, unido a los cambios introducidos en la función 'php_register_variable_ex' que no controlan correctamente cuándo se supera el valor max_input_vars y se utiliza un array de variables, permite que se pueda ejecutar código remotamente.

Si se observa el código cambiado en php_variables.c, se comprueba que sólo se controlan los valores menores o iguales a "max_input_vars":

  if (zend_hash_num_elements(symtable1) <= PG(max_input_vars)) {
     if (zend_hash_num_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));
      }
  ...
Sin "else" que encamine por otras vías el código. Por tanto, si se supera dicho valor el código seguiría ejecutándose hasta llegar a:

  symtable1 = Z_ARRVAL_PP(gpc_element_p);
una macro que devuelve referencias a la tabla hash actualizada. Es aquí donde se podría ejecutar el código arbitrario o, provocar una denegación de servicio.

PHP ha publicado rápidamente la actualización de PHP 5.3.10 que se encuentra disponible en:

Más información:

Una vulnerabilidad podría permitir dejar sin servicio a la mayoría de servicios web

Critical PHP Remote Vulnerability Introduced in Fix for PHP Hashtable Collision DOS

Simple proof of concept for PHP bug described by Stefan Esser (@i0n1c)


José Mesa Orihuela

jueves 2 de febrero de 2012

Ciertos móviles HTC permiten enviar la clave WiFi en texto claro a un servidor remoto

Según afirma el programador Chris Hessing (que participa en el Open1X Group), y el investigador Bret Jordan, existiría una vulnerabilidad crítica (CVE-2011-4872) en los terminales móviles de HTC con Android. El fallo facilitaría la revelación de información sensible tal como datos de configuración y credenciales de las redes WIFIs (802.1X) guardadas en el móvil.

El HTC Desire HD es uno de los
terminales afectados por este
problema
La vulnerabilidad afectaría a nueve terminales de la marca taiwanesa HTC:
·         Desire HD - Versiones FRG83D, GRI40
·         Desire S - Versión GRI40
·         Sensation Z710e - Versión GRI40
·         Glacier - Versión FRG83
·         EVO 3D - Versión GRI40
·         Droid Incredible - Versión FRF91
·         Thunderbolt 4G - Versión FRG83D
·         Sensation 4G - Versión GRI40
·         EVO 4G - Versión GRI40

El error se debe a los permisos asociados a "android.permission.ACCESS_WIFI_STATE" en las versiones afectadas y al uso del miembro .toString() de la clase WifiConfiguration. Esto daría acceso a todas las configuraciones almacenadas y las contraseñas en texto claro (otra característica de la vulnerabilidad presente), a través de aplicaciones especialmente manipuladas para transmitir estos datos de manera remota. Se necesitarían los permisos "android.permission.INTERNET". Este es bastante habitual a la hora de instalar ciertas aplicaciones en Android que necesitan acceso a Internet.

Por ejemplo, un atacante podría obtener la siguiente información en un servidor remoto, si la víctima ejecutara una aplicación especialmente diseñada para aprovechar este fallo: 
 ID: 0 SSID: "wpa2eap" BSSID: null PRIO: 21
KeyMgmt: WPA_EAP IEEE8021X Protocols: WPA RSN
AuthAlgorithms:
PairwiseCiphers: CCMP
GroupCiphers: WEP40 WEP104 TKIP CCMP
PSK:
eap: TTLS
phase2: auth=PAP
identity: test
anonymous_identity:
password: test
client_cert:
private_key:
ca_cert: keystore://CACERT_wpa2eap
Google y HTC (que fueron notificados de manera privada en septiembre de 2011) están trabajando coordinadamente para solucionar la vulnerabilidad y actualmente no se conocen aplicaciones en el Market que la aprovechen, siempre según fuentes oficiales.

Las posibles actualizaciones estarán disponibles a través de los canales oficiales de cada operador o mediante HTC: http://www.htc.com/europe/help/

Más información:

802.1X password exploit on many HTC Android devices

802.1X password exploit on many HTC Android devices


José Mesa Orihuela