Salto en la comprobación de secuencias numéricas IPSec en FreeBSD

Forums: 

http://www.hispasec.com/unaaldia/2708

El equipo de FreeBSD ha liberado un parche corrector que solventa un
problema de seguridad moderadamente crítico, y confirmado en las ramas
4.x, 5.x y 6.x de la distribución.

FreeBSD es un sistema operativo libre, multiplataforma y de núcleo
monolítico, derivado del 4.4BSD-Lite de Berkeley, orientado a su uso
como escritorio, si bien su arquitectura permite emplearlo como
servidor, bien sea doméstico, bien sea corporativo.

Es frecuente que para proteger el tráfico IP se disponga de mecanismos
de cifrado como IPsec. IPsec es un conjunto de protocolos que
proporcionan servicios de seguridad para datagramas IP. Dentro de
estos protocolos están el protocolo de autenticación de cabeceras AH
(Authentication Header), y un protocolo de encapsulado de las cargas
útiles denominado ESP (Encapsulating Security Payload), cada uno con
una función específica. AH se encarga de garantizar la integridad de
los paquetes IP, adjuntando una suma critpográfica calculada mediante
alguna función hash unidireccional reconocida y por otro lado, ESP
proporciona cifrado mediante llave privada a la carga útil IP. Bajo
estas condiciones, se pretende que AH proporcione autenticación e
integridad a los mensajes, pero sin aportar nada a la confidencialidad
de los mensajes, confidencialidad que sí queda cubierta por ESP. De
todos modos, se tiende a la unificación mediante Internet Key Exchange
(IKE) para poder así cumplir los requisitos mandatorios del protocolo
IPv6, puesto que en este protocolo es obligatoria la seguridad
mediante IPSec. En IPv4 no existe tal mandato.

En este contexto, IPsec proporciona un servicio "anti-replay" que una
vez activado previene que un atacante pueda ejecutar ataques replay o
de repetición. Este servicio revisa y verifica secuencias numéricas
para detectar los patrones de un ataque de este tipo. Los ataques
"replay" son un tipo de ataque en red en los cuales se replican o
retardan, con intenciones maliciosas, transmisiones de datos
legítimas. Esta interceptación requiere la captura de los datos y su
modificación, para ser después reemitidos por el agente malicioso,
generalmente para conformar un ataque de enmascaramiento, del tipo que
sea.

Un error de diseño en la implementación fast_ipsec(4) implica que en
el tránsito de paquetes, la secuencia numérica empleada en las
"Security Associations" inherentes a IPSec, no sean actualizadas, lo
que posibilita que los paquetes circulen sin las pertinentes
comprobaciones en las secuencias numéricas. En una situación óptima,
las "Security Associations" permiten establecer flujos
unidireccionales entre dos gateways, y son establecidas bajo demanda
empleando IKE.

Este error faculta a un atacante malicioso la interceptación de
paquetes IPSec y su posterior reproducción, ejecutando por tanto,
ataques replay o de repetición, tal y como se ha descrito.

La solución más apropiada es la aplicación de parches correctores:

# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-06:11/ipsec.patch
(descarga)
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-06:11/ipsec.patch.asc
(verificación de integridad)

Para aplicarlos:

# cd /usr/src
# patch < /path/to/patch

El último paso es recompilar el kernel y reiniciar la máquina.
Recomendamos que para esta operación, los administradores FreeBSD
sigan las prescripciones citadas en
http://www.freebsd.org/handbook/kernelconfig.html.