cybersecurity

GPT-5.5-Cyber construyó un laboratorio de fuzzing zlib en un día.

Fuente: blog.trailofbits.com 6 min de lectura

Compartir

GPT-5.5-Cyber construyó un laboratorio de fuzzing zlib en un día.

Estás leyendo un resumen. El contenido completo está en blog.trailofbits.com.

Estamos llevando a cabo Patch the Planet, una colaboración continua con OpenAI que empareja a ingenieros de Trail of Bits directamente con más de 30 proyectos de código abierto. Su objetivo es anticipar un problema grave que enfrentan los mantenedores de código abierto: modelos altamente capaces como GPT-5.5-Cyber pronto generarán una avalancha de informes de errores, y los mantenedores de OSS ya están sobrecargados. Nuestro plan es dirigir los modelos más recientes de OpenAI a bases de código reales, encontrar primero los errores de seguridad, trabajar con los mantenedores para repararlos y encontrar formas de disminuir la carga sobre ellos a largo plazo. Publicaremos informes de campo como este a medida que avanza la iniciativa; síguelo a través de la etiqueta Patch the Planet. La barrera de experiencia que mantenía las campañas de fuzzing personalizadas fuera del alcance de la mayoría de los atacantes ha desaparecido. Observamos a GPT-5.5-Cyber construir en un solo día lo que habría tomado semanas a un investigador de seguridad hábil: harnesses a través de una docena de puntos de entrada, construcciones de sanitización y variantes, semillas y múltiples hallazgos que actualmente están en divulgación coordinada. Esta instancia en particular se centró en zlib, un formato de datos ampliamente utilizado y una biblioteca de software de compresión de datos sin pérdida. Dirigimos GPT-5.5-Cyber a la biblioteca y lo guiamos a través de Codex con el comando /goal, pidiéndole que encontrara una clase específica de errores que son críticamente peligrosos en bibliotecas de compresión. Publicaremos el harness completo y los hallazgos para inspección una vez que se hayan parchado las vulnerabilidades y se haya lanzado una nueva versión. El laboratorio que GPT-5.5-Cyber construyó en un día no le dijimos al modelo cómo encontrar estos errores. El primer movimiento obvio es leer el código fuente, pero zlib ha sido revisado tan exhaustivamente que queda poco por encontrar de esa manera. GPT-5.5-Cyber lo dedujo por sí mismo, juzgó que la revisión estática era un mal uso de tokens y decidió que el camino de mayor valor era construir herramientas de fuzzing para probar dinámicamente el código. Modelos anteriores dados el mismo objetivo tienden a leer el código y marcar lo que parece sospechoso, lo que lleva a resultados mediocres. Creemos que el modelo avanzado 5.5-Cyber combinado con la función /goal es lo que le permitió ejecutar el proceso de extremo a extremo sin necesidad de guía. /goal forzó al objetivo a vivir a través de múltiples turnos y compacciones, por lo que el modelo mantuvo el alcance, y 5.5-Cyber fue lo suficientemente inteligente para rechazar hallazgos débiles, ampliar la cobertura cuando una línea de investigación se agotó y seguir funcionando hasta que tuvo conceptos de prueba viables respaldados por la salida del sanitizador. A lo largo de varias horas, construyó la campaña poco a poco: utilizó construcciones ASan y UBSan para que los errores de memoria se volvieran observables. Reutilizó pruebas de casos extremos existentes como guía para el corpus de semillas de fuzzing. Escribió harnesses en C/C++ a través de una docena de puntos de entrada, incluyendo inflate, inflateBack, uncompress2, gzFile, MiniZip, puff, blast, infback9, gzjoin, gzappend y varias envolturas de flujo contribuidas. Utilizó construcciones variantes en tiempo de compilación (INFLATE_STRICT, BUILDFIXED, PKZIP_BUG_WORKAROUND, etc.) para alcanzar código que la construcción predeterminada de zlib oculta. Cada una de estas decisiones es rutinaria por sí sola, pero enlazarlas en el orden correcto a través de una docena de puntos de entrada, sin que se le dieran los pasos, es un cambio relativamente grande en cuán capaces son los modelos avanzados. Mientras zlib ya tiene cobertura de fuzzing de su harness de OSS-Fuzz, GPT-5.5-Cyber fue más allá de la forma del harness predeterminado, que pasa entradas aleatorias a las API de gz*. En lugar de fuzzing directos a las API de gz*, su harness más exitoso encontró errores en estados válidos de gz* que solo podían ser construidos por la presión de retroceso del sistema operativo. La disciplina de reporte es la parte difícil. En general, los modelos tienden a tener dificultades para decidir cuándo un hallazgo es lo suficientemente grave como para justificar su escalada a un reporte. Los modelos más débiles tienden a escalar errores que hacen que el programa se bloquee, pero que no son alcanzables en condiciones del mundo real. Desde el principio, GPT-5.5-Cyber encontró un bloqueo nulo en la devolución de llamada en inflateBack. El bloqueo era real, pero alcanzarlo requería que un llamador configurara un estado que era extraordinariamente poco probable en condiciones del mundo real, por lo que el modelo lo registró como no alcanzable y siguió adelante. Este agente continuó sin intervención humana y encontró varios problemas de mayor impacto. Esa disciplina es toda la clave. El valor del harness de zlib provino de la automatización más una definición estricta de lo que contaba como un hallazgo reportable. Sin reglas de validez sólidas integradas en el objetivo y un modelo verdaderamente capaz de evaluar esas reglas, el agente generará montañas de ruido con alta confianza: usos inválidos de la API pública, errores de análisis esperados, uso inadecuado de la API interna, etc. El foso ha desaparecido. Configurar una campaña de fuzzing personalizada solía significar encontrar a alguien que pudiera escribir harnesses, razonar sobre un estado de API válido y diferenciar entre un error y un bloqueo que no puede ocurrir en la práctica. Esta asimetría mantenía a los atacantes ocasionales fuera del juego para la mayoría de los objetivos. Ese foso ha desaparecido en su mayor parte ahora, y cambia el modelo de amenaza en dos direcciones al mismo tiempo. Para un investigador hábil, es un multiplicador de fuerza: el impuesto de semanas a cada nuevo objetivo se reduce a un día o menos, por lo que la misma persona puede auditar mucho más código. Para un atacante de bajo nivel de habilidad, el umbral sube: el trabajo tedioso y pesado en experiencia para poner en marcha un harness ahora puede ser impulsado al iniciar un objetivo y supervisar el ciclo. Para cualquier persona que envíe código crítico en seguridad, la lección práctica es clara. El fuzzing personalizado ya no es un lujo reservado para proyectos con cobertura madura de OSS-Fuzz, y ya no es costoso para las personas a las que preferirías no tener ejecutándolo. La movida defensiva es hacerlo primero, con las reglas de validez que convierten la salida del agente en una fuente de alta señal en la que puedes actuar. Lecciones aprendidas. El laboratorio de fuzzing respondió la pregunta con la que ingresamos y nos dejó una mucho más grande. No le pedimos a GPT-5.5-Cyber que construyera una campaña de fuzzing; decidió que ese era el trabajo y lo hizo. Lo que vale la pena observar ahora es qué más alcanzarán estos nuevos modelos una vez que les entregues un objetivo y te alejes, especialmente los enfoques que nunca habríamos pensado en pedir antes. Esa es también la razón por la que el trabajo anticipado que está realizando Patch the Planet es importante. Cada nueva capacidad que nos ayuda a encontrar errores más rápido está igualmente disponible para un atacante, por lo que la ventaja va a quien encuentre y solucione los errores primero.

Leer el artículo completo en el sitio original

Enlace externo a blog.trailofbits.com

Artículos relacionados