.@trailofbits' equipo de Buttercup hablando sobre nuestra estrategia de competencia ahora, en el escenario de AIxCC. Aquí está nuestro equipo central (8 personas clave + ~3 mercenarios):
Nuestros principios rectores de estrategias. Resumiendo, utiliza la mejor herramienta para el trabajo. No esperes que los LLM sean mágicamente buenos en cosas que sabemos que no lo son.
El diseño original de Buttercup era sustancialmente más sofisticado. Se redujo para cumplir con las reglas y tener en cuenta las limitaciones de recursos de nuestro equipo.
Tuvimos un desempeño sustancialmente bueno en las semifinales, logrando muchos primeros derribos, ¡pero nuestro buscador de errores de Java se rompió y aún no sabemos por qué!
Las semifinales validaron nuestro enfoque general, pero necesitaba ajustes para acomodar el enorme aumento de escala para la final. Descartamos el prototipo y comenzamos desde cero para la final.
Henrik trabajó en el orquestador: cómo, qué y cuándo enviar a la API de competencia. Decidimos siempre requerir un PoV para maximizar nuestra confianza en las presentaciones.
Run trabajó en nuestro motor de descubrimiento de vulnerabilidades. Utilizamos fuzzers estándar de oss-fuzz. Usamos un corpus compartido donde los LLM ayudaron a los fuzzers a obtener cobertura.
Ronald trabajó en nuestro motor de descubrimiento de vulnerabilidades. Utilizamos fuzzers estándar de oss-fuzz. Usamos un corpus compartido donde los LLM ayudaron a los fuzzers a obtener cobertura.
Ronald trabajó en nuestro motor de descubrimiento de vulnerabilidades. Utilizamos fuzzers estándar de oss-fuzz. Usamos un corpus compartido donde los LLM ayudaron a los fuzzers a obtener cobertura.
El parcheador es un sistema multiagente, 6k líneas de código, LangChain/LangGraph, con GPT-4.1 sin razonamiento. El agente de seguridad identifica las causas raíz, el agente ingeniero encuentra las instrucciones de prueba, luego el agente de QA un parche y lo valida. Si falla, el agente de reflexión ajusta la estrategia.
En las rondas de exhibición, anotamos primero en la ronda 1, chocamos fuertemente en la 2 y nos recuperamos en la 3. Fuimos eficientes en recursos en la ronda 1, utilizando solo $1k de un presupuesto de $30k para LLM. En la ronda 2 tuvimos un pequeño error tipográfico que hizo que todo fallara.
En la ronda evaluada, encontramos muchos errores con un presupuesto limitado (la mitad del disponible), con alta precisión, y obtuvimos buenos resultados en todas las tareas. También encontramos al menos 1 error que ningún otro CRS encontró, lo que demuestra que cubrimos terreno nuevo.
¿Cómo obtuvimos una puntuación tan alta? Tuvimos un 90% de precisión, puntuamos en todas las tareas y hicimos parches de alta calidad para todos nuestros errores.
Pasamos el último mes creando una versión reducida de buttercup que funciona en tu portátil. Tenemos la intención de mantenerla con una parte de las ganancias. ¡Ahora es de código abierto!
4K