Los investigadores de Protect AI, con sede en Seattle, planean lanzar una herramienta gratuita de código abierto que pueda encontrar vulnerabilidades de día cero en bases de código Python con la ayuda del modelo Claude AI de Anthropic. El software, llamado Vulnhuntr, fue anunciado en la conferencia de seguridad No Hat en Italia el sábado. “La herramienta no se limita a pegar un código del proyecto y solicitar un análisis”, explicó Dan McInerney, investigador principal de amenazas de IA en Protect AI, quien desarrolló el software con su colega Marcello Salvati. “Encuentra automáticamente archivos de proyecto que probablemente manejen la entrada de usuarios remotos, Claude los analiza en busca de vulnerabilidades potenciales, luego, para cada vulnerabilidad potencial, Claude recibe un mensaje altamente optimizado específico de la vulnerabilidad y entra en un bucle”. “En este bucle, solicita de forma inteligente funciones/clases/variables de otras partes del código continuamente hasta que completa toda la cadena de llamadas desde la entrada del usuario hasta la salida del servidor sin ampliar su ventana de contexto. La ventaja de esto sobre los analizadores de código estático actuales es una reducción masiva de falsos positivos/negativos, ya que puede leer toda la cadena de llamadas, no solo pequeños fragmentos de código uno a la vez”. Este enfoque, afirma McInerney, puede revelar vulnerabilidades complejas de varios pasos, en lugar de marcar funciones como eval() con implicaciones de seguridad conocidas. “La herramienta se diseñó originalmente utilizando Claude y utilizó las mejores prácticas de Claude en ingeniería rápida, por lo que funciona mejor con Claude”, dijo McInerney. “Incluimos la opción de usar [OpenAI’s] GPT-4 y lo probamos con GPT-4o pero obtuvimos peores resultados. Modificar las indicaciones para que se ajusten mejor a GPT-4o es muy sencillo y usar el modelo GPT-4o es solo un cambio en 1 línea de código. Al abrirlo, esperamos fomentar modificaciones como éstas a medida que salgan nuevos modelos”. Hasta ahora, dice McInerney, Vulnhuntr ha encontrado más de una docena de vulnerabilidades de día cero en grandes proyectos de código abierto de Python. “Todas estas vulnerabilidades no eran conocidas ni informadas previamente a los encargados del proyecto”, dijo. Actualmente, la herramienta se centra en siete tipos de vulnerabilidades explotables de forma remota. Sobrescritura arbitraria de archivos (AFO) Inclusión de archivos locales (LFI) Falsificación de solicitudes del lado del servidor (SSRF) Secuencias de comandos entre sitios (XSS) Referencias directas inseguras a objetos (IDOR) Inyección SQL (SQLi) Ejecución remota de código (RCE) Los proyectos afectados incluyen: gpt_academic , 64.000 estrellas en GitHub, LFI, XSS ComfyUI, 50.000 estrellas, XSS FastChat, 35.000 estrellas, SSRF Ragflow, 16.000 estrellas, RCE Otros proyectos con código vulnerable detectado hace menos de 90 días no han sido identificados para dar tiempo a los mantenedores para arreglar las cosas. Ragflow, dijo McInerney, es el único proyecto que conoce que ha solucionado el error identificado. Vulnhuntr tiene algunas limitaciones. Por el momento, solo funciona con código Python y depende del acceso a un analizador estático de Python. Como resultado, es más probable que la herramienta genere falsos positivos al escanear proyectos de Python que incorporan código en otros lenguajes (por ejemplo, TypeScript). Al generar un exploit de prueba de concepto (PoC), el software genera una puntuación de confianza que oscila entre 1 y 10. Una puntuación de 7 significa que probablemente se trata de una vulnerabilidad válida, aunque el código PoC puede necesitar algún refinamiento. Es muy probable que una puntuación de 8 o más sea válida. Es poco probable que las puntuaciones de 6 o menos sean válidas. El resultado se parece a esto: scratchpad: 1. Analizando la función add_llm en llm_app.py. 2. Entradas de usuario identificadas utilizadas como claves para acceder a diccionarios: EmbeddingModel, ChatModel, RerankModel, CvModel y TTSModel. 3. Estos diccionarios contienen referencias de clases, de las cuales se crean instancias con parámetros proporcionados por el usuario. 4. La variable de fábrica se utiliza directamente desde la entrada del usuario (req.[‘llm_factory’]) sin la validación adecuada. […] —————————————- análisis: la función add_llm en llm_app.py contiene una vulnerabilidad crítica de ejecución remota de código (RCE). La función utiliza información proporcionada por el usuario (req.[‘llm_factory’] y req[‘llm_name’]) para crear instancias dinámicas de clases de los diccionarios EmbeddingModel, ChatModel, RerankModel, CvModel y TTSModel. Este patrón de utilizar la entrada del usuario como clave para acceder y crear instancias de clases es intrínsecamente peligroso, ya que permite a un atacante ejecutar potencialmente código arbitrario. La vulnerabilidad se ve exacerbada por la falta de una validación o desinfección integral de estos valores proporcionados por los usuarios. […] —————————————- poc: POST /add_llm HTTP/1.1 Anfitrión: target.com Tipo de contenido: aplicación/json Autorización: Portador { “llm_factory”: “__import__(‘os’).system”, “llm_name”: “id”, “model_type”: “EMBEDDING”, “api_key”: ” dummy_key”} —————————————- puntuación_confianza: 8 —- ———————————— tipos_de_vulnerabilidad: – RCE ———- —————————— Otro problema es que los LLM no son deterministas: pueden proporcionar resultados diferentes para el mismo mensaje en diferentes momentos, por lo que es posible que se requieran varias ejecuciones. No obstante, McInerney dice que Vulnhuntr es una mejora significativa con respecto a la generación actual de analizadores estáticos. También implica algún costo ya que la API de Claude no es gratuita. “Mi uso promedio es identificar uno o dos archivos en un proyecto que manejan la entrada remota del usuario y decirle a la herramienta que realice un análisis solo en ese par de archivos”, dijo McInerney. “Cuando se usa de esta manera, el promedio de uso de tokens es de menos de $0,50. También encontrará automáticamente estos archivos relacionados con la red, pero es una búsqueda amplia que a menudo lo lleva a escanear entre 10 y 20 archivos en lugar de los 1 o 2 que normalmente dan los mejores resultados. Dependiendo del tamaño del proyecto, escanear todos los archivos relacionados con la red solo costará entre 1 y 3 dólares”. Hasta donde nuestra investigación puede decir, el lanzamiento de Vulnhuntr será la primera vez que los LLM encuentren días cero en la naturaleza. McInerney dice que cree que los descubrimientos de Vulnhuntr representan la primera vez que se identifican vulnerabilidades reales de día cero en proyectos públicos mediante una herramienta asistida por IA. “Hay varios artículos que afirman esto y todos son engañosos porque su IA no descubrió los días cero, simplemente se le alimentó con objetivos o códigos vulnerables conocidos en los que no estaba entrenada y luego dijeron que esto era evidencia de que su IA puede encontrar días cero”. ”, dijo. “Hasta donde nuestra investigación puede decir, el lanzamiento de Vulnhuntr será la primera vez que los LLM encuentren días cero en la naturaleza”. Como ejemplo, señaló un artículo de investigadores académicos cuyo trabajo hemos cubierto anteriormente. Daniel Kang, profesor asistente de informática en la Universidad de Illinois Urbana-Champaign y coautor del artículo citado y de otros similares, dijo a The Register que confiar en datos simulados es una práctica común en la investigación de seguridad. “Está ampliamente aceptado que las simulaciones de entornos del mundo real son sustitutos aceptables del mundo real”, dijo. “Puedo vincularme a cientos de artículos de seguridad y comunicados de prensa donde se utilizan herramientas de seguridad en entornos simulados o sobre vulnerabilidades pasadas del mundo real y nadie cuestiona estos hallazgos. Lo correcto es que simulamos la configuración de día cero, pero nuevamente, esto es ampliamente aceptado como una práctica común”. El artículo de Kang describe el uso de equipos de agentes LLM para explotar vulnerabilidades de día cero y señala que Vulnhuntr no maneja la explotación. También dijo que en ausencia de un análisis de falsos positivos o una comparación con herramientas como ZAP, Metasploit o BurpSuite, es difícil decir cómo se compara la herramienta con las alternativas de código abierto o propietarias existentes. Según McInerney, las vulnerabilidades identificadas por Vulnhuntr son muy fáciles de explotar una vez identificadas. “La herramienta ofrece una prueba de concepto de explotación una vez que encuentra una vulnerabilidad”, dijo. “No es raro tener que hacer algún tipo de ajuste menor al PoC para que funcione, pero es obvio qué ajustes hacer después de leer el análisis que el LLM le brinda sobre por qué es vulnerable”. Nos dijeron que Vulnhuntr se lanzará en GitHub, presumiblemente a través de un repositorio asociado con Protect AI. El negocio también está alentando a los cazadores de errores en ciernes a probar la herramienta en proyectos de código abierto enumerados en su sitio web de recompensas por errores,huntr.com. ® URL de publicación original: https://go.theregister.com/feed/www.theregister.com/2024/10/20/python_zero_day_tool/
Leave a Reply