GitHub Copilot & Amazon CodeWhisperer pueden filtrar tus API Keys & Secrets
Uno de los grandes problemas con los LLMs es que los datos con los que se han entrenado, están todos en su conocimiento. Conseguir que no devuelva ese conocimiento es un trabajo arduo debido a que no tenemos herramientas de control de acceso a la información, así que el trabajo se trata en filtrar las respuesta que va a dar. Es decir, es como si un niño supiera una palabrota y le dices que no la diga. Él la sabe e intenta no decirla, pero un día le ponen una frase a medio completar donde va esa palabrota… y la suelta delante de todo el mundo.
Esa sería una buena metafora para entender el Data Leakage en los ataques de Prompt Injection a los LLMs que están recogidos en el OWASP TOP TEN de LLM-Apps del que ya hablamos. Y eso le pasa hasta los LLMs más usados, como son ChatGPT, Llama-v2 o Bard donde se les escapó contar cómo acabar con la humanidad, ChatGPT que te explica cómo matar al presidente, a GitHub Copilot y Amazon Codewhisperer, que se utilizan para ayudar a los programadores a tirar líneas de código.
De esto trata el paper académico que ha sido publicado este 14 de Septiembre titulado:»Neural Code Completion Can Memorize Hard-Coded Secrets«. Al final, el bug lo tiene el programador que ha subido su código sin limpiarlo de las API Keys que utiliza en sus programas. Mal por el developer. Después los datos han sido utilizados sin filtrar para entrenar el LLM. Mal por los creadores de los LLMs. Ahora el estudio explica cómo es posible hacer ataques de Promp-Injection para sacarle esas API Keys.
Figura 3: Ataque mediante Prompt-Injecton de RegEx
El proceso es bastante curioso, pues se trata de un proceso en el cual se le pone a tiro al LLM de generador de código cuál es el formato de la API que se espera que «escupa«, y para ello se usa un RegEX. Esa expresión regular define el formato del API Key o Secret de cada una de las plataformas utilizadas por los programadores.
Una vez que se le ha puesto a tiro, se pide la línea de código donde se debe configurar el API Key o Secret y se ve lo que GitHub Copilot y Amazon Codewhisperer muestra al desarrollador. Sorprendentemente, muestra «Hallucianations«, (como cuando ChatGPT se inventa cosas mías) o API Keys y Secrets inventados, pero también filtra API Keys y Secretos aprendidos en su fase de entrenamiento.
Figura 5: Resultados experimentales de Leakage
Cómo podéis ve, el resultado es que mientras que no se filtren los datos con los que se entrena el LLM, siempre nos va a quedar el riesgo de que se filtre la información, como podéis ver en la siguiente tabla, GitHub Copilot filtra API Keys y Secrets de todas las principales plataformas.
Y si miramos las plataformas menos importantes, seguro que hay un «Long Tail» de API Keys y Secrets que acabarán siendo un problema en un momento u otro. Así que, los GitHub Copilot y Amazon CodeWhisperer se pueden convertir en «filtradores» de las API Keys y Secrets que tus developers se dejan en el código.
Por supuesto, el problema principal es que el developer, el equipo de QA, del DevSecOps & SecDevOps no ha filtrado el código antes de subirlo al respositorio, pero también que la tecnología LLM aún adolece de mecanismo de gestión de la seguridad de la información que habrá que ir construyendo. Estamos solo al principio, y nos queda mucho por hacer.
¡Saludos Malignos!
Autor: Chema Alonso (Contactar con Chema Alonso)
Powered by WPeMatico