lunes, 10 de enero de 2011

Debilidad en la implementación del driver wireless Orinoco en Linux

Existe una debilidad de diseño en la implementación de la función 'orinoco_ioctl_set_auth' de 'drivers/net/wireless/orinoco/wext.c' en el driver wireless Orinoco.

Esto provoca la habilitació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 podemos 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.


Laboratorio Hispasec
laboratorio@hispasec.com



No hay comentarios:

Publicar un comentario en la entrada