Un grupo de investigadores de varias universidades de Alemania ha desarrollado un nuevo método de ataque MITM sobre HTTPS, que permite extraer cookies con identificadores de sesión y otros datos confidenciales, así como lograr la ejecución de código JavaScript arbitrario en el contexto de otro sitio. Este ataque se ha denominado ALPACA y puede aplicarse a servidores TLS que implementan diferentes protocolos de nivel de aplicación (HTTPS, SFTP, SMTP, IMAP, POP3), pero que utilizan certificados TLS comunes.
La esencia del ataque radica en que, al tener control sobre una puerta de enlace de red o un punto de acceso inalámbrico, el agresor puede redirigir el tráfico web a otro puerto de red y establecer una conexión con un servidor FTP o de correo que soporte cifrado TLS y utilice el mismo certificado TLS que el servidor HTTP, haciendo que el navegador del usuario considere que está conectado al servidor HTTP solicitado. Dado que el protocolo TLS es universal y no está vinculado a protocolos de nivel de aplicación, establecer una conexión cifrada para todos los servicios es idéntico, y un error en el envío de la solicitud a un servicio no previsto solo puede identificarse después de establecer la sesión cifrada durante el procesamiento de los comandos de la solicitud enviada.
Por consiguiente, si, por ejemplo, se redirige la conexión de un usuario inicialmente dirigida a HTTPS hacia un servidor de correo que utiliza el mismo certificado que el servidor HTTPS, la conexión TLS se establecerá con éxito, pero el servidor de correo no podrá procesar los comandos HTTP transmitidos y devolverá una respuesta con un código de error. Esta respuesta será tratada por el navegador como si fuera una respuesta del sitio solicitado, enviada dentro de un canal de comunicación cifrado correctamente establecido.
Se han propuesto tres variantes de ataque:
- «Upload» para la extracción de Cookies con parámetros de autenticación. Este método es aplicable si el servidor FTP cubierto por el certificado TLS permite cargar y extraer sus datos. En este tipo de ataque, el atacante puede lograr conservar partes de la solicitud HTTP del usuario, como el contenido del encabezado Cookie, por ejemplo, si el servidor FTP interpreta la solicitud como un archivo para guardar o registra completamente las solicitudes entrantes. Para que el ataque sea exitoso, el atacante debe extraer de alguna manera el contenido guardado. Este ataque es aplicable a Proftpd, Microsoft IIS, vsftpd, filezilla y serv-u.
- «Download» para la organización de scripting entre sitios (XSS). Este método implica que el atacante, a través de ciertas manipulaciones, puede insertar datos en un servicio que utiliza un compartido certificado TLS, que luego pueden ser emitidos en respuesta a una solicitud del usuario. Este ataque es aplicable a los servidores FTP mencionados anteriormente, así como a servidores IMAP y POP3 (courier, cyrus, kerio-connect y zimbra).
- «Reflection» para ejecutar JavaScript en el contexto de otro sitio. Este método se basa en devolver al cliente una parte de la solicitud que contiene el código JavaScript enviado por el atacante. Este ataque es aplicable a los servidores FTP mencionados anteriormente, a los servidores IMAP cyrus, kerio-connect y zimbra, así como al servidor SMTP sendmail.

Por ejemplo, al abrir una página controlada por el atacante, se puede iniciar una solicitud de recurso de un sitio donde el usuario tiene una cuenta activa (por ejemplo, bank.com). Durante un ataque MITM, esta solicitud, dirigida al sitio web bank.com, puede ser redirigida a un servidor de correo que utiliza un certificado TLS compartido con bank.com. Dado que el servidor de correo no cierra la sesión después del primer error, los encabezados y comandos de servicio, como «POST / HTTP/1.1» y «Host:», se tratarán como comandos desconocidos (el servidor de correo devolverá un «500 unrecognized command» para cada encabezado).
El servidor de correo no analiza las particularidades del protocolo HTTP y para él los encabezados de servicio y el bloque de datos de la solicitud POST se procesan de la misma manera, por lo que se puede indicar en el cuerpo de la solicitud POST una cadena con un comando para el servidor de correo. Por ejemplo, se puede enviar: MAIL FROM: a lo que el servidor de correo responderá con un mensaje de error 501 : malformed address: alert(1); may not follow
Esta respuesta será recibida por el navegador del usuario, que ejecutará el código JavaScript en el contexto del sitio web no originalmente abierto del atacante, sino del sitio bank.com, al que se envió la solicitud, ya que la respuesta llegó dentro de una sesión TLS correcta, cuyo certificado confirmó la autenticidad de la respuesta de bank.com.

Un escaneo de la red global mostró que aproximadamente 1.4 millones de servidores web son vulnerables a problemas generales, que permiten la posibilidad de ataques mediante la mezcla de solicitudes a través de diferentes protocolos. Se determinó la posibilidad real de llevar a cabo un ataque en 119,000 servidores web, que tenían servidores TLS auxiliares basados en otros protocolos de aplicación.
Se han preparado ejemplos de exploits para servidores FTP como pureftpd, proftpd, microsoft-ftp, vsftpd, filezilla y serv-u, servidores IMAP y POP3 como dovecot, courier, exchange, cyrus, kerio-connect y zimbra, y servidores SMTP como postfix, exim, sendmail, mailenable, mdaemon y opensmtpd. Los investigadores han estudiado la posibilidad de realizar un ataque solo en combinación con servidores FTP, SMTP, IMAP y POP3, aunque no se descarta que el problema también pueda manifestarse en otros protocolos de aplicación que utilicen TLS.

Para bloquear el ataque, se propuso utilizar la extensión ALPN (Application Layer Protocol Negotiation) para negociar la sesión TLS teniendo en cuenta el protocolo de aplicación y la extensión SNI (Server Name Indication) para vincularla al nombre del host en caso de utilizar certificados TLS que cubran varios. de nombres de dominioEn el lado de las aplicaciones, se recomienda limitar el número de errores al procesar comandos, tras el cual se debe interrumpir la conexión. El proceso de desarrollo de medidas contra el ataque comenzó en octubre del año pasado. Se han adoptado medidas similares para protección en Nginx 1.21.0 (proxy de correo), Vsftpd 3.0.4, Courier 5.1.0, Sendmail, FileZilla, crypto/tls (Go) e Internet Explorer.
Fuente: opennet.ru
