Cómo ChatGPT se convertirá en el mejor amigo de un programador

Los investigadores de Spiderlabs de Trustwave han probado qué tan bien ChatGPT puede analizar el código fuente y sus sugerencias para hacer que el código sea más seguro.

Las pruebas iniciales involucraron ver si ChatGPT puede descubrir desbordamientos de búfer en el código, lo que ocurre cuando el código no puede asignar suficiente espacio para contener datos de entrada. Los investigadores dijeron: “Proporcionamos a ChatGPT una gran cantidad de código para ver cómo respondería. A menudo respondió con resultados mixtos”.

Cuando se les preguntó cómo hacer que el código fuera más seguro, respondieron que ChatGPT sugirió aumentar el tamaño del búfer. Otras recomendaciones hechas por ChatGPT incluyen el uso de una función más segura para ingresar datos y asignar memoria dinámicamente. Los investigadores descubrieron que ChatGPT podía refactorizar el código en función de cualquiera de las correcciones que sugería, como mediante el uso de la asignación de memoria dinámica.

Según los investigadores, ChatGPT hizo un buen trabajo al identificar problemas potenciales en el código de muestra. “Se eligieron estos ejemplos porque son relativamente inequívocos, por lo que ChatGPT no tendría que inferir mucho contexto más allá del código que se le proporcionó”, dijeron.

Sin embargo, al proporcionarle bloques de código más grandes o problemas menos sencillos, no lo hizo muy bien para detectarlos. Sin embargo, los investigadores notaron que los programadores humanos tendrían problemas similares al abordar los errores en un código más complejo. Dijeron que para obtener los mejores resultados, ChatGPT necesita más información del usuario para obtener una respuesta contextualizada para ilustrar el propósito del código. A pesar de las limitaciones, los investigadores creen que se puede utilizar para respaldar el análisis del código fuente.

Trustwave dijo que si bien las herramientas de análisis estático se han utilizado durante años para identificar vulnerabilidades en el código, dichas herramientas tienen limitaciones en términos de su capacidad para evaluar aspectos de seguridad más amplios, a veces informando vulnerabilidades que son imposibles de explotar. Los investigadores informaron que ChatGPT demuestra una mayor conciencia contextual y puede generar exploits que cubren un análisis más completo de los riesgos de seguridad. “La falla más grande al usar ChatGPT para este tipo de análisis es que es incapaz de interpretar el proceso de pensamiento humano detrás del código”, advirtieron.

Karl Sigler, gerente de inteligencia de amenazas de Trustwave, dijo: “ChatGPT está bien en el código. Es mejor que un programador junior y puede ser el mejor amigo de un programador”. Agregó que dado que muy pocos desarrolladores comienzan a crear aplicaciones desde cero, ChatGPT les ofrece una forma de complementar el proceso de desarrollo de software. Por ejemplo, cree que podría ayudar a los desarrolladores a comprender las interfaces de programación de aplicaciones y la funcionalidad disponible en las nuevas bibliotecas de programación. Dado que ha sido diseñado para comprender el lenguaje humano, Sigler ve una oportunidad para que ChatGPT se siente detrás de las reuniones entre empresarios y desarrolladores.

Microsoft demostró recientemente la integración de ChatGPT con su producto Copilot que se ejecuta con la herramienta de colaboración Teams, donde la IA realiza un seguimiento de la discusión y toma notas y puntos de acción. Sigler cree que dicha tecnología podría aplicarse para ayudar a generar una especificación formal para un proyecto de desarrollo de aplicaciones.

Esto evitaría cualquier malentendido que pueda surgir fácilmente durante tales discusiones. ChatGPT podría usarse, en teoría, para comparar el código enviado con la especificación formal y ayudar tanto al cliente como al desarrollador a ver si hay desviaciones entre lo que se entregó y su comprensión de la especificación formal. Dada su capacidad para comprender el lenguaje humano, Sigler dijo que hay mucho potencial para usar ChatGPT para ayudar a verificar la mala interpretación en la documentación de especificaciones y las políticas de cumplimiento.

Los investigadores de Trustwave dijeron que ChatGPT podría ser particularmente útil para generar código esqueleto y pruebas unitarias, ya que requieren una cantidad mínima de contexto y están más preocupados por los parámetros que se pasan. Esto, señalaron, es una tarea en la que ChatGPT se destacó en sus pruebas. “Es lo suficientemente flexible como para poder responder a muchas solicitudes diferentes, pero no necesariamente se adapta a todos los trabajos que se le solicitan”, dijeron.

Durante los próximos dos a cinco años, Sigler espera que ChatGPT y otros sistemas generativos de IA se conviertan en parte del ciclo de vida del desarrollo de software. Un ejemplo de cómo se usa esto hoy en día es un complemento para la herramienta de análisis de código binario IDA. IDA Pro convierte código binario en código fuente legible por humanos.

Sin embargo, sin documentación, puede llevar mucho tiempo aplicar ingeniería inversa al código fuente para comprender para qué fue diseñado. Un proyecto de Github, llamado Gepetto, ejecuta un script de Python, utilizando el modelo de lenguaje grande gpt-3.5-turbo de OpenAI, que según el mantenedor del proyecto puede proporcionar significado a las funciones descompiladas por IDA Pro. Por ejemplo, se puede usar para pedirle a gpt-3.5-turbo que explique qué hace una función en el código descompilado.

Según Sigler, ChatGPT también permite que la comunidad de código abierto automatice parte del esfuerzo de auditoría necesario para mantener un código seguro y manejable.

Exit mobile version