Tenemos la tecnología para escalar las correcciones de vulnerabilidades de código abierto: ahora es el momento de aprovecharla



Dado que el application empresarial depende más que nunca de los componentes de código abierto, un gran elemento de la seguridad de las aplicaciones modernas depende de qué tan bien la comunidad de código abierto pueda apuntalar el código susceptible. La presentación de Black Hat Usa»Escalando el investigador de seguridad para eliminar las vulnerabilidades de OSS de una vez por todasabordará algunas herramientas y estrategias importantes que pueden aumentar el progreso en este frente.

Jonathan Leitschuh, el becario inaugural de Dan Kaminsky en HUMAN Security, planea examinar cómo la comunidad de investigación de seguridad puede usar la generación automatizada de solicitudes de incorporación de cambios masivas para colaborar con los mantenedores de código abierto de una manera que pueda hacer que sea más fácil abordar cantidades drásticamente mayores de alto riesgo. defectos.

Leitschuh utilizó su año de beca para trabajar en el perfeccionamiento de las herramientas y los métodos para escalar la reparación de vulnerabilidades de seguridad de código abierto. Dark Reading through se reunió con Leitschuh para hablar sobre su próxima charla y profundizar en su trabajo. (La entrevista ha sido ligeramente editada para mayor concisión y claridad).

Dim Reading through: ¿Cuál crees que será la comida para llevar número 1 para la audiencia en tu charla de Black Hat?
zapata guía: Mi presentación examinará las vulnerabilidades de código abierto y cómo varias están más extendidas de lo que piensas. Por ejemplo, hay un proyecto propiedad de Perforce, llamado respuesta cero/zt-zipque recibió las tres correcciones de solicitud de extracción de seguridad que intenté corregir en código abierto.

Es importante destacar que el hallazgo de mayor impacto que pretendo compartir es cómo es posible corregir las vulnerabilidades de seguridad comunes y generalizadas a escala. Tenemos la tecnología. Todo lo que tenemos que hacer es aprovecharlo.

Mi objetivo es demostrar que solucionar estas vulnerabilidades no es un problema interactivo. Podemos resolverlo con matemáticas, ciencia, tecnología y seguridad. Debe ser accesible, adaptable y de mente abierta si desea que se acepten las soluciones propuestas.

No es que la gente esté dormida al volante cuando se trata de vulnerabilidades. A menudo simplemente no son conscientes de ciertos problemas, y para complicar las cosas, la Web es insegura por defecto.

Lectura oscura: Cuando hablamos por primera vez a principios de año, estabas empezando a mojarte los pies en la confraternidad y planeando tu año. ¿Puede ofrecerme una actualización sobre el progreso que realizó al utilizar CodeQL, OpenRewrite y otras herramientas para escalar la mitigación de vulnerabilidades de código abierto?
zapata guía: Terminé teniendo que volver a implementar funciones, incluido el análisis de Flujo de datos y Flujo de management, que faltaban o estaban parcialmente implementadas en OpenRewrite para admitir las vulnerabilidades que pretendía solucionar. La función Manage Move fue particularmente complicada, pero fue posible gracias a una excelente colaboración con mi pasante, Shyam Mehta. Había tomado algunas clases en la universidad que yo no había tomado, en individual, una sobre compiladores que fue particularmente útil en nuestro trabajo.

Generamos más de 400 solicitudes de extracción para corregir nuevas instancias de vulnerabilidades antiguas de mi investigación anterior y generamos más de 170 solicitudes de extracción para corregir nuevas vulnerabilidades que no habrían sido posibles sin OpenRewrite.

Lectura Oscura: ¿Te encontraste con alguna sorpresa?
zapata guía: Los comentarios de los mantenedores han sido, en common, positivos, pero siempre es interesante ver cuán cuidadoso debe ser con los mantenedores de OSS. Es muy importante asegurarse de que la solución automática que está realizando se parezca al código circundante. Uno de los mayores rechazos de los mantenedores que he recibido es sobre no incluir pruebas unitarias con las solicitudes de incorporación de cambios. Desafortunadamente, su base de código suele ser demasiado compleja para generar automáticamente una prueba unitaria además de la corrección.

Lectura oscura: ¿Cuál fue el hallazgo/técnica/aplicación de herramientas más impactante que descubrió en el transcurso del año?
zapata guía: Para empezar, tuve que empezar de cero y realizar un análisis de datos. Usar CodeQL fue clave, ya que necesitaba traducir mi conocimiento no solo entre diferentes lenguajes de programación, sino también de un lenguaje de consulta a uno de procedimiento.

Shyam fue fundamental para asegurarme de que estaba creando correctamente esta nueva función, que necesitábamos para la vulnerabilidad de seguridad final: Zip Slip, que consiste en descomprimir un archivo zip de tal manera que se puede sobrescribir arbitrariamente el contenido del archivo, lo que podría permitir la ejecución remota de código. .

Como nota, Snyk ya había trabajado un poco en esto, pero se descubrió que algunas de las mitigaciones que su investigador trabajó con los mantenedores no habían sido 100% correctas.

Lectura oscura: ¿Tienes un buen ejemplo de tus técnicas en acción?
zapata guía: A medida que me di cuenta de más investigaciones existentes, supe que había más casos de vulnerabilidades de seguridad esperando ser encontrados.

A partir de una consulta de CodeQL, el equipo del laboratorio de seguridad de GitHub me proporcionó una lista de 900 repositorios potencialmente vulnerables a Zip Slip. De los 900, hemos realizado 86 solicitudes de extracción de corrección de Zip Slip hasta la fecha, lo que significa 86 vulnerabilidades de seguridad críticas que ahora tienen posibles soluciones.

