Esta semana en seguridad: portapapeles maliciosos, serpientes en un dominio y golf binario

Hay un poco de pánico sobre Chromium, Google Chrome, el portapapeles del sistema y, sobre todo, Google Doodles en la página Nueva pestaña. Se trata del problema de Chromium 1334203, "NewTabPageDoodleShareDialogFocusTest.All prueba falla cuando se fuerza el gesto del usuario". Verá, Chromium tiene una prueba de regresión bastante grande, y los ingenieros de Google quieren asegurarse de que Google Doodles siempre funcione. Una función de seguridad agregada a la API de manipulación del portapapeles rompió una prueba de Doodles, por lo que para arreglar el Doodle, la función de seguridad se revirtió parcialmente. ¿La característica que ahora falta? Requerir la interacción del usuario antes de que una página pueda leer o escribir en el portapapeles.

Ahora entiendes por qué hubo un poco de pánico, sí, eso suena muy mal. La lectura aleatoria de páginas de su portapapeles es completamente maliciosa y peligrosa. Y si no se requiere interacción, entonces cualquier página puede hacer eso, ¿verdad? No, no del todo. Entonces, Chrome tiene un conjunto de protecciones que indican que hay algunas cosas que una página no puede hacer si el usuario no ha interactuado con la página. Puede ver esto en Discord cuando intenta actualizar una página que contiene una videollamada. "Haga clic en cualquier parte de esta página para habilitar el video". Su objetivo es evitar los molestos videos de reproducción automática y otros comportamientos molestos de la página. Y lo más importante, *no* es la única protección contra una página que lee contenido de su portapapeles. Ver por ti mismo. Leer el portapapeles es un permiso del sitio, al igual que acceder a su cámara o micrófono.

Ahora bien, es cierto que un sitio web podría potencialmente *escribir* en el portapapeles y usar esto para tratar de ser malicioso. Por ejemplo, escribir rm -rf / en un sitio web que pretende mostrar consejos sobre la línea de comandos de Linux. Pero ese siempre ha sido el caso. Es por eso que siempre debe pegar en un editor de texto sin formato y no directamente en la consola de un sitio web. Entonces, realmente, no hay necesidad de entrar en pánico. Los desarrolladores de Chromium intentaron implementar una medida de seguridad un poco más agresiva y descubrieron que rompía algo no relacionado, por lo que la revirtieron parcialmente. El cielo no se esta cayendo.

El cielo se está cayendo

Si está ejecutando una instancia de Gitlab, no captó la actualización lanzada el día 22 y tiene habilitadas las importaciones de Github, es posible que tenga un problema. CVE-2022-2884 habilita código arbitrario al importar desde un repositorio de Github malicioso. La gracia salvadora es que solo los usuarios registrados pueden realizar esta acción, pero aún existen los peligros gemelos de una cuenta comprometida y un usuario que importa inadvertidamente un repositorio malicioso. Si no puede actualizar inmediatamente, puede deshabilitar la importación de Github para mitigar el problema.

Si está ejecutando una instancia de Bitbucket Server o Bitbucket Data Center y no ha instalado la actualización 21, es posible que tenga un problema. Múltiples puntos finales en estos productos Atlassian tienen una vulnerabilidad de inyección de comandos, y si su servidor contiene repositorios públicos, es un ataque de autorización previa. CVE-2022-36804 obtiene una sorprendente escala CVSS de 9,9.

Y si usa Foxit PDF Editor o PhantomPDF, esos dos programas han lanzado recientemente importantes actualizaciones de seguridad, solucionando varias vulnerabilidades de RCE. El elemento más notable de la actualización es actualizar el motor javascript V8, ya que la versión empaquetada anterior tenía vulnerabilidades conocidas. Tuve que implementar Foxit para un cliente, con humor, porque un lector de PDF de Adobe fallaba cuando intentaba ver un PDF en particular generado con Adobe Photoshop. Independientemente de por qué cualquiera de nosotros está ejecutando Foxit, ¡póngalo en marcha!

Serpientes en el dominio

sysmon.lnk aparece en su carpeta de inicio. Eso, uhh, probablemente no sea bueno, ¿verdad? Es un enlace a un ejecutable en un directorio sospechoso, c:users\appdataroamingPpvcbBQhctfmon.exey pasa update.py como argumento. Esta es la situación que los investigadores de Huntress han estado investigando, y la historia definitivamente se está yendo por la madriguera del conejo: ¿la madriguera de la serpiente? ctfmon.exe es en realidad el intérprete de IronPython, un tiempo de ejecución ingenioso que permite que el código de Python se comunique con .net bibliotecas Eso solo deja el script de Python. ¿Demonio? Sí. Lo llamaremos etapa 1. La etapa 2 es una cadena codificada en base64 muy grande, a la que se le asigna un nombre de variable aleatorio, se decodifica y luego exec()d. Borradores típicos.

Entonces, ¿qué hace la carga útil? Para examinar de forma segura el contenido de esta y otras variables ofuscadas, los investigadores de Huntress recurrieron a CyberChef, un ingenioso proyecto de código abierto para este tipo de ofuscación. Y adivina qué, carga algunas bibliotecas, luego ofusca otra cadena enorme. Esta vez es un ejecutable .net, etapa 3. ¿Qué hace? Hay una herramienta para eso, dnSpy.

