Construir con IA

Los LLM automatizan la verificación formal de bibliotecas de código abierto a gran escala

Una nueva colaboración demuestra que los grandes modelos de lenguaje pueden generar pruebas formales para más de 100 bibliotecas de código abierto, demostrando propiedades de seguridad a nivel de ensamblador.

Un cubo de vidrio con circuitos brillantes sobre un escritorio junto a papeles con símbolos matemáticos.
Ilustración generada para este artículo

Traducido automáticamente del original en inglés.

Los desarrolladores de software han luchado durante mucho tiempo con el alto costo de la verificación formal, un método que demuestra matemáticamente que el código está libre de errores específicos. Una reciente colaboración entre un equipo de investigación en IA y Theorem muestra que los grandes modelos de lenguaje ahora pueden automatizar este proceso a gran escala. Al utilizar Claude para analizar binarios compilados, el equipo logró demostrar con éxito propiedades de seguridad para más de 100 bibliotecas reales de código abierto, marcando un cambio significativo en cómo se puede garantizar la corrección del software.

Qué ocurrió

El proyecto se centró en aplicar la verificación formal al software de producción a nivel de código ensamblador, apuntando específicamente a la arquitectura RISC-V. El equipo seleccionó 123 bibliotecas de código abierto de la iniciativa OSS-Fuzz de Google, que ya contiene miles de puntos de entrada creados por desarrolladores diseñados para fallar cuando se encuentran errores. En lugar de depender de pruebas de fuerza bruta, el equipo pidió a Claude que demostrara que estos programas nunca fallarían para cualquier entrada menor de 64 MB, asumiendo un binario estático de subproceso único ejecutándose en Linux.

Durante un período de varias semanas, Claude generó pruebas para 239 puntos de entrada en estas bibliotecas. Las pruebas resultantes totalizaron aproximadamente 180 millones de líneas de código Rocq, con pruebas individuales que promediaban alrededor de 600.000 líneas. Durante este proceso, el modelo no solo generó las pruebas, sino que también identificó y parcheó errores que habían persistido a pesar de billones de ejecuciones de prueba previas. Este esfuerzo representa la primera aplicación a gran escala de la IA para verificar formalmente software de producción a nivel de ensamblador.

Para hacer accesibles estos hallazgos, el equipo está publicando un subconjunto de las pruebas junto con la semántica de RISC-V y del sistema operativo utilizada en el análisis. Theorem también ofrece ejecutar esta tubería de verificación para otros proyectos de código abierto y ha lanzado una habilidad de Claude para ayudar a los desarrolladores a comenzar a verificar su propio código. Este enfoque traslada la verificación formal de una práctica de nicho reservada para sistemas críticos como la aviónica a una herramienta más ampliamente aplicable para el desarrollo general de software.

Cómo funciona

La verificación formal requiere traducir el código a un modelo matemático y demostrar que cumple con un conjunto de reglas de seguridad. El principal desafío siempre ha sido definir qué significa "correcto" para software complejo. En este proyecto, el equipo evitó la necesidad de especificaciones manuales convirtiendo las pruebas de fuzzing existentes en especificaciones formales. Las pruebas de fuzzing generan entradas aleatorias para encontrar fallos, pero no pueden garantizar que cada ruta sea probada. El nuevo método define la especificación como "esta suite de pruebas siempre pasa", aplicada a las instrucciones RISC-V compiladas en lugar del código fuente.

Claude opera analizando los artefactos ejecutables y la semántica formal del conjunto de instrucciones RISC-V y del comportamiento de los procesos de Linux proporcionada por Theorem. El modelo genera pruebas masivas que demuestran que no pueden ocurrir errores de seguridad de memoria ni fallos de aserción bajo las condiciones definidas. Estas pruebas son luego validadas por el comprobador de pruebas Rocq, un núcleo confiable que asegura que la lógica matemática se sostiene. Dado que el comprobador valida la prueba automáticamente, los desarrolladores no necesitan revisar manualmente los millones de líneas de código generado, confiando únicamente en los modelos subyacentes y en el propio comprobador.

Detalles clave

  • El proyecto verificó 239 puntos de entrada en 123 bibliotecas de código abierto de la iniciativa OSS-Fuzz.
  • Claude generó aproximadamente 180 millones de líneas de código de prueba Rocq, con pruebas típicas alcanzando 600.000 líneas.
  • La verificación apuntó al código ensamblador RISC-V, demostrando que no hay fallos para entradas menores de 64 MB en Linux.
  • El modelo descubrió y parcheó errores que habían sobrevivido a billones de ejecuciones previas de pruebas de fuzzing.
  • La confianza se deposita en los modelos formales de RISC-V y Linux, las declaraciones de teoremas y el comprobador de pruebas Rocq.
  • Theorem está lanzando una habilidad de Claude para asistir a los desarrolladores en la aplicación de flujos de trabajo de verificación similares a sus propios proyectos.

Por qué importa

Para los ingenieros de software, este desarrollo reduce la barrera de entrada para la verificación formal, que históricamente ha requerido años de esfuerzo especializado de expertos. Al automatizar la creación de pruebas, los LLM hacen factible aplicar garantías de seguridad rigurosas a bibliotecas y aplicaciones cotidianas. Este cambio permite a los equipos ir más allá de la corrección reactiva de errores y el fuzzing proactivo hacia un modelo donde los componentes críticos están matemáticamente demostrados como seguros contra clases enteras de vulnerabilidades, como los errores de seguridad de memoria.

La capacidad de verificar binarios compilados en lugar de solo código fuente es particularmente significativa. Esto significa que las propiedades de seguridad pueden garantizarse para los artefactos ejecutables reales desplegados en producción, teniendo en cuenta los comportamientos del compilador y las interacciones de bajo nivel. A medida que mejoran las capacidades de los modelos y se dispone de semántica para más arquitecturas, este enfoque podría convertirse en una parte estándar del ciclo de vida de desarrollo de software, reduciendo el riesgo de exploits en dependencias de código abierto ampliamente utilizadas.

Qué puedes hacer

  • Explora el subconjunto publicado de pruebas y la semántica de RISC-V para entender la estructura de la verificación formal generada por IA.
  • Prueba la nueva habilidad de Claude lanzada por Theorem para comenzar a experimentar con flujos de trabajo de verificación en tus propias bases de código.
  • Revisa las pruebas de fuzzing existentes de tu proyecto, ya que estas pueden servir como base para especificaciones formales en futuros esfuerzos de verificación.
  • Considera integrar pasos de verificación formal para bibliotecas críticas en tu cadena de dependencias, especialmente aquellas que manejan entradas no confiables.
  • Mantente actualizado sobre los desarrollos en la semántica formal de RISC-V y Linux, ya que expandir estos modelos ampliará el alcance del software verificable.
  • Evalúa si los supuestos de binarios estáticos de subproceso único se aplican a tus proyectos actuales como punto de partida para la verificación.
  • #formal verification
  • #llm
  • #security
  • #risc-v
  • #open source

Herramientas de la Tienda de Bytechap

$89

DocBento

Gestión documental autoalojada que lee cada escaneo y responde con citas de página.

Demo en vivo
$79

WorkBento

Suite de RR. HH. y gestión del entorno laboral impulsada por IA que puedes alojar tú mismo.

Demo en vivo

Seguir leyendo

Todos los artículos