Varias vulnerabilidades detectadas en la implementación del parser XML de Golang

Se han hecho públicas 3 vulnerabilidades importantes que afectan a la implementación del módulo de procesado de XML de la biblioteca estándar de Golang.

En los últimos días se han publicado tres CVE relacionados con tres vulnerabilidades encontradas en la librería estándar del lenguaje de programación de Google, Golang. Estas vulnerabilidades han sido identificadas como: CVE-2020-29509, CVE-2020-29510 y CVE-2020-29511.

Los problemas de seguridad se encuentran en el módulo de procesado del formato XML (‘encoding/xml’). Al parecer, la implementación de ‘parseo’ de XML incorporá una serie de errores que, tras aplicar las diferentes fases de procesado, pueden proporcionar un resultado inesperado, con el que un atacante podría lograr hacer creer al software que se ha proporcionado una entrada válida y con unos valores que no son realmente correctos.

Por ejemplo, una etiqueta XML de la forma <:name> vería eliminados los dos puntos durante la etapa de procesado, al igual que ocurriría en el caso de una etiqueta en la que el valor de uno de sus atributos es vacío («»). En este último caso el atributo desaparece durante la serialización.

Este tipo de problemas que se producen durante el procesado de la entrada XML, pueden llegar a producir problemas de seguridad graves en la aplicación final que utilice este módulo. Un claro ejemplo de aplicación en la que este tipo de errores pueden suponer un problema grave es en la implementación SAML (Security Assertion Markup Language).

SAML es un estándar de autenticación web, a través del cual diferentes webs pueden autenticar a un mismo usuario. Este tipo de servicios podrían verse afectados si un atacante modifica el XML asociado al inicio de sesión, ya que gracias a estos problemas de seguridad estas modificaciones podría no ser consideradas para, por ejemplo, las labores de verificación de la firma.

La verificación de la firma de estos XML trata de comprobar que dicha información ha sido emitida por una entidad conocida, por lo que se puede aceptar como válida la información recibida para el inicio de sesión del usuario. Si un atacante consigue generar una entrada XML modificada que pasa correctamente la verificación de la firma, el atacante podría, en teoría, iniciar sesión como si se tratase de otro usuario.

Por el momento no se han corregido las vulnerabilidades, aunque se ha publicado una pequeña librería (xml-roundtrip-validator) que permite realizar un chequeo adicional sobre los datos recibidos, que trata de identificar posibles ataques que aprovechen las vulnerabilidades mencionadas.

Más información:

Fuente: https://www.bleepingcomputer.com/news/security/critical-golang-xml-parser-bugs-can-cause-saml-authentication-bypass/

CVE-2020-29509: https://github.com/mattermost/xml-roundtrip-validator/blob/master/advisories/unstable-attributes.md

CVE-2020-29510: https://github.com/mattermost/xml-roundtrip-validator/blob/master/advisories/unstable-directives.md

CVE-2020-29511: https://github.com/mattermost/xml-roundtrip-validator/blob/master/advisories/unstable-elements.md

Comparte en tus redes: