Resumen

  • Sharon Goldberg, Aanchal Malhotra, Isaac E. Cohen y Erik Brakke comprobaron que clientes ntpd antiguos aceptaban respuestas Kiss-o’-Death aunque su marca temporal de origen no coincidiera con la solicitud.
  • Una sola falsificación por servidor configurado podía retirar todas las fuentes de corrección durante un plazo elegido por el atacante; vincular la negativa a una petición real y limitar la retirada son defensas distintas y necesarias.

Un reloj de red hace preguntas repetidas: ¿qué hora es ahora?, ¿y ahora? La continuidad de ese diálogo permite corregir su deriva. Pero los servidores públicos también necesitan defenderse de clientes insistentes. NTP les ofrece una respuesta especial para pedir distancia. La investigación de 2015 mostró que esa petición podía transformarse en la propia herramienta de denegación.

El mensaje se llama Kiss-o’-Death, KoD. Es una respuesta de modo 4 con indicador de segundo intercalar 3 y estrato 0; su identificador de referencia lleva un código de cuatro caracteres. RATE pide ampliar el intervalo, mientras DENY y RSTR niegan el servicio. No es un error casual: es una instrucción que cambia la conducta futura del receptor.

Aanchal Malhotra, Isaac E. Cohen, Erik Brakke y Sharon Goldberg examinaron cómo trataban esa instrucción ntpd 4.2.6 y 4.2.8. El cliente obedecía incluso cuando la marca temporal de origen del KoD no guardaba relación con una solicitud pendiente. Bastaba suplantar la dirección IP de un servidor conocido; no hacía falta situarse en la ruta ni observar el intercambio.

Una respuesta sin pregunta

En una conversación NTP normal, la solicitud de modo 3 incluye una marca de transmisión. El servidor la copia en la marca de origen de su respuesta de modo 4. El control TEST2 compara el eco con la solicitud aún abierta. Esa pieza de estado actúa como un nonce: no autentica criptográficamente al interlocutor, pero demuestra que la respuesta conoce la pregunta concreta.

El camino de procesamiento del KoD no aplicaba esa comprobación. La forma del paquete adquiría autoridad aunque faltara su relación con el diálogo. Es una diferencia importante: filtrar por dirección aparente responde solo a “¿a quién se parece?”, mientras el eco responde a “¿qué solicitud está contestando?”.

El campo de sondeo convierte una potencia de dos en tiempo de espera. Un valor de 17 significa al menos 2^17 segundos, unas treinta y seis horas. Los clientes probados aceptaban valores aún mayores; 25 equivale aproximadamente a un año. La entrada duraba lo que tarda un paquete. El estado inducido podía sobrevivir a guardias, mantenimientos y periodos de retención de registros.

El RFC 5905 concibió RATE para aumentar el espacio entre paquetes; una errata incorporada corrige una palabra del texto original que apuntaba en sentido contrario. Pero conocer la semántica correcta no basta. También hace falta decidir qué mensaje puede activarla y hasta dónde puede llegar.

Vaciar la lista de servidores

El atacante necesitaba la dirección de la víctima y un servidor que esta utilizara. El estudio mostró cómo identificar el servidor activo. Al enviar una consulta de modo 3 a un cliente IPv4 sincronizado, su respuesta de modo 4 podía revelar la dirección del servidor en el identificador de referencia.

Después llegaba el KoD falsificado, aparentemente emitido por esa dirección. Si ntpd elegía un suplente, el atacante repetía el procedimiento. Cada paquete eliminaba una fuente de tiempo. El éxito no se medía por volumen sino por cobertura de la lista: cuando no quedaba ningún servidor disponible, el reloj dejaba de preguntar.

En el laboratorio, el equipo configuró ntpd 4.2.8p2 con tres servidores públicos. La tercera negativa llegó aproximadamente a los noventa minutos. Luego los investigadores detuvieron el ensayo, pero el cliente permaneció sin consultar durante otras cincuenta horas; el intervalo mínimo solicitado había sido de unas treinta y seis.

Repetir KoD periódicamente podía sostener la condición, aunque el primer ciclo ya demostraba la economía del ataque. Quien envía paga una vez; quien recibe conserva la decisión. Los controles de abuso suelen contar llamadas, pero aquí la unidad crítica era cuántas dependencias podían desactivar unas pocas respuestas.

Un sondeo de 2015 encontró más de trece millones de direcciones IPv4 que respondían a la consulta útil para el primer paso. No eran trece millones de vulnerabilidades confirmadas ni una estimación actual. La reacción al KoD y la visibilidad de un servidor sincronizado eran condiciones adicionales. El dato sitúa el hallazgo en su época, no lo convierte en constante de Internet.

El reloj queda solo

El ataque directo no escribía una hora arbitraria. Interrumpía las muestras externas y dejaba al cliente correr con su reloj local. El desenlace dependía del oscilador, la virtualización, la carga de CPU y el software. Dos máquinas privadas de la misma fuente podían desviarse de maneras distintas.

Por eso conviene separar denegación y manipulación. El mecanismo garantizaba ausencia de corrección durante el intervalo aceptado. Los efectos sobre autenticación, certificados, registros, bases distribuidas o tareas programadas dependían de sus tolerancias. Afirmar más borraría precisamente el tramo donde debe comenzar la observación operativa.

Un registro útil conserva la última sincronización válida, el emisor aparente y el kiss code, el resultado de la marca de origen, el intervalo pedido y el aplicado, las fuentes restantes y la incertidumbre acumulada. Si el cliente simplemente desaparece de la telemetría, el control que lo silenció también se vuelve invisible.

Encadenar y acotar

El aviso del NTP Project para el Bug 2901 sitúa la corrección del vector directo en 4.2.8p4. Esa versión empezó a exigir una marca de origen válida en los KoD. En la rama de desarrollo, el límite afectado llega hasta antes de 4.3.77. El atacante fuera de ruta ya no podía inventar gratis el valor que necesitaba.

La mejora no autenticaba criptográficamente al servidor. Los autores describieron un camino residual, “priming pump”: enviar al servidor real muchas solicitudes con la dirección de la víctima, provocar su limitación de tasa y hacer que el propio servidor produzca un KoD correctamente enlazado. Requería más tráfico y solía imponer plazos menores, como sondeo 10, unos quince minutos, en vez de un año arbitrario.

El RFC 8633 completó en 2019 la disciplina operativa. Solo se acepta KoD con marca de origen válida. Además, el cliente debe imponer un máximo razonable a RATE, nunca superior a sondeo 13, dos horas. Incluso una sola petición con un valor excesivo puede considerarse señal de ataque.

El vínculo con la solicitud encarece la fabricación; la autenticación identifica al par; el techo local limita el daño aunque la orden sea genuina. Son controles complementarios. Diseñar una respuesta negativa exige contestar las tres preguntas antes de permitir que cierre un canal futuro.

La aportación fue también una forma de investigar

El perfil de Boston University describe el trabajo de Goldberg como un cruce entre criptografía, teoría de juegos y algoritmos, por un lado, y medición, modelado y simulación de redes, por otro. En este estudio, la especificación aportó la intención, el software mostró la conducta efectiva, el laboratorio midió la persistencia y el sondeo estimó las precondiciones visibles.

La autoría es compartida por Malhotra, Cohen, Brakke y Goldberg. La página del proyecto fecha el inicio de la divulgación responsable el 20 de agosto de 2015. Network Time Foundation, NTPsec, Cisco y Red Hat distribuyeron parches antes de la publicación del 21 de octubre. Perfilar a Goldberg no convierte esa cadena colectiva en una invención individual.

La lección atraviesa protocolos. Ante una orden de “reintenta”, “detente”, “niega”, “aísla” o “cancela”, hay que preguntar qué solicitud la autoriza, qué identidad la emite, quién controla la duración y qué ruta de recuperación sobrevive. Una respuesta negativa administra el futuro, no solo describe un fallo presente.

El KoD fue potente porque falsificarlo costaba poco y esperar su vencimiento costaba mucho. Un sistema prudente invierte esa relación: exige contexto, limita el retroceso y registra el instante en que el reloj deja de preguntar.

Fuentes