El paso 3 decodifica otra cadena ofuscada y luego lanza una no maliciosa msbuild.exe proceso Luego lleva a cabo una maniobra de "Vacío de proceso", lanzando un proceso víctima e inyectando código extraño para que ese proceso se ejecute. Debido a que MSBuild es un programa confiable, la mayoría de las herramientas antimalware no lo molestarán. Esta inyección es la cuarta etapa, pero la diversión no ha terminado. Este código no es .Net, pero es un ensamblado ejecutable de código abierto, esencialmente un código de ingeniería inversa de Cobalt Strike. Y sí, también es un cargador, que inicia otro binario .net, etapa 5.

Y sí, también escucho ecos de Samuel L Jackson cansándose de las serpientes en el avión. El paso 5 ejecuta un script que parchea AMSI, la interfaz de escaneo antimalware, eliminando otra barrera más para un compromiso total. Y finalmente contenía otra cadena ofuscada, aunque esta ofuscación era más que una simple rutina base64. Al escribir un programa de descifrado en Python, finalmente tuvieron la etapa 6, el troyano de acceso remoto (RAT) real. Esto hace las cosas que esperaría, asegurándose de que la persistencia esté en su lugar, descargando actualizaciones y contactando a un servidor de comando y control para obtener instrucciones.

Qué viaje. Alguien realmente quería ocultar su malware. Hay algunos indicadores de un compromiso en la publicación, aunque parece que esta cadena persistente se escribió para evitar dejar IoC estáticos: solo cambie la clave de cifrado final y todo el conjunto de muñecas anidadas es diferente.

Golf binario 3

Binary Golf Grand Prix 3 ha terminado, una competencia divertida para encontrar el archivo más pequeño que bloqueará un programa de su elección. Es una excelente práctica para la búsqueda de vulnerabilidades, porque el objetivo es un simple bloqueo, no una cadena de vulnerabilidades compleja como la que solemos cubrir. El desafío del tamaño mínimo del archivo generalmente significa que el concursante descubre exactamente qué está causando el bloqueo. Hay puntos de bonificación por escribir, manipular el contador del programa, lograr la ejecución de código arbitrario y la mayor bonificación por fusionar una solución para el bloqueo descubierto. ¡Todos ganan!

Ahora que el concurso ha terminado, algunas de las entradas se publican con más por seguir. Para concluir esta semana, ¡tenemos dos entradas de este tipo que son especialmente divertidas porque son retro!

Solo dos bytes

[Pierre Kim] y [Alexandre Torres] puede estar estirando un poco las reglas, ya que están enviando su archivo a través de una conexión de red a un servicio telnetd. Con dos bytes, es una hazaña impresionante. 0xff0xf7 es la carga útil, y bloquea todos los clientes de telnetd basados ​​en el antiguo BSD telnetd de 1991. 0xff es IAC, interpretar como un comando, y 0xf7 se entiende como el comando Borrar Carácter. El problema es que el binario telnetd todavía está en la fase de negociación y autenticación de la conexión, y no se han completado todos los pasos iniciales. Debido a que el código de procesamiento de entrada se comparte entre estos estados, se elimina la referencia de un puntero que aún no se ha inicializado y kablam.

Pokémon RCE

Esta no fue una entrada formal en BGGP3, pero sigue siendo una gran historia. Nintendo tiene un legado de diseño de complementos para sus consolas que se venden brevemente en Japón y nunca ven la luz en el resto del mundo. (Mirándote, 64DD.)

Uno de esos dispositivos fue el Mobile Adapter GB, que conectaba una GameBoy Color/Advance a un teléfono móvil para conectividad de red. Pokemon Crystal tenía soporte para este dispositivo, y el intercambio funcionó enviando solicitudes HTTP al punto final de Nintendo y luego verificando las respuestas usando el protocolo POP. Esa respuesta fue una estructura de datos codificada en base64. Cambiar valores en esa estructura provocó un bloqueo, pero eso no fue lo suficientemente bueno para [Harvey Phillips]quien absolutamente quería la ejecución de código arbitrario en su emulador GBC.

Bueno, no temas, Pokemon Crystal también admitía Battle Coliseum, donde podías etiquetar a un amigo con el mismo juego y jugar juntos a través de la red móvil. ¡Otra vez, en 2001! Pokemon Crystal tiene otra peculiaridad, y ya se usa para carreras de velocidad locas. 0x15 se usa como un personaje de control en la versión japonesa del juego, y el motor de texto del juego realizará un salto de código al intentar mostrar ese personaje. No está claro cuál fue el uso original de estos caracteres de control, pero es probable que sean una solución para hacer que el juego se ejecute en el hardware muy limitado de GBC. los 0x3F el carácter de control hace un salto similar, pero accidentalmente salta a una ubicación unos pocos bytes antes del búfer del adaptador móvil.

Y así finalmente se encontró un exploit. Comience una batalla, reemplace el guardado para moverse con su código y luego use 0x3F 0x00 0x00 como el nombre del entrenador. El dispositivo remoto intenta mostrar el texto "quiero pelear", pero el código de control activa un salto a este "script móvil". Aunque esto no hizo el concurso, [Harvey] usa los 43 bytes de shellcode para escribir "3" en la pantalla. hermoso

Joel Carrasco
Joel Carrasco

Deja una respuesta

Tu dirección de correo electrónico no será publicada.