El error de codificación del novato antes del hack de Gab provino del CTO del sitio

El error de codificación del novato antes del hack de Gab provino del CTO del sitio

Gab.com

Durante el fin de semana, se supo que un pirata informático violó el sitio web de redes sociales de extrema derecha Gab y descargó 70 gigabytes de datos al explotar una falla de seguridad común conocida como inyección SQL. Una revisión rápida del código fuente abierto de Gab muestra que la vulnerabilidad crítica, o al menos una muy similar, fue introducida por el director de tecnología de la empresa.

El cambio, que en el lenguaje del desarrollo de software se conoce como “git commit”, se realizó en algún momento de febrero a partir de la cuenta de Fosco Marotto, un ex ingeniero de software de Facebook que en noviembre se convirtió en el director de tecnología de Gab. El lunes, Gab eliminó el git commit desde su sitio web. A continuación se muestra una imagen que muestra el cambio de software de febrero, como se muestra

desde un sitio que proporciona instantáneas de confirmación guardadas.

La confirmación muestra a un desarrollador de software que usa el nombre Fosco Marotto y presenta precisamente el tipo de error de novato que podría conducir al tipo de infracción reportada este fin de semana. Específicamente, la línea 23 elimina el código de “rechazar” y “filtrar”, que son funciones de API que implementan una lenguaje de programación que protege contra ataques de inyección SQL.

Desarrolladores: desinfectar la entrada del usuario

Este lenguaje permite a los programadores redactar una consulta SQL de una manera segura que “desinfecta” las entradas que los visit antes del sitio web ingresan en los cuadros de búsqueda y otros campos web para garantizar que cualquier comando malicioso se elimine antes de que el texto se pase a los servidores backend. En su lugar, el desarrollador agregó una llamada a la función Rails que contiene el método “find_by_sql”, que acepta entradas no desinfectadas directamente en una cadena de consulta. Rails es un conjunto de herramientas de desarrollo de sitios web ampliamente utilizado.

“Lamentablemente, la documentación de Rails no le advierte sobre esto trampa, pero si sabe algo sobre el uso de bases de datos SQL en aplicaciones web, habrá oído hablar de la inyección SQL, y no es difícil encontrar advertencias de que el método find_by_sql es no es seguro”, Escribió Dmitry Borodaenko, un ex ingeniero de producción de Facebook que me llamó la atención sobre el compromiso en un correo electrónico. “No está 100% confirmado que esta sea la vulnerabilidad que se usó en la violación de datos de Gab, pero definitivamente podría haber sido así, y este cambio de código se revierte en el compromiso más reciente que estaba presente en su repositorio de GitLab antes de que lo desconectaran “.

Irónicamente, Fosco en 2012 advirtió a sus compañeros programadores que utilizar consultas parametrizadas para evitar vulnerabilidades de inyección de SQL. Marotto no respondió a un correo electrónico en busca de comentarios para esta publicación. Los intentos de contactar a Gab directamente no tuvieron éxito.

Historia revisionista

Además de que la confirmación genera preguntas sobre el proceso de Gab para desarrollar un código seguro, el sitio de redes sociales también enfrenta críticas por eliminar las confirmaciones de su sitio web. Los críticos dicen que la medida viola los términos del Licencia Pública General Affero, que gobierna a Gab reutilización de mastodonte, un paquete de software de código abierto para alojar plataformas de redes sociales.

Los críticos dicen la eliminación viola los términos que requieren que el código fuente bifurcado se vincule directamente desde el sitio. Los requisitos están destinados a proporcionar transparencia y permitir que otros desarrolladores de código abierto se beneficien del trabajo de sus pares en Gab.

Gab había proporcionado durante mucho tiempo confirmaciones en https://code.gab.com/. Luego, el lunes, el sitio eliminó repentinamente todas las confirmaciones, incluidas las que crearon y luego corrigieron la vulnerabilidad crítica de inyección de SQL. En su lugar, Gab proporcionó el código fuente en forma de archivo Zip que estaba protegido por la contraseña “JesusChristIsKingTrumpWonTheElection” (menos las comillas).

Los representantes del proyecto Mastodon no respondieron de inmediato a un correo electrónico en el que se les preguntaba si compartían las preocupaciones de los críticos.

Además de las preguntas sobre codificación segura y cumplimiento de licencias, los compromisos de Git de Gab también parecen mostrar a los desarrolladores de la empresa que luchan por arreglar su código vulnerable. La siguiente imagen muestra a alguien que usa el nombre de usuario “desarrollador” tratando sin éxito de corregir completamente el código que contiene la vulnerabilidad de inyección SQL.

Los participantes del hilo responden señalando con sarcasmo la dificultad que parecía tener el desarrollador.

La brecha de seguridad de Gab y el manejo detrás de escena del código antes y después del incidente brindan un caso de estudio para los desarrolladores sobre cómo no para mantener la seguridad y la transparencia del código de un sitio web. La lección es aún más importante dado que la presentación utilizó el relato del director de tecnología de Gab, quien entre todas las personas debería haberlo sabido mejor.

Leave a Reply

Your email address will not be published. Required fields are marked *