PPP es un protocolo del nivel de enlace de datos, utilizado para establecer una conexión directa entre dos nodos de una red, para gestionar estas conexiones se utiliza el software PPPd.
¿Qué pasó?
Recientemente se ha publicado una vulnerabilidad crítica identificada como CVE-2020-8597 que afecta al software PPPd desde las versiones 2.4.2 hasta la 2.4.8.
Esta vulnerabilidad de ser explotada permitiría a un atacante remoto no autenticado causar un desbordamiento del búfer, lo que podría conducir a la ejecución remota de código, y se da debido a que el componente encargado de procesar los paquetes EAP presenta un error a la hora de validar el tamaño de la entrada. Concretamente las funciones afectadas son eap_request() y eap_response() del archivo eap.c.
Por otro lado la función eap_input() también presenta un fallo, y se da al no verificar correctamente si se ha negociado la autenticación EAP durante la fase de control del protocolo de enlace. Esto permitiría a un atacante remoto no autenticado enviar paquetes EAP y estos serán procesados por la función eap_input() incluso si la autenticación no ha sido negociada de manera adecuada o PPP ha rechazado la conexión.
PPPd generalmente se ejecuta con permisos elevados (de root o de system) y funciona junto con los controladores del kernel, esto hace posible que un atacante no autenticado pueda ejecutar código remoto con privilegios de root o system.Esta falla además afecta a la pila lwIP, sólo si el EAP ha sido habilitado en el momento de la compilación.
Los fabricantes que han confirmado la vulnerabilidad, se listan a continuación:
- Debian
- Ubuntu
- SUSE Linux
- Fedora
- NetBSD
- Red Hat Enterprise Linux
- Cisco CallManager
- Productos TP-LINK
- SO embebido OpenWRT
- Productos Synology
Un ejemplo de la explotación de esta vulnerabilidad la puede ver aquí.
Recomendación:
- Aplicar los últimos parches de seguridad liberados por los fabricantes de los sistemas operativos y dispositivos afectados:
- Si su software está empaquetado y creado a partir del código fuente de ppp, obtenga el último software del repositorio de github pppd.
- Para el caso del paquete lwIP, obtenga el último código fuente del repositorio de github lwIP.
Referencias: