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.
sto 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.
sto 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.