Descripción
En el kernel de Linux, se resolvió la siguiente vulnerabilidad: inetpeer: aleatorizar la comparación de nodos del árbol RB usando SipHash El sistema de limitación de tasa inetpeer almacena entradas de pares en un árbol rojo-negro indexado de forma determinista por la dirección IP remota. Como las búsquedas recorren el árbol RB mediante comparaciones lexicográficas estándar (inetpeer_addr_cmp), un adversario fuera de la ruta puede predecir la topología exacta del árbol y la secuencia de nodos recorridos durante las búsquedas (la lista de candidatos gc_stack). Al combinar el recorrido determinista del árbol con una recolección de basura agresiva (activada cuando el tamaño del árbol supera inet_peer_threshold), un atacante puede forzar selectivamente la expulsión de nodos inet_peer específicos. Cuando un nodo expulsado se vuelve a crear al recibir un nuevo paquete, su token bucket de limitación de tasa (rate_tokens, rate_last) se restablece a su capacidad máxima. Esto crea una primitiva de canal lateral que permite a atacantes fuera de la ruta omitir los límites de tasa ICMP basados en IP e inferir puertos UDP abiertos (de forma similar a ataques del estilo SAD DNS). Se mitiga aleatorizando la lógica de comparación de nodos del árbol RB mediante SipHash con una clave secreta (inetpeer_hash_key) inicializada con net_get_random_once(). Los nodos se ordenan en el árbol según SipHash(addr, key) en lugar de las direcciones IP sin procesar. Como la clave secreta es desconocida para entidades externas, la estructura del árbol y las rutas de recorrido de búsqueda resultan impredecibles para adversarios fuera de la ruta, lo que elimina el mecanismo de expulsión determinista. Se almacena en caché el SipHash de 64 bits calculado (hash) en struct inet_peer y se calcula el hash objetivo (dhash) una sola vez al inicio de inet_getpeer() para evitar recalcular SipHash en cada paso del recorrido del árbol RB.
Qué hacer
Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.
Versiones afectadas
- Linux Afectadas: b145425f269a17ed344d737f746b844dfac60c82 y anteriores a b20e98f0bb668a59abaf7bcf85d75c073e90d352 · b145425f269a17ed344d737f746b844dfac60c82 y anteriores a 5f127e3cc9647a8a70db12c65dbd0de473545380 · b145425f269a17ed344d737f746b844dfac60c82 y anteriores a 199fcf285e498111e029137d088949bc6c26d578 · b145425f269a17ed344d737f746b844dfac60c82 y anteriores a 857681f6835d5b0a7bc4a34a026baeaaf5215623 · b145425f269a17ed344d737f746b844dfac60c82 y anteriores a 7109bb63667a53e4542ad845476f97d0c8b28a61 · b145425f269a17ed344d737f746b844dfac60c82 y anteriores a 2ee66e9487172fcd189bc52a767c30dad7141c09
- Linux Afectadas: 4.14 No afectadas: 6.1.188 · 6.6.157 · 6.12.110 · 6.18.52 · 7.2.6 · 7.3
Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.
Referencias
- Referencia en git.kernel.orggit.kernel.org/stable/c/b20e98f0bb668a59abaf7bcf85d75c073e90d352
- Referencia en git.kernel.orggit.kernel.org/stable/c/5f127e3cc9647a8a70db12c65dbd0de473545380
- Referencia en git.kernel.orggit.kernel.org/stable/c/199fcf285e498111e029137d088949bc6c26d578
- Referencia en git.kernel.orggit.kernel.org/stable/c/857681f6835d5b0a7bc4a34a026baeaaf5215623
- Referencia en git.kernel.orggit.kernel.org/stable/c/7109bb63667a53e4542ad845476f97d0c8b28a61
- Referencia en git.kernel.orggit.kernel.org/stable/c/2ee66e9487172fcd189bc52a767c30dad7141c09
Ver el texto original en inglés (CVE.org)
inetpeer: randomize RB-tree node comparison using SipHash
In the Linux kernel, the following vulnerability has been resolved: inetpeer: randomize RB-tree node comparison using SipHash The inetpeer rate limiting system stores peer entries in a Red-Black tree keyed deterministically on the remote IP address. Because tree lookups walk the RB-tree using standard lexicographical comparisons (inetpeer_addr_cmp), an off-path adversary can predict the exact topology of the tree and the sequence of nodes traversed during lookups (the gc_stack candidate list). By combining deterministic tree traversal with aggressive garbage collection (triggered when tree size exceeds inet_peer_threshold), an attacker can selectively force the eviction of targeted inet_peer nodes. When an evicted node is subsequently re-created upon receiving a new packet, its rate-limiting token bucket (rate_tokens, rate_last) is reset to full capacity. This creates a side-channel primitive allowing off-path attackers to bypass IP-keyed ICMP rate limits and infer open UDP ports (similar to SAD DNS style attacks). Mitigate this by randomizing the RB-tree node comparison logic using SipHash with a secret key (inetpeer_hash_key) initialized via net_get_random_once(). Nodes are ordered in the tree by SipHash(addr, key) rather than raw IP addresses. Because the secret key is unknown to external entities, the tree layout and lookup traversal paths are unpredictable to off-path adversaries, breaking the deterministic eviction gadget. Cache the computed 64-bit SipHash (hash) in struct inet_peer and compute the target hash (dhash) once at the beginning of inet_getpeer() to avoid recomputing SipHash at every step of the RB-tree walk.