Reporte de Vulnerabilidades de Seguridad en net/
1. VALIDACIÓN INSUFICIENTE EN RAW SOCKETS
Archivo: net/ipv4/raw.c líneas 380-400 Problema: Campo IHL no validado adecuadamente Impacto: DoS, corrupción de memoria
iphlen = iph->ihl * 4; // Sin validación mínima
if (iphlen > length) // Solo verifica máximo, no mínimo
goto error_free;
2. VALIDACIÓN DE LONGITUD EN OPCIONES IP
Archivo: net/ipv4/ip_options.c líneas 279-286 Problema: Validación inconsistente de optlen
if (optlen < 2 || optlen > l) {
pp_ptr = optptr;
goto error;
}
// Pero luego:
if (optlen < 3) { // Validación adicional inconsistente
pp_ptr = optptr + 1;
goto error;
}
3. MANEJO DE DATOS DE USUARIO EN NETLINK
Archivo: net/netlink/af_netlink.c línea 1871 Problema: memcpy_from_msg sin validación previa completa
if (memcpy_from_msg(skb_put(skb, len), msg, len)) {
kfree_skb(skb);
goto out;
}
4. VALIDACIÓN DE TAMAÑO EN PACKET SOCKETS
Archivo: net/packet/af_packet.c línea 2093 Problema: Potencial overflow en skb_put
err = memcpy_from_msg(skb_put(skb, len), msg, len);
5. VERIFICACIÓN DE LÍMITES EN TCP
Archivo: net/ipv4/tcp.c líneas 3774-3776 Problema: Validación mínima pero no máxima
if (optlen < sizeof(int))
return -EINVAL;
// Falta validación de límite superior
RECOMENDACIONES DE MITIGACIÓN:
Para Raw Sockets:
// Añadir validación mínima
if (iph->ihl < 5 || iph->ihl > 15) {
err = -EINVAL;
goto error_free;
}
Para Opciones IP:
// Validación consistente
if (optlen < MIN_OPT_LEN || optlen > MAX_OPT_LEN) {
goto error;
}
Para Netlink:
// Validar límites antes de memcpy
if (len > MAX_NETLINK_MSG_SIZE) {
err = -EMSGSIZE;
goto out;
}
IMPACTO POTENCIAL:
- Denegación de servicio (DoS)
- Corrupción de memoria del kernel
- Bypass de validaciones de seguridad
- Potencial escalada de privilegios (en casos extremos)
- Ataques de red remotos
NIVEL DE SEVERIDAD: ALTO
Estas vulnerabilidades pueden ser explotadas remotamente a través de la red y afectar la estabilidad del sistema.
Descripción
Languages
C
100%