
Turvanõrkuse CVE 2024 3273 analüüs: D-Link seadmete käsusüst
D-Link Network Attached Storage (NAS) o almacenamiento en red es un dispositivo conectado a una red informática con uno o más discos duros para almacenar y compartir archivos. A diferencia de un disco duro externo normal, que se conecta directamente a un ordenador, el dispositivo de almacenamiento en red se conecta a la red local, permitiendo que múltiples usuarios o dispositivos accedan y compartan archivos simultáneamente. Los dispositivos de almacenamiento en red se utilizan tanto en entornos domésticos como empresariales.
La empresa de investigación de seguridad VulDB Coordination descubrió una vulnerabilidad crítica en algunos dispositivos de almacenamiento en red D-Link (CVE-2024-3273), que permite a usuarios malintencionados realizar una inyección de comandos a través de la red, ejecutando comandos maliciosos en el dispositivo de la víctima.
Esta vulnerabilidad afecta solo a ciertos dispositivos D-Link que ya han llegado al final de su vida útil y el fabricante ha cesado el soporte de software y hardware para estos dispositivos. Los modelos afectados son:
Esta vulnerabilidad también requiere la explotación simultánea de otra vulnerabilidad. En concreto, una puerta trasera causada por credenciales de inicio de sesión programadas de fábrica hace que el dispositivo de almacenamiento en red sea especialmente vulnerable. Esta puerta trasera es la vulnerabilidad (CVE-2024-3272), donde un usuario puede eludir la autenticación utilizando el "usuario del sistema" messagebus presente por defecto en todos los dispositivos afectados.
Este usuario de demonio del sistema (system daemon), presente por defecto en sistemas Linux, no puede iniciar sesión directamente en el sistema, pero basta con una solicitud HTTP hábilmente elaborada a un punto final específico para causar daño.
También es necesario conocer la dirección IP del dispositivo atacado.
La vulnerabilidad reside en la función de procesamiento de solicitudes HTTP GET en el archivo /cgi-bin/nas_sharing.cgi del dispositivo de almacenamiento en red. Un usuario malintencionado puede enviar una solicitud GET a través de la red al dispositivo víctima, proporcionando como parámetros el nombre de usuario "messagebus" y dejando la contraseña vacía. La inyección de comandos entra en juego utilizando el parámetro system, estableciendo como valor del parámetro el comando deseado.
El comando se oculta mediante codificación base64 y se añade como valor del parámetro system. Posteriormente, al decodificarlo, se revela el fragmento malicioso que se ejecuta como comando shell en el dispositivo atacado.
🗒️ CVSS Puntuación base: 7.3 Alto
La causa de la vulnerabilidad CVE-2024-3273 es CWE-77, es decir, inyección de comandos. Esto significa que un atacante puede insertar comandos maliciosos que el sistema atacado luego ejecuta, debido a que el comando insertado no es validado.
Dado que el código fuente de los dispositivos no es público, probablemente para evitar este problema se debería agregar una función de validación en el método que maneja las solicitudes. Por ejemplo, podría haber una lista de comandos del sistema permitidos para evitar la ejecución de comandos arbitrarios.
La vulnerabilidad compromete principalmente los siguientes objetivos de seguridad:
Esta vulnerabilidad afecta solo a dispositivos que ya han llegado al final de su vida útil, por lo que el fabricante recomienda reemplazar los dispositivos y no utilizar los dispositivos vulnerables. Dado que estos dispositivos ya no reciben soporte, tampoco pueden recibir actualizaciones de seguridad de software, lo que significa que la vulnerabilidad no se corregirá. Por lo tanto, la única solución es dejar de usar los productos afectados.
Si no es posible reemplazar el dispositivo vulnerable, se debe retirar de la red pública y, en caso extremo, usarlo solo para dispositivos en la red local (se debe instalar un cortafuegos para bloquear solicitudes externas).
Según el informe inicial, en el momento del descubrimiento de la vulnerabilidad había más de 92 000 dispositivos en la red. Según un estudio posterior, esta cifra podría ser significativamente menor, alrededor de 5500 dispositivos. No obstante, es probable que hoy en día muchos dispositivos antiguos sigan conectados a la red y, por lo tanto, sean vulnerables.
Se han publicado varias pruebas de concepto (PoC) del ataque y es probable que la vulnerabilidad se siga explotando ampliamente. Hasta ahora, se han detectado al menos 146 casos en los que se ha intentado explotar la vulnerabilidad CVE-2024-3273.
Fragmento de código de ejemplo:
def execute_command(ip, command: str = "id", verbose: bool = True) -> str:
command_hex = ''.join(f'\\\\x{ord(c):02x}' for c in command)
command_final = f"echo -e {command_hex}|sh".replace(' ', '\t')
base64_cmd: str = base64.b64encode(command_final.encode()).decode()
url: str = f"{ip}/cgi-bin/nas_sharing.cgi"
params: dict = {
"user": "messagebus",
"passwd": "",
"cmd": "15",
"system": base64_cmd,
}