Mostrando entradas con la etiqueta Open Source. Mostrar todas las entradas
Mostrando entradas con la etiqueta Open Source. Mostrar todas las entradas

sábado, julio 11, 2026

SYNAPTIC Sentinel v0.3.22: El Auditor de Seguridad en tu Visual Studio Code. Open Source. Gratuito. BYOK.

En corto. SYNAPTIC Sentinel es un auditor de seguridad que vive dentro de Visual Studio Code y revisa tu código, el que genera la IA, tus dependencias y tu configuración, sin que nada salga de tu máquina. Es software libre bajo Apache-2.0, totalmente gratuito, y queda a disposición de cualquier desarrollador: se instala desde el Marketplace, corre en local y sólo usa tus propias APIKeys de IA si quieres el triaje asistido. Si escribes código con ayuda de un asistente, vale la pena instalarlo y probarlo hoy mismo. Lo que sigue en este artículo es un recorrido por la versión 0.3.22 con datos de un proyecto real.


Ejecutas un triaje de seguridad con un modelo de IA. Te dice: “falso positivo, confianza 95%”. Cambias de proveedor, vuelves a lanzarlo, y ahora el mismo hallazgo aparece como “no concluyente, confianza 40%”. ¿A cuál le crees? Peor todavía: si nadie te avisa de que la respuesta cambió, te quedas con la última que viste y sigues adelante.

Esa es exactamente la incomodidad que ataca la versión 0.3.22 de SYNAPTIC Sentinel, la herramienta Open Source (Apache-2.0) de auditoría de seguridad para código asistido por IA que GoLab mantiene en el Marketplace de VS Code. Las capturas de este artículo salen de un workspace real, SYNAPTIC_SAAS, con datos reales sobre un scan de 44 hallazgos. No hay mockups.

El scan: 44 hallazgos y de dónde salen

Un escaneo de SYNAPTIC Sentinel arranca por la capa determinista: cinco scouts corriendo en paralelo sobre el repositorio. En este caso, OpenGrep encuentra 1 hallazgo, Gitleaks 2, Trivy 45, Checkov 0 y Vibe-Detect 0. Tras la deduplicación y las supresiones conocidas quedan 44 hallazgos para triar, que el sidebar desglosa por estado: 33 true positive, 10 inconclusive, 1 false positive.


La línea que importa en v0.3.22 es la de arriba: 

Scan diff vs previous triage: 1 new, 9 re-classified 
(0 class, 9 confidence, 0 provider), 34 unchanged.

SYNAPTIC Sentinel ya no se limita a decirte qué encontró: te dice qué cambió respecto del triaje anterior y por qué. De las 9 reclasificaciones, las 9 fueron por variación de confianza, ninguna por cambio de clase ni de proveedor. Antes, esos 9 hallazgos habrían contado como “sin cambios” pese a que su confianza se había movido. Ahora el resumen refleja lo que realmente pasó.

Cuando el veredicto cambia entre proveedores

Este es el corazón de la versión. Mira el hallazgo de @grpc/grpc-js 1.14.3, vulnerable a CVE-2026-48068. Está marcado como no concluyente, y sobre la tarjeta aparece un banner naranja: Verdict changed since last scan: inconclusive 0% a inconclusive 40%, con la razón Confidence changed significantly (Δ 0.40).


El banner salta solo cuando el veredicto actual difiere del anterior. La razón sigue una precedencia clara: primero mira si cambió el proveedor, luego la clase (TP/FP/INC), luego la confianza, con un umbral configurable que por defecto es 0.15. Es un aviso barato de calcular y difícil de ignorar. Antes, esa varianza entre proveedores era invisible: cambiabas de modelo, el número se movía por debajo y nadie te lo decía.

La memoria de la colonia y el historial Previously

Cada hallazgo guarda su trayectoria completa. La sección Previously es colapsable, y al abrirla ves todos los veredictos anteriores con su timestamp, su proveedor y su racional. Eso vive en la tabla verdict_history de colony.db, la base SQLite local que SYNAPTIC Sentinel mantiene en el directorio .sentinel/ del propio repo. Es append-only por diseño: el comando de re-triaje no borra el historial. Cambias de proveedor, vuelves una semana después, y la trayectoria completa sigue a un clic de distancia.


