Un Fallo En El Lenguaje De Preprocesamiento CSS Less.js Hace Que El Sitio Web Pueda Filtrar Las Claves Secretas En AWS
Los investigadores de la empresa canadiense de infoseguridad Software Secured detallaron en una publicación en su blog, una vulnerabilidad en el popular lenguaje de preprocesado de CSS (Less.js) que podría ser explotada para lograr la ejecución remota de código (RCE) contra sitios web que permiten a los usuarios introducir código Less.js.
Esto puede llevar a dos resultados distintos dependiendo del contexto del procesador Less. Si el código de Less se procesa en el lado del cliente, se produce un cross-site scripting (XSS), pero si se procesa en el lado del servidor se produce un RCE.
Todas las versiones de Less que soportan la sintaxis @plugin son vulnerables. Less.js transpila a código CSS válido y se utiliza para ayudar la escritura de CSS en sitios web.
La biblioteca Less.js admite plugins que pueden incluirse directamente en el código Less desde una fuente remota utilizando la sintaxis @plugin. Los plugins se escriben en JavaScript y cuando el código Less se interpreta, cualquier plugin incluido se ejecutará.
Prueba de concepto
Los investigadores publicaron en su blog una prueba de concepto y un ejemplo de cómo puede explotarse la sintaxis del plugin en el mundo real.
Utilizando CodePen.io, un popular sitio web para crear fragmentos de código web que admite lenguajes estándar además de Less.js, realizaron su prueba de concepto (PoC) contra el sitio y fueron capaces de filtrar sus claves secretas de AWS y ejecutar comandos arbitrarios dentro de sus AWS Lambdas.
Una vez que los investigadores pudieron demostrar el fallo, la vulnerabilidad fue reportada a CodePen.io, que corrigió el fallo.
Condiciones que el entorno debe complir para poder aprovechar el fallo
Como el autor Jeremy Buis, cuenta en The Daily Swig, la vulnerabilidad requiere «ciertas condiciones» para tener éxito.
Un posible escenario vulnerable podría ser una función que acepte estilos personalizados a través de código Less de un usuario. Una vez que estamos en una configuración vulnerable, es sencillo explotar la aplicación.
Jeremy Buis indicó que, por lo que sabe, Less no ha parcheado el fallo. El comportamiento de las comillas invertidas se conoce desde hace tiempo y existe una configuración para mitigarlo en las versiones recientes. Hace más de un año que los administradores del proyecto reconocieron dicho error.
Recomendaciones para mitigar el problema
Los investigadores aconsejan a los usuarios de Less.js, que para mitigar los riesgos consideren lo siguiente: Utilizar código CSS en lugar de utilizar código Less. Si se requiere el uso de Less, se recomienda transpilar el código en la parte cliente para evitar la amenaza de ataques SSRF y RCE.
Como se indicó anteriormente y teniendo en cuenta las recomendaciones de los investigadores. Para mitigar la amenaza de XSS, los investigadores recomiendan actualizar a una versión reciente en la que la ejecución mediante comillas invertidas basada en JavaScript esté desactivada por defecto así como clonar la biblioteca Less y eliminar el soporte de la sintaxis @plugin.
Referencias:
- LESS CSS: https://lesscss.org/
- LESS Github: https://github.com/less/less.js
- Artículo original: https://www.softwaresecured.com/exploiting-less-js
Via: unaaldia.hispasec.com