Noticias IA
AI News AgentHerramientasDeepMind3 min de lectura

Google presenta CodeMender para proteger el código

Google DeepMind presenta CodeMender, un agente de IA que detecta y corrige vulnerabilidades de software. En seis meses ha enviado 72 parches a proyectos de código abierto, aunque todos siguen pasando por revisión humana.

Google DeepMind ha presentado CodeMender, un agente de inteligencia artificial que detecta y corrige vulnerabilidades de seguridad en el código. En sus primeros seis meses de desarrollo, el sistema ha generado 72 parches enviados a proyectos de código abierto, incluidos algunos con hasta 4,5 millones de líneas de código.

La herramienta está diseñada para actuar en dos frentes. Puede reaccionar ante una vulnerabilidad recién descubierta y, al mismo tiempo, revisar código antiguo para sustituir estructuras o funciones inseguras por alternativas más resistentes.

De encontrar el fallo a corregirlo

CodeMender utiliza modelos Gemini Deep Think junto con herramientas de depuración, búsqueda de código y análisis automático. No se limita a señalar que un programa falla: intenta averiguar por qué ocurre el problema y prepara un parche que ataque la causa original.

Para comprobar el resultado, combina varias técnicas, entre ellas:

  • Análisis estático y dinámico del programa.
  • Pruebas diferenciales, fuzzing y verificadores matemáticos.
  • Agentes especializados que revisan los cambios.
  • Compilación y pruebas automáticas para detectar errores o regresiones.

El fuzzing consiste en lanzar grandes cantidades de entradas inesperadas a un programa para intentar provocar fallos. Es útil para encontrar vulnerabilidades, pero no siempre explica su origen ni produce una solución lista para aplicar.

En uno de los ejemplos compartidos por Google, un informe mostraba un desbordamiento de memoria, pero el origen real estaba en la gestión incorrecta de elementos XML durante el análisis de un archivo. El parche final modificó pocas líneas, aunque encontrar el problema exigió revisar el comportamiento interno del programa.

También intenta prevenir futuros ataques

CodeMender puede reescribir partes de un proyecto para incorporar mecanismos de seguridad de forma preventiva. Google lo probó en libwebp, una biblioteca muy utilizada para procesar imágenes, mediante anotaciones -fbounds-safety.

Estas anotaciones permiten que el compilador añada comprobaciones de límites. Así se reducen los desbordamientos de memoria, un tipo de fallo que puede permitir la ejecución de código malicioso. Google señala que una vulnerabilidad de libwebp identificada como CVE-2023-4863 fue utilizada en un ataque sin interacción del usuario contra dispositivos iOS.

Según DeepMind, aplicar estas protecciones habría impedido explotar esa vulnerabilidad y muchos otros desbordamientos en las zonas modificadas. La afirmación se refiere al código protegido, no a toda la biblioteca ni a cualquier fallo futuro.

El humano sigue teniendo la última palabra

CodeMender no está corrigiendo software de forma autónoma y sin supervisión. Todos sus parches son revisados por investigadores antes de enviarse a los proyectos, y los mantenedores de esas bibliotecas deciden si los aceptan.

Esa cautela importa porque un parche de seguridad también puede romper funciones existentes o introducir nuevos errores. El sistema intenta evitarlo comparando el comportamiento antes y después del cambio, ejecutando pruebas y corrigiéndose cuando detecta fallos de compilación o de funcionamiento.

Para ti, el cambio más relevante no es que una IA sustituya de inmediato a los programadores. Es que podría reducir el tiempo necesario para mantener seguras las piezas de software que utilizas sin verlas: bibliotecas, navegadores, sistemas operativos y aplicaciones.

CodeMender todavía es un proyecto de investigación y Google no ha anunciado una versión abierta para todos los desarrolladores. La empresa planea publicar más resultados técnicos y ampliar el contacto con los mantenedores de proyectos críticos. El punto que habrá que vigilar es si sus parches mantienen esa calidad cuando se apliquen a más código y en escenarios menos controlados.