Escalada de privilegios en Linux mediante la vulnerabilidad CVE-2024-48990 en Needrestart
La vulnerabilidad CVE-2024-48990 permite la escalada local de privilegios (LPE) en la utilidad Needrestart en versiones hasta la 3.8. El problema radica en el manejo de la variable de entorno PYTHONPATH, lo que permite la ejecución de código arbitrario con privilegios de root. Afecta a Ubuntu 21.04 y posteriores, Debian, Fedora y otras distribuciones de Linux. Puntuación CVSS: 7.8.
Needrestart escanea procesos después de actualizaciones de bibliotecas y reinicia servicios vulnerables. El ataque explota controles inadecuados en las rutas de carga de módulos para Python, Perl y Ruby, sustituyéndolas por unas maliciosas.
Comprobación de la vulnerabilidad en el sistema
Ejecuta este comando para comprobar la versión:
needrestart --version | grep -q "3.7" && echo "Definitely vulnerable" || echo "Version is potentially not vulnerable, this simply checks for 3.7"
Las versiones inferiores a 3.8 son vulnerables. La utilidad se ejecuta automáticamente durante la instalación de paquetes mediante apt, creando una ventana de explotación.
Explotación paso a paso
Para la demostración, usa el PoC público. Clona el repositorio y ejecuta el script como un usuario normal:
cd CVE-2024-48990-PoC-Testing
./runner.sh
El script establece PYTHONPATH en un módulo malicioso. Luego, como root o mediante sudo, realiza una acción que active Needrestart, como:
sudo apt remove ntp; sudo apt install ntp
Esto lleva a la ejecución de código con privilegios de root, abriendo una shell inversa o acceso directo.
Detalles técnicos del ataque
La vulnerabilidad ocurre durante el análisis de PYTHONPATH: Needrestart no valida las rutas, permitiendo la inyección de un módulo cargado con privilegios elevados. Lo mismo aplica a PERL5LIB y RUBYLIB.
- El atacante establece PYTHONPATH=/path/to/malicious.
- Needrestart importa el módulo desde la ruta especificada durante el escaneo.
- La carga útil se ejecuta con privilegios de root.
Requiere acceso local y la invocación de Needrestart por otro usuario (sudo).
Medidas de protección y parcheo
- Actualiza a Needrestart 3.8 o posterior: vulnerabilidad corregida con validación mejorada de variables de entorno.
- Desactiva el escaneo de intérpretes en /etc/needrestart/needrestart.conf:
```
$nrconf{interpscan} = 0;
```
- Monitorea variables de entorno usando auditd o falco.
- Usa AppArmor o SELinux para restringir Needrestart.
Puntos clave
- CVE-2024-48990 se explota mediante PYTHONPATH sin acceso root inicial.
- Afecta a servidores Ubuntu 21.04+, Debian, Fedora con Needrestart activado por defecto.
- Parche en la versión 3.8: validación completa de rutas de módulos.
- Recomendado: desactiva interpscan para minimizar riesgos.
- Prueba actualizaciones en un entorno aislado antes del despliegue.
— Editorial Team
Aún no hay comentarios.