¿Estamos preparados para el código generado por IA? PlatoBlockchain Inteligencia de Datos. Búsqueda vertical. Ai.

¿Estamos listos para el código generado por IA?

En los últimos meses, nos hemos maravillado ante la calidad de los rostros, las imágenes de gatos, los vídeos, los ensayos e incluso el arte generados por computadora. La inteligencia artificial (IA) y el aprendizaje automático (ML) también se han introducido silenciosamente en el desarrollo de software, con herramientas como GitHub Copilot, Tabnine, Polycode, y otros dando el siguiente paso lógico de poner la funcionalidad de autocompletar del código existente en esteroides de IA. Sin embargo, a diferencia de las fotografías de gatos, el origen, la calidad y la seguridad del código de la aplicación pueden tener implicaciones de gran alcance y, al menos en materia de seguridad, las investigaciones muestran que el riesgo es real.

Anterior la investigación académica Ya ha demostrado que GitHub Copilot a menudo genera código con vulnerabilidades de seguridad. Más recientemente, un análisis práctico realizado por el ingeniero de seguridad de Invicti, Kadir Arslan, demostró que sugerencias de código inseguro siguen siendo la regla y no la excepción con Copilot. Arslan descubrió que las sugerencias para muchas tareas comunes incluían solo lo básico, a menudo tomando la ruta más básica y menos segura, y que aceptarlas sin modificaciones podría dar como resultado aplicaciones funcionales pero vulnerables.

Una herramienta como Copilot es (por diseño) el autocompletado mejorado, entrenado en código fuente abierto para sugerir fragmentos que podrían ser relevantes en un contexto similar. Esto hace que la calidad y seguridad de las sugerencias estén estrechamente vinculadas a la calidad y seguridad del conjunto de capacitación. Entonces, las preguntas más importantes no son sobre Copilot o cualquier otra herramienta específica, sino sobre el código de software generado por IA en general.

Es razonable suponer que Copilot es sólo la punta de lanza y que generadores similares se volverán comunes en los próximos años. Esto significa que nosotros, la industria tecnológica, debemos empezar a preguntarnos cómo se genera ese código, cómo se utiliza y quién asumirá la responsabilidad cuando las cosas salgan mal.

Síndrome del navegador por satélite

El autocompletado de código tradicional que busca definiciones de funciones para completar los nombres de las funciones y recordarle qué argumentos necesita supone un gran ahorro de tiempo. Debido a que estas sugerencias son simplemente un atajo para buscar los documentos usted mismo, hemos aprendido a confiar implícitamente en todo lo que sugiere el IDE. Una vez que llega una herramienta impulsada por IA, ya no se garantiza que sus sugerencias sean correctas, pero aún así resultan amigables y confiables, por lo que es más probable que sean aceptadas.

Especialmente para los desarrolladores menos experimentados, la conveniencia de obtener un bloque de código gratuito fomenta un cambio de mentalidad de "¿Este código es lo suficientemente parecido a lo que yo escribiría?" a "¿Cómo puedo modificar este código para que funcione para mí?".

GitHub establece muy claramente que las sugerencias de Copilot siempre deben analizarse, revisarse y probarse cuidadosamente, pero la naturaleza humana dicta que incluso el código deficiente ocasionalmente llegará a producción. Es un poco como conducir mirando más el GPS que la carretera.

Problemas de seguridad de la cadena de suministro

El Crisis de seguridad de Log4j ha puesto en primer plano la seguridad de la cadena de suministro de software y, específicamente, la seguridad de código abierto, con una reciente Nota de la Casa Blanca sobre desarrollo de software seguro y una nueva proyecto de ley para mejorar la seguridad del código abierto. Con estas y otras iniciativas, pronto será necesario escribir cualquier código fuente abierto en sus aplicaciones en una lista de materiales de software (SBOM), lo cual solo es posible si incluye conscientemente una dependencia específica. Las herramientas de análisis de composición de software (SCA) también se basan en ese conocimiento para detectar y marcar componentes de código abierto obsoletos o vulnerables.

Pero, ¿qué pasa si su aplicación incluye código generado por IA que, en última instancia, se origina a partir de un conjunto de capacitación de código abierto? Teóricamente, si incluso una sugerencia sustancial es idéntica al código existente y se acepta tal como está, podría tener código fuente abierto en su software pero no en su SBOM. Esto podría generar problemas de cumplimiento, sin mencionar la posibilidad de responsabilidad si el código resulta inseguro y resulta en una infracción, y SCA no lo ayudará, ya que solo puede encontrar dependencias vulnerables, no vulnerabilidades en su propio código. .

Errores de licencia y atribución

Siguiendo con esa línea de pensamiento, para utilizar código fuente abierto, es necesario cumplir con los términos de la licencia. Dependiendo de la licencia de código abierto específica, al menos deberás proporcionar atribución o, a veces, publicar tu propio código como código abierto. Algunas licencias prohíben por completo el uso comercial. Cualquiera que sea la licencia, necesita saber de dónde proviene el código y cómo se obtiene la licencia.

Nuevamente, ¿qué pasa si tiene un código generado por IA en su aplicación que resulta ser idéntico al código fuente abierto existente? Si tuviera una auditoría, ¿encontraría que está usando código sin la atribución requerida? ¿O tal vez necesita abrir parte de su código comercial para seguir cumpliendo con las normas? Quizás ese aún no sea un riesgo realista con las herramientas actuales, pero este es el tipo de preguntas que todos deberíamos hacernos hoy, no dentro de 10 años. (Y para ser claros, GitHub Copilot tiene un filtro opcional para bloquear sugerencias que coincidan con el código existente para minimizar los riesgos de la cadena de suministro).

Implicaciones de seguridad más profundas

Volviendo a la seguridad, un modelo de IA/ML es tan bueno (o tan malo) como su conjunto de entrenamiento. Hemos visto eso en el pasado - por ejemplo, en casos de Algoritmos de reconocimiento facial que muestran prejuicios raciales. debido a los datos con los que fueron entrenados. Entonces, si tenemos investigaciones que muestran que un generador de código frecuentemente produce sugerencias sin tener en cuenta la seguridad, podemos inferir que así es como era su conjunto de aprendizaje (es decir, código disponible públicamente). ¿Y qué pasa si un código inseguro generado por IA se retroalimenta a esa base de código? ¿Pueden las sugerencias ser seguras alguna vez?

Las cuestiones de seguridad no terminan ahí. Si los generadores de códigos basados ​​en IA ganan popularidad y comienzan a representar una proporción significativa del código nuevo, es probable que alguien intente atacarlos. Ya es posible engañar al reconocimiento de imágenes de la IA envenenando su conjunto de aprendizaje. Tarde o temprano, los actores maliciosos intentarán colocar código exclusivamente vulnerable en repositorios públicos con la esperanza de que aparezca en sugerencias y eventualmente termine en una aplicación de producción, exponiéndola a un ataque fácil.

¿Y qué pasa con el monocultivo? Si varias aplicaciones terminan utilizando la misma sugerencia altamente vulnerable, cualquiera que sea su origen, podríamos estar ante epidemias de vulnerabilidad o incluso vulnerabilidades específicas de la IA.

Vigilando la IA

Algunos de estos escenarios pueden parecer descabellados hoy en día, pero son cosas que nosotros en la industria tecnológica debemos discutir. Una vez más, GitHub Copilot está en el centro de atención sólo porque actualmente lidera el camino, y GitHub proporciona advertencias claras sobre las advertencias de las sugerencias generadas por IA. Al igual que el autocompletado en el teléfono o las sugerencias de rutas en el navegador por satélite, son sólo sugerencias para hacernos la vida más fácil y depende de nosotros aceptarlas o dejarlas.

Con su potencial para mejorar exponencialmente la eficiencia del desarrollo, es probable que los generadores de códigos basados ​​en IA se conviertan en una parte permanente del mundo del software. Sin embargo, en términos de seguridad de las aplicaciones, esta es otra fuente de código potencialmente vulnerable que debe pasar rigurosas pruebas de seguridad antes de permitir su entrada en producción. Estamos buscando una forma completamente nueva de deslizar vulnerabilidades (y dependencias potencialmente no verificadas) directamente en su código propio, por lo que tiene sentido tratar las bases de código aumentadas por IA como no confiables hasta que se prueben, y eso significa probar todo con tanta frecuencia como sea posible. poder.

Incluso las soluciones de aprendizaje automático relativamente transparentes como Copilot ya plantean algunas cuestiones legales y éticas, sin mencionar las preocupaciones de seguridad. Pero imagínese que un día, una nueva herramienta comienza a generar código que funciona perfectamente y pasa las pruebas de seguridad, excepto por un pequeño detalle: nadie sabe cómo funciona. Entonces es cuando llega el momento de entrar en pánico.

Sello de tiempo:

Mas de Lectura oscura