CVE-2023-36049

CVE-2023-36049


Publicado: 20/2/2025

Escrito por: Nadine Rozell

Señal roja de precaución sobre una imagen de una laptop con una mano en el trackpad


¿Qué es la vulnerabilidad CVE-2023-36049?

CVE-2023-36049 es una falla en los componentes System.Net.WebRequest y System.Net.FtpWebRequest del framework .NET.

En concreto, es una vulnerabilidad de inyección de comandos FTP. Si una aplicación acepta un URI proporcionado por el usuario y lo usa para conectarse a un servidor FTP, el framework .NET no validaba correctamente la entrada en busca de caracteres especiales, específicamente retorno de carro (CR) y salto de línea (LF).

Al inyectar estos caracteres, un atacante puede agregar comandos FTP completamente nuevos a la sesión, ejecutando acciones que el desarrollador de la aplicación nunca pretendió, como eliminar archivos o subir malware.

¿Cuándo se descubrió?

La vulnerabilidad se divulgó públicamente y Microsoft la parchó el 14 de noviembre de 2023 (Patch Tuesday). Fue reportada por Piotr Bazydło de la Zero Day Initiative (ZDI) de Trend Micro.

Productos y versiones afectados

Esta vulnerabilidad es generalizada y afecta a casi todas las versiones compatibles de .NET al momento de la divulgación.

Producto

Versiones afectadas

Versiones corregidas / enlaces de parches

.NET Framework

3.5, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Paquete de seguridad de noviembre de 2023

.NET Core / .NET

.NET 6.0, 7.0, 8.0 (RC2)

.NET 6.0.25, 7.0.14, 8.0.0

Visual Studio

2022 (v17.2, 17.4, 17.6, 17.7)

Visual Studio 2022 v17.8+


Descripción técnica de CVE-2023-36049

La vulnerabilidad existe en el método FormatFtpCommand dentro de System.Net.FtpControlStream. Este método se encarga de formatear los comandos enviados a un servidor FTP.

En una transacción FTP estándar, los comandos terminan con una secuencia CRLF (\r\n). La vulnerabilidad surge porque el componente .NET afectado no verificaba si los parámetros que recibía ya contenían caracteres CRLF.

Un atacante puede explotar esto proporcionando un URI malicioso. Por ejemplo, si una app se conecta a ftp://server.com/path/file, un atacante podría ingresar:

ftp://server.com/path/file%0d%0aDELE%20important.config

Cuando la aplicación procesa esto, el %0d%0a se decodifica como un CRLF, dividiendo en la práctica el comando único en dos:

  • El comando original (inofensivo).

  • Un nuevo comando malicioso (DELE important.config) que el servidor FTP ejecuta de inmediato.

Tácticas, técnicas y procedimientos (TTPs)

Los atacantes que explotan CVE-2023-36049 generalmente siguen este patrón:

  • Reconocimiento: Identificar aplicaciones web o servicios que aceptan entradas del usuario (como una URL) y realizan operaciones FTP en el backend (por ejemplo, funciones de "importar desde URL").

  • Explotación: Enviar un URI manipulado que contenga caracteres CRLF codificados en URL (%0d%0a) seguidos de comandos FTP maliciosos.

  • Escalada de privilegios / impacto:

    • Escritura arbitraria de archivos: Inyectar comandos STOR para subir web shells o binarios maliciosos al servidor FTP.

    • Eliminación arbitraria de archivos: Inyectar comandos DELE para eliminar archivos de configuración o archivos de registro críticos.

    • Cambios de permisos: Inyectar comandos CHMOD o similares para debilitar los permisos de archivos.

Indicadores de compromiso

Detectar esta actividad requiere revisar tanto los registros de la aplicación como el tráfico de red:

  • Firmas de red: Los sistemas de detección de intrusiones (IDS) pueden marcar paquetes FTP que contienen varios comandos en una sola secuencia, o comandos inesperados como DELE o STOR provenientes de una aplicación que solo debería leer archivos (RETR).

  • Registros de la aplicación: Busca registros de error en System.Net que indiquen "Protocol Violation" o "CRLF found in header" si los intentos de inyección fallan o se detectan parcialmente.

  • Registros del servidor FTP: Secuencias inusuales de comandos provenientes de la dirección IP del servidor de tu aplicación .NET.

