Introducir puertas traseras ocultas en JavaScript con homoglyphs y caracteres Unicode invisibles
Los investigadores instan a los desarrolladores a proteger el código prohibiendo los caracteres no ASCII
Los investigadores de seguridad detallaron cómo se pueden ocultar las puertas traseras Javascript por caracteres Unicode invisibles o confundirse fácilmente con otros caracteres.
Como resultado, afirman, el código malicioso puede escapar a la detección incluso durante revisiones extensas de código.
Inherentemente efectivo para codificar código, «Unicode debe tenerse en cuenta al revisar código de colaboradores desconocidos o no confiables», algo que se aplica particularmente a Fuente abierta proyectos, dijo Wolfgang Ettlinger, investigador de seguridad de la empresa austriaca de ciberseguridad Certitude Consulting, en un entrada en el blog.
No deja rastro
La técnica de piratería se inspiró en un Publicación subeditada documentar los esfuerzos de un desarrollador para identificar un error de sintaxis resultante de un carácter Unicode invisible oculto en el código fuente de JavaScript.
Decididos a implementar una puerta trasera que no rastrea ninguna evidencia de su presencia, los investigadores eligieron (llamado «HANGUL FILLER») como un carácter Unicode invisible porque lo posee y por lo tanto puede aparecer en una variable de JavaScript.
El siguiente fragmento de código muestra cómo el carácter invisible podría pasar desapercibido al reemplazar el carácter en cuestión con su representación de secuencia de escape :.
Una asignación de desestructuración recupera el tiempo de espera y los parámetros de req.query y, si se pasa, se asigna a la variable invisible, explicó Ettlinger.
Asimismo, cuando se construye el arreglo, esta variable oculta pasa a formar parte del arreglo, cuyos elementos constituyentes se pasan a la función, que ejecuta debidamente los comandos del sistema operativo.
Un atacante podría ejecutar comandos arbitrarios del sistema operativo pasando el parámetro al punto final en su forma codificada en URL, dijo Ettlinger.
«Este enfoque no se puede detectar mediante el resaltado de sintaxis, porque los caracteres invisibles no se muestran en absoluto y, por lo tanto, el IDE / editor de texto no los colorea», agregó.
Ataques de homoglyph
Mientras tanto, los investigadores encontraron que ataques de homoglyph podría montarse usando Unicode ‘confuso‘- como /, -, + ,,, ⫽ y ∗ – que parecían operadores.
Ettlinger publicó un guión en el que el ‘personaje es en realidad un’CLIC ALVEOLAR‘. La línea relevante, por lo tanto, asigna la cadena » a la variable previamente indefinida.
«Entonces, la expresión en la declaración ‘si’ es siempre cierta», dijo Ettlinger.
Probabilidad real
«No hemos investigado de manera integral qué factores adicionales podrían prevenir este enfoque, por lo que no podemos hacer una declaración definitiva sobre la verdadera probabilidad de tales ataques», dijo Ettlinger. El sorbo diario.
Manténgase al día con las últimas noticias y análisis sobre técnicas de piratería
Señala que un comportamiento inesperado de los entrenadores automáticos podría informar a los desarrolladoresy que «Webstorm IDE puede al menos resaltar personajes ‘invisibles’”.
También recomienda que el uso de ciertas herramientas y la realización de revisiones periódicas del código de seguridad durante el ciclo de desarrollo pueden exponer el código de puerta trasera.
Apégate a ASCII
El investigador sugirió que los desarrolladores protejan su código contra tales ataques prohibiendo el uso de caracteres que no sean ASCII, que «son bastante raros en el código» porque los equipos de desarrollo generalmente favorecen el idioma inglés. ASCII personajes.
«La traducción a otros idiomas a menudo se realiza utilizando archivos dedicados», dijo Ettlinger. «Cuando examinamos alemán código de idioma, principalmente vemos caracteres que no son ASCII reemplazados por caracteres ASCII (por ejemplo, ä → ae, ß → ss) «.
Casualmente, investigadores de la Universidad de Cambridge documentaron recientemente un ataque similar centrado en el mecanismo bidireccional Unicode (Bidi), proponiendo un uso restringido de caracteres Unicode Bidi como atenuación.
TAMBIÉN TE PUEDE INTERESAR Los mantenedores de Apache Storm corrigen dos vulnerabilidades de autenticación previa de RCE
«Jugador orgulloso. Gurú del café. Alcoholico galardonado. Entusiasta de la cerveza. Estudiante. Aficionado a los zombis. Lector. Especialista en música. Aficionado a la comida».