Esa misma memoria acelera los escaneos. Cuando un patrón se ha visto antes con evidencia sólida, Sentinel lo preclasifica sin gastar una llamada al LLM. En la captura, el hallazgo de protobufjs (CVE-2026-41242) sale marcado como true positive al 75% porque el patrón SCA:CVE-2026-41242 ya fue true positive en 3 hallazgos previos.

Y cuando varios hallazgos comparten la misma raíz, uno actúa de representante (badge GROUPED REP) y hace la llamada real; los demás son miembros (badge GROUPED) que heredan el veredicto con una rebaja de confianza del 0.9x. Así el representante queda al 75% y el miembro al 68%, con el sufijo [group SCA:protobufjs@7.5.4:CVE-2026-41242, member 2 of 2] en el racional para que la propagación sea auditable. Alta confianza en el grupo, media en cada miembro suelto: honestidad epistémica en vez de un número inflado.

Agrupar para no quemar tokens, y un proveedor por agente

La agrupación no es solo higiene visual: ahorra dinero. En esta sesión, Grouping

12 group(s) covering 24 findings; 20 solitary. 
LLM calls saved by grouping: 12.

Doce llamadas al modelo que no se hicieron porque el veredicto se propagó dentro del grupo. SYNAPTIC Sentinel además deja elegir un proveedor distinto por agente. En el agents.yaml de esta sesión:

triage=OpenAiCompatible, context=Anthropic, remediation=Anthropic. 

La idea es mezclar por coste, calidad y privacidad, con las llaves siempre bajo modelo BYOK (Bring Your Own Key), leídas del entorno y nunca escritas en el repo.


Y aquí viene el detalle que más me gusta: cuando algo falla, SYNAPTIC Sentinel lo enseña. En el terminal se ven los 404 de los agentes de contexto y remediación porque el modelo configurado (deepseek-v4-pro) no existía bajo el proveedor apuntado. En lugar de tragarse el error y devolver un veredicto vacío como si nada, la herramienta lo escupe a la vista. Un fallo de configuración se vuelve visible en vez de silencioso, que es justo lo que quieres en una herramienta de seguridad.

Remediación honesta: cuando el bump no basta

Un aviso de “actualiza la dependencia” es fácil de dar y muchas veces está mal. SYNAPTIC Sentinel  agrupa las remediaciones de SCA y, cuando la cosa no es tan simple, lo dice. En el caso de prismjs, el panel no se limita a “sube a 1.30.0”: avisa Top-level bump alone will NOT fix this (npm) y entrega el override exacto que hay que aplicar, con botón de copiar, porque una dependencia transitiva está fijando una versión vulnerable anidada.


Lo mismo con protobufjs, que arrastra 22 hallazgos vía @google-cloud/firestore: el fix es heterogéneo entre major tracks, y subir a una sola versión puede dejar otros CVE abiertos, así que hay que aplicar los máximos por track. Es el tipo de matiz que un escáner que solo lista CVEs nunca te da.


Falsos positivos que no vuelven

El taint analysis de SYNAPTIC Sentinel marca, por ejemplo, un sentinel-js-taint-sql-injection en src/api/routes/agent.ts:62: datos controlados por el usuario que fluyen a un sink SQL dentro de un string. Si tras revisarlo es un falso positivo, el quick fix Mark as false positive lo añade a fp_known en colony.db y deja de aparecer en escaneos posteriores. 

No se pierde del historial, simplemente deja de hacer ruido. Y como el patrón queda en la memoria de colonia, la próxima vez que aparezca uno igual se pre-clasifica solo, con la nota was false_positive in 3 prior findings.

Para CI/CD y con el coste a la vista

Todo esto también corre fuera del editor. El comando synaptic-sentinel diff --json devuelve la reclasificación en JSON estructurado, con la razón y los deltas exactos de cada cambio, listo para alimentar un dashboard o para filtrar con jq en un pipeline
La bandera --fail-on convierte el scan en un gate por severidad. Y al final de cada sesión tienes el coste real: en el ejemplo, el agente de triaje con DeepSeek v4-pro consumió 0,0046 USD en 8 llamadas. Sabes lo que te costó el scan antes de que llegue la factura del proveedor. Los conteos de tokens son estimaciones (chars/4, con un margen del 15-20%) y aparecen marcados como tales, sin vender una precisión que no se tiene.

Por qué esto importa

La promesa de v0.3.22 es sencilla: la confianza en un veredicto de seguridad no debería evaporarse al cambiar de proveedor ni al pasar una semana. El banner de veredicto cambiado, el historial append-only en colony.db y el desglose de reclasificaciones convierten la varianza entre modelos en algo visible y auditable, en vez de un número que se mueve a tus espaldas. Súmale la agrupación que ahorra llamadas, la remediación que admite cuándo un bump no basta y los errores mostrados sin maquillaje, y tienes una herramienta que prefiere decirte la verdad incómoda antes que un resultado bonito.


Todo bajo Apache-2.0, sin tier premium y con BYOK sobre el proveedor que elijas. La v0.3.22 se distribuye como release en GitHub con su .vsix, y el código está abierto para que lo audites tú mismo.

La mirada de Orsyon. En Orsyon lo usamos en las entregas. Cada desarrollo pasa por SYNAPTIC Sentinel antes de llegar al cliente, y el historial append-only de colony.db nos deja una evidencia auditable del triaje, no sólo del escaneo. Si un hallazgo cambia de veredicto entre una entrega y la siguiente, el banner lo pone a la vista con su razón y su fecha. Para quien trabaja bajo el doble cumplimiento chileno (Ley 21.663 de ciberseguridad y Ley 21.719 de datos personales), esa trazabilidad es parte de la evidencia de control, no un extra.

miércoles, octubre 08, 2025

CodeMender: Un Agente IA para buscar bugs y parchear código fuente

Hace unos meses os dejé el artículo titulado: "Usar Deep Reasoning en GitHub para buscar ( y parchear ) Bugs en proyectos Open Source" donde hablaba de algo que parecía bastante evidente, que es utilizar, los modelos de Deep Reasoning para lo que dice el título, buscar las vulnerabilidades, avisar de ellas en los proyectos Open Source, para que quién se vaya a descargar el software sepa qué bugs tiene, que el mantenedor del código lo pueda parchear, o que directamente haya una propuesta de parche hecha directamente por un modelo de GenAI.
Es decir, que cuando se visita un proyecto OpenSource en GitHub u otra plataforma similiar, 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 finalmente que haga con GenAI propuestas de código de parchear el proyecto automáticamente, como hace la plataforma Plexicus, que está empujando José Palanco, y que es una de las primeras soluciones profesionales que hace esto.

Figura 3: Plexicus parchea con GenAI los bugs

Ahora Google ha presentado CodeMender, que utilizando esta misma idea lo ha estado usando para analizar y parchear código de proyectos OpenSorce con un Agente AI. Y si veis el proceso en el vídeo siguiente, el modelo es muy, muy, muy similar a lo que tenéis en el vídeo anterior.
Para que veáis cómo funciona CodeMender, en la web se presentan un par de ejemplos. Este primero escanea el código razonando en busca de vulnerabilidades, de igual forma que yo os contaba en el artículo donde usaba DeepSeek. En este caso, lógicamente, utilizando Gemini.
En este caso, se pregunta qué sucede si no se sacan los elementos de la pila, lo que podría generar un error, como razona CodeMender en la siguiente fase.
A partir de este momento hace un análisis detallado de cómo se gestiona la pila en este código, y comprueba que se puede producir una situación donde los elementos no salen de ella, tal y como se ve en la imagen siguiente.
Una vez que ha descubierto que ya hay una situación errónea no controlada en el código, comienza la fase de encontrar un parche correcto y proponerlo al código.
En este caso, el proceso de DeepReasoning de Google Gemini ha estado permitiendo que CodeMender funcione en modo Agentic AI evaluando todo el código para ver si descubre algún bug, pero también puede funcionar directamente para parchear un código que se sabe ya que tiene el fallo, como se ve en este vídeo.
Según el blog, durante los últimos 6 meses durante la construcción de CodeMender, han estado analizando proyectos OpenSource y el agente ha hecho 72 Security Fixes para proyectos populares, algunos de hasta 4.5 Millones de líneas de código.
Por supuesto, como decía yo en el artículo, esta es una herramienta perfecta también para los que tienen el mundo del Bug Bounty: De Profesión "Cazarecompensas", que pueden encontrarse con premios descubiertos por estos modelos que te hagan la vida más sencilla.

Si te interesa la IA y la Ciberseguridad, tienes en este enlace todos los postspapers y charlas que he escrito, citado o impartido sobre este tema: +300 referencias a papers, posts y talks de Hacking & Security con Inteligencia Artificial.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


martes, septiembre 09, 2025

Xibo y la exposición "verbose" de la API de gestión

Xibo es una de las plataformas de Digital Signage más conocidas y utilizadas en entornos donde la gestión centralizada de contenidos resulta crítica. Desde un único panel de control, es posible definir qué se proyecta en pantallas distribuidas por aeropuertos, centros comerciales o estaciones de transporte. El sistema ofrece una solución flexible, con versiones comerciales y también en modalidad Open Source, lo que ha favorecido su adopción en múltiples organizaciones a nivel internacional.

Figura 1: Xibo y la exposición "verbose" de la API de gestión

Desde la perspectiva de la seguridad, hay un aspecto especialmente relevante: la exposición pública de la documentación de la API del sistema, habitualmente accesible en el archivo swagger.json. Este recurso, diseñado para facilitar la integración y el trabajo de desarrolladores, describe de manera exhaustiva todos los endpoints disponibles, los parámetros que aceptan y las operaciones que permiten ejecutar.

Figura 2: Fichero swagger.json con la exposición de la API.

Lo que en un entorno de desarrollo representa una ventaja, en producción se convierte en un riesgo. Publicar la especificación de la API equivale a entregar un mapa completo de la superficie de ataque, reduciendo el esfuerzo de reconocimiento de cualquier adversario. No se trata de una simple fuga de información, sino de un manual detallado sobre cómo interactuar con el sistema, incluyendo operaciones críticas como importación y exportación de datos o conectores remotos.

Fase de descubrimiento

El primer paso para evaluar la magnitud del problema consiste en identificar instancias de Xibo expuestas en Internet haciendo un poco de Hacking con Buscadores. Para ello, basta con aprovechar que la página de inicio del CMS utiliza un título característico: “Xibo Digital Signage

de Enrique Rando, publicado en 0xWord.

Mediante búsquedas específicas en Google (Google Dorks) es posible localizar rápidamente servidores que ejecutan Xibo. Por ejemplo: 

site:org intitle:"Xibo Digital Signage - Please Login"

Figura 4: Resultados de búsquedas con las URL de
sistemas Xibo accesibles desde Internet.

Estos operadores revelan instalaciones accesibles desde Internet que, en muchos casos, conservan configuraciones por defecto. A partir de aquí, un atacante podría comprobar si estas instancias publican también su documentación de API (/swagger.json, /swagger-ui/, /openapi.json). Esta fase de descubrimiento demuestra que no se trata de un caso aislado, sino de una práctica extendida que multiplica la superficie de exposición de un sistema en producción.

Descubrimiento de la documentación de la API

Una vez localizadas instancias de Xibo accesibles desde Internet, el siguiente paso en la auditoría consiste en comprobar si exponen públicamente la especificación de su API. Esta tarea resulta sencilla porque muchas instalaciones mantienen la documentación en rutas predecibles. Basta con probar accesos directos a:

https://[dominio]/swagger.json

o bien visitar:

https://[dominio]/swagger-ui/
https://[dominio]/openapi.json

para descubrir si el servidor devuelve la definición completa de la API en formato JSON o incluso una interfaz interactiva de Swagger. Desde el punto de vista de un auditor, o de un atacante, este paso representa un salto importante: se pasa de conocer únicamente que existe un CMS Xibo en la red, a disponer de un inventario detallado de todos los endpoints disponibles, sus métodos, parámetros y tipos de datos. En otras palabras, el sistema ofrece voluntariamente un mapa completo de su superficie de ataque.

Riesgos y escenarios de explotación

La exposición del fichero swagger.json en un entorno de producción abre la puerta a escenarios de explotación que, de otra manera, requerirían un esfuerzo mayor de reconocimiento. A continuación se presentan algunos de los riesgos más relevantes detectados en la especificación de Xibo:
  • Exfiltración de información
Algunos endpoints permiten descargar conjuntos de datos completos en formato CSV como el siguiente ejemplo encontrado.
    • GET /api/dataset/export/csv/{dataSetId}

En un escenario sin autenticación estricta o con permisos mal configurados, un atacante podría utilizar esta función para extraer información sensible de manera directa y silenciosa.
  • Manipulación mediante cargas de ficheros
La API incorpora rutas de importación que aceptan ficheros de carga en formato CSV, como el siguiente localizado:
    • POST /api/dataset/import/{dataSetId}
Si las validaciones son insuficientes, existe la posibilidad de introducir contenido malicioso, abusar del tamaño de los ficheros para provocar denegaciones de servicio o manipular la lógica de importación de datos para corromper el sistema.
  • Server-Side Request Forgery (SSRF)
Algunos endpoints permiten enviar parámetros como uri, method, customHeaders o postData. En un backend sin controles, estos campos pueden usarse para forzar al servidor a realizar peticiones hacia recursos internos o servicios protegidos, generando un escenario de SSRF con implicaciones graves, como el acceso a metadatos de nube o la enumeración de sistemas internos.

También es posible usarlo para actividades de Reconocimiento Avanzado, ya que incluso rutas aparentemente inocuas como /api/clock proporcionan valor para un atacante, ya que permiten confirmar disponibilidad, medir latencia y establecer un punto de control para sincronizar ataques automatizados.

Reflexión final

El caso de la exposición del fichero swagger.json en Xibo constituye un ejemplo representativo de un problema recurrente en el ámbito de la seguridad: la confusión entre facilitar la integración y garantizar la protección en entornos de producción. La documentación automática de la API resulta una herramienta de gran utilidad durante el desarrollo, pero en un despliegue abierto al público se convierte en un vector de riesgo que simplifica de forma notable las tareas de reconocimiento y ataque.

La cuestión no radica en la validez de la tecnología empleada, sino en las decisiones de configuración y despliegue adoptadas. La frontera entre la usabilidad y la exposición es sumamente estrecha, y basta una omisión, como la publicación inadvertida de un fichero de especificación, para que dicha frontera se diluya. En este sentido, el caso de Xibo debe entenderse como una llamada de atención: la seguridad no debe ser un aspecto accesorio, sino un criterio rector en cada fase del ciclo de vida de un sistema.

Saludos,

Autor: Amador Aparicio,  escritor de los libros “Raspberry Pi para Hackers & Makers: PoCs & Hacks Just for Fun!” y "Hacking Web Technologies 2ª Edición"  y Miembro del Grupo de Investigación en Ingeniería de la Privacidad del Departamento de Informática de la Universidad de Valladolid.


viernes, agosto 08, 2025

El “Open” ha vuelto a OpenAI con sus nuevos modelos Open Source

OpenAI nació en 2015 con un mensaje muy potente: “hacer que la inteligencia artificial avanzada beneficie a toda la humanidad” y, sobre todo, que su investigación sería abierta. Aquel manifiesto llevó a muchos especialistas a colaborar con ellos y también provocó millones de dólares en donaciones. No era para menos, la idea de un laboratorio puntero en IA que compartiría cada avance era revolucionario. Pero claro, la realidad fue otra: GPT-2 llegó con pesos recortados, GPT-3 estaba detrás de una API de pago y de GPT-4 ya no sabemos nada desde el punto de vista técnico.

Figura 1: El “Open” ha vuelto a OpenAI con
sus nuevos modelos Open Source


Durante años la palabra open era sólo parte de su nombre, nada más. Pero por fin, el 6 de agosto de 2025 ocurrió algo que ya pensábamos que no pasaría: OpenAI liberó GPT-OSS-120b y GPT-OSS-20b, dos modelos de lenguaje completos, con pesos descargables y licencia Apache 2.0. No es la transparencia total prometida en 2015 (el conjunto de entrenamiento sigue bajo secreto), pero sí el paso más grande hacia el open desde su creación. 
Y, por la calidad de estos modelos, tal vez sea el más importante. Pero vamos a verlos en profundidad porque OpenAI ha publicado detalles muy interesantes de su funcionamiento interno. Y estos modelos son perfectos como base para aplicar lo que puedes aprender con nuestro libro de “Hacking & Pentesting con IA”.

Dos modelos muy potentes

La cifra de 120.000 millones de parámetros no está nada mal pero ya tenemos otros ejemplos que también lo ofrecen. Lo llamativo de GPT-OSS-120b es que, utiliza un diseño tipo Mixture-of-Experts (MoE), que solo mantiene 5,1 mil millones activos durante la inferencia. Cada capa contiene 128 bloques especializados; un router interno que elige cuatro por token, haciendo que el consumo de memoria y computación se reduzca a niveles de un modelo denso mediano, pero guardando una base grande conocimiento.

Figura 3: MoE de DeepSeek

GPT-OSS-20b por otro lado, aplica la técnica a otra escala: 21 mil M totales, 3,6 mil M activos y una ventana de contexto de 128.000 tokens que le permite por ejemplo cargar novelas, manuales técnicos completos o repositorios de código enteros sin mucho esfuerzo. Y todo este potencial cabe en una RTX 4080 con 16 GB de VRAM y responde en segundos (luego lo veremos).