Lectura oscura: ¿Hay algún cabo suelto que espera que la comunidad pueda aportar y trabajar?
zapata guía: Todavía hay una brecha significativa en la que necesitamos la ayuda de la comunidad, especialmente en torno a la brecha entre los 900 repositorios y las 86 correcciones.

La lista de proyectos incluía proyectos archivados y otros proyectos sin mantenimiento, lo que significa que es posible que las vulnerabilidades no se resuelvan pronto, pero al menos ahora son visibles, junto con posibles soluciones.

Hay una gran cantidad de vulnerabilidades de código abierto que esperan ser reparadas con técnicas más avanzadas.

Lectura oscura: En términos prácticos, ¿qué cree que se necesitará para que los profesionales pongan en práctica sus aprendizajes?
zapata guía: Idealmente, el primer paso sería aprender CodeQL para que puedan expresar búsquedas de vulnerabilidades. Luego aprender a usar algo como OpenRewrite para generar correcciones. Luego, las mejores prácticas en torno a la presentación masiva de relaciones públicas.

También sería beneficioso para los profesionales tener al menos una comprensión básica del idioma que se united states of america en un proyecto en specific, ya que esto les permite comprender mejor las vulnerabilidades y los riesgos involucrados.

La curiosidad también es un componente esencial para que puedan explorar y profundizar en la vulnerabilidad. Por ejemplo, un profesional podría ejecutar una búsqueda superficial con GitHub Code Lookup, compilar ejemplos y luego escribir varias pruebas unitarias para evaluar cómo puede abordar la vulnerabilidad de frente.

Lectura oscura: ¿Cómo han cambiado sus puntos de vista a lo largo del año sobre cómo cree que deberíamos trabajar para resolver los mayores problemas de seguridad de la cadena de suministro de software en la actualidad?
zapata guía: La cadena de suministro de seguridad del program es un poco diferente ya que mi trabajo trata sobre las vulnerabilidades reales del proyecto. Sin embargo, hay mucho valor en las inmersiones profundas para las vulnerabilidades de seguridad, pero me ha quedado muy claro que hay muchas vulnerabilidades de seguridad en la superficie.

Sabemos que estas vulnerabilidades existen. Pones los escáneres en manos de un mantenedor, ven mucho ruido. Tienen que filtrar lo que es bueno y lo que es malo. Con una solicitud de extracción, incluso si no la soluciona, con suerte, fortalecerá su software package.

Sabía esto antes de entrar, pero me quedó muy claro lo exigentes que pueden ser los mantenedores. Hay una reafirmación de que debe obtener el código y el formato correctos no puede escatimar en mensajes y, en basic, reaccionar en consecuencia cuando ve reacciones de los mantenedores.

La gente envuelve su moi en su program, de lo que admito que puedo ser culpable. Los estás desafiando de cierta manera, incluso actuando como una amenaza. Como ejemplo, no solo escribió esto mal, lo escribió de una manera que es una verdadera vulnerabilidad de seguridad. Es más grande que un bicho. Es importante tener un sano respeto por el aspecto humano del application de código abierto.

Lectura oscura: ¿Por qué cree que es importante que los profesionales e investigadores de seguridad traigan más respeto a la mesa para los mantenedores de proyectos OSS? ¿Cómo puede mejorar la ciberseguridad como resultado?
zapata guía: Ciertamente entiendo la difícil situación de un mantenedor de código abierto. Es duro y exigente, y la mayoría ofrece su tiempo como voluntario. Son una importante línea de defensa contra los actores maliciosos y tienen que manejar una amplia gama de proyectos de código abierto.

Debe ser consciente de que los mantenedores y propietarios de los proyectos están haciendo esto en su tiempo libre, por lo que es importante colaborar activamente con ellos, en lugar de esperar que siempre acepten los cambios sugeridos desde el principio.

Hacemos nuestro mejor trabajo en ciberseguridad cuando trabajamos en colaboración. Los mantenedores son parte del proceso y deben ser identificados y respetados como tales.

Lectura oscura: ¿Qué sigue para usted y su investigación al salir de la beca?
zapata guía: No estoy del todo seguro todavía. Me encantaría ver esta investigación llevada al siguiente nivel. Hay ciertas vulnerabilidades, como la inyección de SQL, que se pueden descubrir de forma determinista con el flujo de datos y el seguimiento de corrupción (porque CodeQL ya lo hace).

Lo complicado es convertir una detección en una solución. Los desarrolladores de software package escriben código de muchas maneras diferentes, tratar de escribir arreglos para todas las diferentes formas en que los desarrolladores pueden escribir código es una tarea difícil.

Leitschuh está copresentando con Patrick Way de Moderne (uno de los mantenedores de código abierto de OpenRewrite) y Shyam Mehta, un ingeniero de software program que estudia en la Universidad de Pensilvania. Way le enseñó a Leitschuh «OpenRewrite desde cero», y Mehta «ha sido elementary en el transcurso de la beca», dice Leitschuh.

«Cada vez que necesito resolver un problema y puedo avanzar un poco más lento, o necesito pensar más en algo mientras lo construyo, programo en pareja con [Mehta], donde él escribe el código y yo doy instrucciones. También ayudó realizando un análisis de flujo de handle, creó la interfaz de usuario para dos grandes gráficos de ejemplo de flujo de control utilizados en la charla y con la depuración», dice Leitschuh.



Enlace a la noticia first