¿Cómo un atacante puede enmascarar los cambios de código malicioso en una solicitud de extracción de GitHub?

6

Al ver una solicitud de extracción en GitHub (o el equivalente en cualquier otra plataforma), la interfaz web muestra una diferencia de los cambios para que los revise.

La revisión de la diferencia es obviamente vulnerable al error humano, ya que los cambios maliciosos se pueden colar (consulte mortenson / pr-sneaking ).

¿Existe alguna técnica de ofuscación que no pueda ser detectada razonablemente por un humano que realiza una revisión exhaustiva del código en la interfaz web de GitHub?

Un ejemplo es un ataque de homoglyph, que podría hacer que una serie de personajes se muestren a un humano como un valor, mientras que en realidad sea otro.

También podría haber una vulnerabilidad / error en el motor de diferencias o en la pantalla de salida que podría aprovecharse para ocultar o enmascarar código malicioso en una solicitud de extracción.

Para aclarar, no estoy preguntando sobre la capacidad de un humano para revisar con precisión los cambios en el código, estoy preguntando sobre posibles vulnerabilidades de suplantación / enmascaramiento que un atacante podría explotar para engañar a un humano para que acepte una solicitud de extracción aparentemente legítima.

    
pregunta jamieweb 05.10.2018 - 04:36
fuente

1 respuesta

2

Los errores en el proceso de generación de diferencias son poco probables. Casi todas las interfaces web para un sistema VCS en realidad llaman a la propia herramienta VCS para generar las diferencias. Más o menos, cualquier error que pueda estar allí es muy probable que se encuentre y se solucione rápidamente (está generando datos que enfrenta el usuario, por lo que cualquier error allí es de alta visibilidad).

Dado eso, sus opciones ascienden a:

  • Ataques de homoglifos, que ya has mencionado. No creo que estos sean muy probables, ya que dependen de la fuente utilizada para la representación, y tendrían que estar en literales de datos en la mayoría de los lenguajes de programación para no causar errores de sintaxis, lo que a su vez limita bastante los tipos de error que puedes introducir.
  • Modificación de archivos binarios en el repositorio. Cuando se trata de datos binarios, la mayoría de los sistemas VCS solo le dicen que el archivo ha cambiado, no cómo ha cambiado, por lo que no hay cambios para revisar en la RP, salvo la descarga y el uso del archivo modificado. Esta es una de las dos razones por las que personas sanas no usan el control de versiones para datos binarios, y la otra es que es realmente malo manejarlo de manera eficiente. Debido a que no muchas personas hacen esto, no es un vector de ataque probable.
  • Esteganografía simple. Esto se basa esencialmente en que el revisor no presta atención o no comprende el código que está revisando. Los dos enfoques obvios incluyen un pequeño cambio que introduce el error en medio de un par de secciones con muchos cambios, o aprovechando el hecho de que los cambios se muestran por línea.
respondido por el Austin Hemmelgarn 05.10.2018 - 20:33
fuente

Lea otras preguntas en las etiquetas