11 de enero de 2011

DEBILIDAD EN LA IMPLEMENTACIÓN DEL DRIVER “wireless Orinoco” EN LINUX

El driver "wireless Orinoco" tiene un fallo de diseño en la implementación de la función 'orinoco_ioctl_set_auth' de 'drivers/net/wireless/orinoco/wext.c'

  • Este fallo provoca la activación de la tarjeta si están habilitadas las contramedidas para TKIP haciendo los ataques más efectivos.
  • Un atacante remoto podría obtener ventaja en ciertos ataques si este error de diseño está presente.

Como se puede observar en el parche introducido:

if (param->value) {

priv->tkip_cm_active = 1;

- ret = hermes_enable_port(hw, 0);

+ ret = hermes_disable_port(hw, 0);

} else {

priv->tkip_cm_active = 0;

- ret = hermes_disable_port(hw, 0);

+ ret = hermes_enable_port(hw, 0);

}

El fallo es un simple error de lógica al intentar justo lo contrario de lo que se pretendía en el diseño original.

La acción correcta a tomar es si priv->tkip_cm_active = 1, es decir que las contramedidas para TKIP estén activas, deshabilitar la tarjeta.

Fuente: Hispasec