La arquitectura en detalle

Los dos modelos comparten treinta y seis (120b) y veinticuatro (20b) capas Transformer con atención alterna densa/dispersa y codificación posicional rotatoria (RoPE) extendida. El tokenizador o200k_harmony (que viene ya de los modelos propietarios de OpenAI) minimiza la longitud media de token y mantiene la estadística estable incluso cuando el contexto sube a 128 k


Para ahorrar aún más memoria, los pesos están almacenados en una mezcla de BF16, INT8 y un formato propietario de 4 bits (MXFP4). El resultado final es que GPT-OSS-120b puede ejecutarse por completo en una sola GPU H100 (eso sí, prepara algunos ) de 80 GB, algo que hasta ahora era impensable para un modelo de este tamaño.

Pensamiento a demanda

Una innovación que tenemos que destacar es el selector de profundidad de razonamiento. En el mensaje de sistema se indica Low, Medium o High. Con Low el modelo responde de forma directa, priorizando velocidad. Con Medium utiliza una parte de la cadena de pensamiento. Y con High realiza un proceso completo que puede incluir llamadas a un navegador o a un intérprete de Python para verificar datos en tiempo real. Ese digamos switch permite a GPT-OSS desde redactar un tuit en dos segundos o planificar un experimento científico paso a paso, todo según la necesidad del momento.

El repositorio openai/gpt-oss en GitHub trae scripts, plantillas de chat y ejemplos de integración con vLLM, LangChain y una CLI que emula ChatGPT en la terminal. Los checkpoints están en Hugging Face (incluidas versiones cuantizadas a 4 y 5 bits) y pueden cargarse con dos líneas de transformers. 
Y todavía más fácil, sin necesidad de programar, podemos usar Ollama y LM Studio que los podemos usar en minutos desde un chat. En un servidor con una única H100, GPT-OSS-120b genera entre doce y dieciocho tokens por segundo en precisión mixta. Y GPT-OSS-20b, en una RTX 4090, ronda los veinte tokens por segundo, algo más que decente para poder interactuar con los modelos.

Un paso adelante en potencia y transparencia open source

Aunque publicar los pesos no es lo mismo que publicar el dataset ni los parámetros de entrenamiento (OpenAI sigue guardando esos secretos), es una gran aportación al mundo. La disponibilidad de modelos de razonamiento avanzado bajo licencia realmente libre cambia las reglas de juego. Ahora podemos auditar sesgos examinando directamente las matrices, hacer inferencia y fine-tunning sin pagar por token, las startups pueden ofrecer productos basados en GPT-OSS sin temor a litigios de patentes, etc. 

Todo un avance que esperemos no sea el único y sirva de motivación para otras empresas para que empiecen a publicar modelos similares. Así que deja de jugar con tu gráfica y descarga ya el modelo de 20b ;)


Happy Hacking Hackers!!! 

Autor: Fran Ramírez, es investigador de seguridad y miembro del equipo de Ideas Locas en CDO en Telefónica, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps", también de "Machine Learning aplicado a la Ciberseguridad” además del blog CyberHades. Puedes contactar con Fran Ramirez en MyPublicInbox.

 Contactar con Fran Ramírez en MyPublicInbox

 Hackers!!

viernes, mayo 16, 2025

Usar Deep Reasoning en GitHub para buscar ( y parchear ) Bugs en proyectos Open Source

Fue allá por el año 2007 comencé a trabajar en las técnicas de LDAP Injection & Blind LDAP Injection que a la postre sería mi primera charla internacional en BlackHat Europe 2008, donde presenté el paper de "LDAP Injection & Blind LDAP Injection in Web Applications" que puedes ver online. En aquel entonces, busqué aplicaciones vulnerables que pudiera usar de ejemplo, y para ello tire de proyectos Open Source, haciendo dorkings y mucho Hacking con Buscadores para encontrar las víctimas propicias.

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 dé con GenAI opciones de parchear el código automáticamente, como hace la plataforma Plexicus, que está empujando José Palanco.

Figura 4: 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 5: 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 6: 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 7: 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 8: 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 11: 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 12: 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 13: 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 14: 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 15: 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 16: 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 17: 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.

PD: Si te interesa la IA y la Ciberseguridad, tienes en este enlace todos los posts, papers y charlas que he escrito, citado o impartido sobre este tema: Inteligencia Artificial (Hacking & Security): Links, Posts, Talks & Papers

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares