Darwin Nuke, o cómo sólo un paquete IP puede "noquear" un dispositivo Apple

En diciembre de 2014 Kaspersky Lab descubrió una vulnerabilidad en el kernel Darwin, la parte de código abierto de OS X e iOS, por la que mediante un único paquete IP, con algunas opciones IP no válidas y un tamaño específico, se podía crashear un dispositivo con OS X 10.10 o iOS 8 instalado.

La vulnerabilidad ha sido bautizada como Darwin Nuke y ocurre al parsear las opciones de un paquete ICMP y generar un mensaje de error mediante la función icmp_error():



Como veis, cuando se cumplen las condiciones establecidas en el código, la función panic se activa y el sistema se apaga en modo de emergencia. Esto sucede porque las estructuras internas del kernel han cambiado y el nuevo tamaño del buffer no es suficiente para guardar un paquete ICMP recién generado. Para hacer esto, el paquete IP debe cumplir los siguientes criterios:

- El tamaño de la cabecera IP debe ser de 60 bytes.
- El tamaño del payload IP debe ser de al menos 65 bytes
- Debe haber errores en las opciones IP (tamaño no válido de opción, de clase, etc.)



¿La solución? Actualizar a OS X 10.10.3 y iOS 8.3.


Fuentes:
- Kaspersky Lab Finds “Darwin Nuke” Vulnerability in OS X and iOS
- Darwin kernel, just an IP packet to cause the crash of Apple devices
- Darwin Nuke
- Darwin Nuke, una vulnerabilidad que amenaza a iOS y OS X
- Apple Patches 'Darwin Nuke,' Other Security Flaws With New OS Releases

Comentarios