Pruebas de concepto y exploits conocidos

La Zero Day Initiative (ZDI) publicó análisis técnicos y exploits de prueba de concepto (PoC) poco después del parche.

Estos PoC demuestran cómo usar la clase System.Net.WebRequest para eliminar archivos en un servidor FTP objetivo sin autenticación (si la app se conecta de forma anónima) o usando las credenciales almacenadas de la app. Aunque actualmente no figura en el catálogo de vulnerabilidades explotadas conocidas (KEV) de CISA, la disponibilidad de PoC la convierte en un objetivo viable para los atacantes.

¿Cómo detectar la vulnerabilidad CVE-2023-36049?

  • Escaneo de vulnerabilidades: Usa herramientas como Tenable Nessus (Plugin ID 185887) o Microsoft Defender para identificar runtimes e instalaciones de .NET Framework que no hayan recibido la actualización de noviembre de 2023.

  • Revisión de código: Revisa tu propio código base en busca del uso de WebRequest.Create o FtpWebRequest donde el URI se construya usando entrada del usuario no validada.

Impacto y riesgo de la vulnerabilidad CVE-2023-36049

El impacto se califica de alto a crítico (CVSS 8.8 - 9.8).

Si un atacante explota esto con éxito, puede manipular archivos en el servidor FTP del backend con los mismos privilegios que la aplicación. Esto podría derivar en:

  • Ejecución remota de código (RCE): Si el atacante sube un script malicioso (por ejemplo, .aspx, .php) a un directorio accesible mediante el servidor web.

  • Pérdida de datos: Eliminación de datos empresariales críticos.

  • Interrupción del servicio: Corrupción de archivos de configuración de la aplicación.

Estrategias de mitigación y remediación

No existe una solución alternativa; aplicar el parche es obligatorio.

  • Aplicar actualizaciones de seguridad: Instala de inmediato el paquete de seguridad y calidad de Microsoft .NET Framework de noviembre de 2023. Esta actualización modifica System.Net para sanitizar correctamente la entrada y rechazar caracteres CRLF en los parámetros FTP.

  • Sanitizar la entrada: Como medida de defensa en profundidad, los desarrolladores deben validar todos los URI proporcionados por el usuario para asegurarse de que cumplan con los formatos esperados y no contengan caracteres de control como \r o \n antes de pasarlos a las clases de red de .NET.

  • Privilegio mínimo: Asegúrate de que las credenciales que usa tu aplicación para conectarse a servidores FTP tengan los permisos mínimos necesarios (por ejemplo, acceso de solo lectura si la app solo necesita descargar archivos).

Preguntas frecuentes sobre la vulnerabilidad CVE-2023-36049

Es una vulnerabilidad en .NET Framework que permite la "inyección de CRLF". Los atacantes pueden enviar una URL maliciosa a una aplicación, que sin saberlo envía comandos adicionales no autorizados (como "eliminar archivo") a un servidor FTP al que se conecta la aplicación.

Esto no es un virus que "infecte" un sistema por sí solo. Es un vector de exploit. Un atacante lo usa para engañar a un servidor vulnerable y hacer que dañe a otro servidor (el servidor FTP), o para elevar sus propios privilegios modificando archivos a los que no debería tener acceso.

Sí. Cualquier sistema que ejecute versiones desactualizadas de .NET (anteriores a noviembre de 2023) sigue siendo vulnerable. Es una falla estable basada en lógica que funcionará de forma confiable hasta que se aplique el parche.

La solución principal es instalar la actualización de Windows/Microsoft de noviembre de 2023 para .NET. Además, las organizaciones deben revisar sus aplicaciones personalizadas para asegurarse de que no pasen entradas de usuario no validadas directamente a las solicitudes de conexión FTP.

Protege lo que importa

Protege endpoints, correo electrónico y empleados con el poder de nuestro SOC 24/7. Prueba Huntress gratis y despliega en minutos para empezar a combatir las amenazas.
Probar Huntress gratis