Figura 1: Usar Deep Reasoning en GitHub para buscar
( y parchear ) Bugs en proyectos Open Source
Una de ellas fue
LABE (LDAP Address Book Editor) un aplicación web para tener una libreta de direcciones basada en un árbol
LDAP. Por supuesto, vulnerable a las técnicas de
LDAP Injection & Blind LDAP Injection.
Ayer, después de estar revisando un nuevo paper de cómo utilizar LLMs para hacer ataques de red - del que os hablaré muy prontito - me vino el pensamiento de sería mucho más fácil y más seguro si los repositorios de código fuente tuvieran ya metadatos de seguridad y bugs para todos los proyectos que hospedan analizados con modelos de Deep Reasoning.
Repositorios que te alertan de los bugs
Es decir, tú vas a un proyecto
OpenSource en
GitHub u otros, y el repositorio ha revisado ya todo el código y muestra a los usuarios que se los van a descargar si tiene vulnerabilidades conocidas o no, para que no te lo descargues o para que le llegue un aviso al mantenedor de que ese código debe ser actualizado o se marcará como inseguro. Y que le de con
GenAI opciones de parchear el código automáticamente, como hace la plataforma
Plexicus, que está empujando
José Palanco.
Figura 3: Plexicus parchea con GenAI los bugs
Ahora mismo, los repositorios tienen secciones de "
issues" donde se pueden reportar bugs, fallos, warnings, etcétera, pero todos hechos por "
humanos" por ahora, y tal vez deberían estar ya aprovechando el mundo de los
LLMs para mejorar la seguridad de los proyectos
OpenSource de "
long-tail" de manera masiva. Yo he ido a probar con el repositorio de
LABE y le he pasado el código a
Perplexity Pro con Deep Research, y le he pedido que busque
bugs en uno de los ficheros del proyecto, y me diga cómo parchearlos.
Figura 4: Bug de LDAP Injection alertada en LABE
El primero de todos los bugs que reporta es el que ya conocía yo de LDAP Injection, pero el proyecto sigue están disponible para que más usuarios se lo descarguen sin ningún warning, y la lista de bugs es más larga.
Figura 5: LABE tiene bug de XSS persistente Como podéis ver en la imagen anterior, tiene un XSS persistente, pero a día de hoy cuenta también con funciones obsoletas, y acceso inseguro a variables globales como $_GET que además está obsoleta. Normal, este código tiene muchos años.
Figura 6: Más debilidades en el código de LABE
No se trata de "demonizar" LABE, sino de ver lo bien que lo hacen los modelos de Deep Reasoning para buscar debilidades y fortificaciones a un código Open Source en un repositorio, y que si lo hace el propio repositorio una vez, nos ahorramos hacerlo todos una y otra vez para ver qué nos estamos instalando.
Figura 7: CSRF y fallos de inicialización
No le he pasado todo el proyecto, sólo un fichero que ya tenía controlado con un
LDAP Injection, pero como podéis ver en las imágenes ha salido también
XSS, CSRF que son Client-Side Attacks, errores no controlados, variables sin inicializar, uso de funciones deprecadas, etcétera, lo que sería información muy valiosa que podría venir en los repositorios de código como GitHub y los gestores de paquetes.
También nos aparece un bug en la "
cadena de suministro", ya que en el año
2024 se reportó un
bug con severidad 7.3 en el framework de smarty que permite inyección de código, lo que demuestra que hay que tener un control constante de tus librerías para evitar estos peligros.
Análisis con DeepSeek Deep Think R1
He querido probar con un repo de GitHub que también hace uso de búsquedas en árboles LDAP y que en este caso está escrito en C++, para ver cómo hace el análisis, y si GitHub podría hacer este análisis con su GitHub Copilot y dejar la info en forma de Warnings a los que se descargan el código.
Entiendo que poner issues de seguridad en los repos puede ayudar a los atacantes, pero es que los atacantes pueden hacer este trabajo, tener un 0day de un repo de long-tail y tener a GitHub entregando descargas a nuevas víctimas durante años.
Figura 10: Thinking de Deep Seek
Os ahorro las capturas del Prompt donde le paso el código del fichero que ves en la Figura 9 y le pido que busque bugs y me diga cómo corregirlos. Pero en la Figura 10 tenéis el Thinking que sí es interesante, pues en 19 segundos analiza el código y saca los resultados.
Figura 11: DeepSeek reporta un LDAP Injection
Como se puede ver, lo que reporta es un LDAP Injection en primer lugar, ya que construye los filtros LDAP de las consultas sin ninguna sanitización, y eso se puede ver en el código como os dejo a continuación.
Figura 12: Construcción de filtros LDAP inseguros
Pero es que el análisis completo es bastante bueno, ya que sigue analizando el código y todas las implicaciones y las explica muy bien. Por ejemplo, cómo acceder con la inyección a atributos sensibles como passwords que pudieran existir en el árbol LDAP.
Figura 13: Explotación de LDAP Injection con manipulación de parámetros
En la siguiente imagen vemos cómo reporta también un problema de flujo de la lógica al no escapar los caracteres de control de
LDAP que podrían cmabiar el comportamiento.
Figura 14: Escapado de caracteres de control
Y si seguimos viendo el informe, podemos ver cómo el tratamiento de errores no es seguro, permitiendo problemas en el funcionamiento del programa pero también Data Leaks de la estructura de la red al no haber controlado los errores de conexión al árbol LDAP.
Figura 15: Errores no controlados.
Para terminar aún nos da unas recomendaciones más que sensatas de seguridad añadidas que deberían ser tenidas en cuenta, como son estas dos, que yo las tendría en cuenta. Este código no lo conocía de antes, ni sabía si era vulnerable a
LDAP Injection o no, y ni mucho menos del resto, pero si miráis en los
issues, no hay nada de esto.
Figura 16: Recomendaciones finales
Al final, desde hace años ya conocemos las
capacidades de los LLMs para buscar bugs, esto es de lo primero que probamos, por supuesto. Así que si las usamos para fomentar que los proyectos
OpenSource alerten a los usuarios que se los descargan, para que los repositorios de código incentiven a los mantenedores a parchearlos, o que lo hagan de forma automática ayudaría a reducir los
bugs que acaban en los servidores de las víctimas.
¡Saludos Malignos!