_))
> * _~
`;'__-' _
____ | ) _ _____________________
____ / / `` w w ____________________
____ w w ________________AI_Goat______
______________________________________
Presented by: rootcauz
Aprenda la seguridad de la IA a través de una serie de desafíos vulnerables de LLM CTF. Sin registros ni tarifas de nube, ejecute todo localmente en su sistema.
Muchas empresas han comenzado a crear software que se integra con modelos de lenguaje grande (LLM) de IA debido al lanzamiento de ChatGPT y otros motores. Esta explosión de interés ha llevado al rápido desarrollo de sistemas que reintroducen viejas vulnerabilidades e imponen nuevas clases de amenazas menos comprendidas. Es posible que muchos equipos de seguridad de empresas no estén completamente equipados y se ocupen de la seguridad de LLM, ya que el campo aún está madurando con herramientas y recursos de aprendizaje.
Desarrollé AI Goat para aprender sobre el desarrollo de LLM y los riesgos de seguridad que enfrentan las empresas que lo usan. El formato CTF es una excelente manera para que los investigadores de seguridad adquieran experiencia práctica y aprendan cómo estos sistemas son vulnerables y pueden explotarse. ¡Gracias por tu interés en este proyecto y espero que te diviertas!
El OWASP Top 10 para aplicaciones LLM es un excelente lugar para comenzar a aprender sobre las amenazas y mitigaciones de seguridad de LLM. Le recomiendo que lea el documento detenidamente, ya que muchos de los conceptos se exploran en AI Goat y proporciona un resumen impresionante de lo que enfrentará en los desafíos.
Recuerde, un motor LLM integrado en una aplicación web alojada en un entorno de nube estará sujeto a las mismas amenazas tradicionales a la seguridad de las aplicaciones web y de la nube. Además de estas amenazas tradicionales, los proyectos de LLM también estarán sujetos a la siguiente lista no exhaustiva de amenazas:
AI Goat utiliza Vicuna LLM que derivó de LLaMA de Meta y se combinó con los datos de respuesta de ChatGPT. Al instalar AI Goat, el binario LLM se descarga desde HuggingFace localmente en su computadora. Este binario de aproximadamente 8 GB es el motor de inteligencia artificial en torno al cual se construyen los desafíos. El binario LLM esencialmente toma un "mensaje" de entrada y proporciona una "respuesta" de salida. El mensaje consta de tres elementos concatenados en una cadena. Estos elementos son: 1. Instrucciones; 2. Pregunta; y 3. Respuesta. El elemento Instrucciones consta de las reglas descritas para el LLM. Están destinados a describir al LLM cómo se supone que debe comportarse. El elemento Pregunta es donde la mayoría de los sistemas permiten la entrada del usuario. Por ejemplo, el comentario ingresado en un motor de chat se colocaría en el elemento Pregunta. Por último, la sección Respuesta prescribe que el LLM dé una respuesta a la pregunta.
Una imagen de Docker prediseñadas, ai-base, tiene todas las bibliotecas necesarias para ejecutar el LLM y los desafíos. Este contenedor se descarga durante el proceso de instalación junto con el binario LLM. Una ventana acoplable que inicia cada desafío adjunta el binario LLM, los archivos de desafío específicos y expone los puertos TCP necesarios para completar cada desafío. Consulte las secciones de instalación y configuración para obtener instrucciones sobre cómo comenzar.
Se ha preparado un contenedor CTFd opcional que incluye la descripción de cada desafío, sugerencias, categoría y envío de banderas. La imagen del contenedor está alojada en nuestro Dockerhub y se llama ai-ctfd junto con la imagen ai-base. El contenedor ai-ctfd se puede iniciar desde ai-goat.py y acceder a él mediante su navegador.
sudo apt install git -y
sudo apt install python3-pip -y
sudo usermod -aG docker $USER
reboot
git clone https://github.com/dhammon/ai-goat
cd ai-goat
pip3 install -r requirements.txt
chmod +x ai-goat.py
./ai-goat.py --install
Esta sección espera que ya haya seguido los pasos Installation
.
El uso de ai-ctfd le proporciona una lista de todos los desafíos y el envío de banderas. Es una gran herramienta para usarla usted mismo o cuando organice un CTF. Usarlo de forma individual le proporciona un mapa de los desafíos y le ayuda a realizar un seguimiento de los desafíos que ha completado. Ofrece envío de indicadores para confirmar la finalización del desafío y puede proporcionar sugerencias que le indiquen la dirección correcta. El contenedor también se puede iniciar y alojar en un servidor interno donde puede alojar su propio CTF para un grupo de entusiastas de la seguridad. El siguiente comando inicia ai-ctfd en segundo plano y se puede acceder a él en el puerto 8000:
./ai-goat.py --run ctfd
Importante: Una vez iniciado, debes crear un usuario registrando una cuenta de usuario. Este registro permanece local en el contenedor y no requiere una dirección de correo electrónico real.
Puede cambiar las banderas dentro del código fuente de los desafíos y luego en CTFD (deben coincidir).
ai-goat/app/challenges/1/app.py
y cambie la bandera en la cadena en la línea 12.ai-goat/app/challenges/2/entrypoint.sh
y cambie la bandera en la línea 3../ai-goat.py --run ctfd
y abra el navegador en http://127.0.0.1:8000
) y luego inicie sesión con el usuario root
usando qVLv27Dsy5WuXRubjfII
como contraseña.¡Divertirse!
Consulte la sección Challenges
para obtener una descripción de cada desafío o consulte la página web de ai-ctfd desde Step 1
. El siguiente comando lanza el primer desafío:
./ai-goat.py --run 1
El contenedor del desafío se iniciará en segundo plano y proporcionará instrucciones sobre cómo interactuar con el desafío. Cada desafío tiene una bandera, que es una cuerda rodeada de llaves. Por ejemplo: {eXampl3F!ag}
. Verifica la bandera mediante el envío al desafío del sujeto en la página ai-ctfd.
Importante: a veces, los LLM componen el valor del indicador, así que asegúrese de verificar el indicador en ai-ctfd;)
Importante: la respuesta de LLM puede tardar aproximadamente 30 segundos
./ai-goat.py --run
. Este comando reiniciará el contenedor si ya se está ejecutando.docker container ps
. Para detener un contenedor: docker stop
. La rama principal siempre contendrá la última versión. Las versiones históricas se mantendrán en las respectivas sucursales. Instrucciones de actualización:
cd ai-goat
git pull
pip3 install -r requirements.txt
chmod +x ai-goat.py
./ai-goat.py --install
Importante: ai-ctfd comenzará efectivamente desde cero, así que asegúrese de crear un nuevo usuario y volver a enviar/rehacer cualquier desafío anterior si lo desea.
Los ataques de inyección rápida exitosos influyen en el LLM para que responda con información que no pretende divulgar. En este desafío, un chatbot de IA que se ejecuta en el puerto 9001 almacena la bandera como un secreto y se le ha pedido que no la abandone. ¿Podrás convencer o engañar al robot para que te dé la bandera?
./ai-goat.py -r 1
LLM01: Inyecciones inmediatas | LLM07: Fuga de datos
No se debe confiar en la salida del sistema LLM, especialmente cuando esa salida se utiliza en operaciones posteriores, como comandos del sistema operativo o llamadas de red. Este desafío tiene otro chatbot de IA ejecutándose en el puerto 9002 que responde a la pregunta de un usuario y devuelve el título de un sitio web. El chatbot convierte la entrada del usuario en una URL donde se utiliza para solicitar la fuente de ese sitio mientras se extrae el título. ¿A qué más podría tener acceso a la red este chatbot?
./ai-goat.py -r 2
LLM02: Manejo de salida inseguro
La última versión es la rama principal. Puede encontrar la versión en el archivo CHANGELOG.md
. Se crean ramas para cada versión respectiva.
Motor CTF: CTFD
Arte por: ejm97 en ascii.co.uk
Tecnología de contenedores de IA: