_))
> * _~
`;'__-' _
____ | ) _ _____________________
____ / / `` w w ____________________
____ w w ________________AI_Goat______
______________________________________
Presented by: rootcauz
일련의 취약한 LLM CTF 과제를 통해 AI 보안을 알아보세요. 가입이나 클라우드 비용이 필요 없으며 모든 것을 시스템에서 로컬로 실행하세요.
ChatGPT 및 기타 엔진의 출시로 인해 많은 회사에서 AI LLM(대형 언어 모델)과 통합하는 소프트웨어를 구축하기 시작했습니다. 이러한 관심의 폭발로 인해 오래된 취약점을 다시 도입하고 이해하기 어려운 새로운 종류의 위협을 부과하는 신속한 개발 시스템이 탄생했습니다. LLM 보안 분야는 여전히 도구와 학습 리소스를 통해 성숙해지고 있기 때문에 많은 회사 보안 팀이 LLM 보안을 처리할 수 있는 충분한 장비를 갖추고 있지 않을 수 있습니다.
저는 LLM 개발과 이를 사용하는 기업이 직면하는 보안 위험에 대해 알아보기 위해 AI Goat를 개발했습니다. CTF 형식은 보안 연구원이 실제 경험을 쌓고 이러한 시스템이 어떻게 취약하고 악용될 수 있는지 알아볼 수 있는 좋은 방법입니다. 본 프로젝트에 관심을 가져주셔서 감사드리며, 즐거운 시간 보내시기 바랍니다!
LLM 응용 프로그램을 위한 OWASP 상위 10개는 LLM 보안 위협 및 완화에 대해 배우기 시작하기에 좋은 곳입니다. AI Goat에서 많은 개념이 탐색되고 과제에서 직면하게 될 내용에 대한 멋진 요약을 제공하므로 문서를 철저하게 읽어볼 것을 권장합니다.
클라우드 환경에서 호스팅되는 웹 애플리케이션에 래핑된 LLM 엔진은 동일한 기존 클라우드 및 웹 애플리케이션 보안 위협에 노출된다는 점을 기억하세요. 이러한 전통적인 위협 외에도 LLM 프로젝트에는 다음과 같은 포괄적이지 않은 위협 목록이 적용됩니다.
AI Goat는 Meta의 LLaMA에서 파생되고 ChatGPT의 응답 데이터와 결합된 Vicuna LLM을 사용합니다. AI Goat를 설치하면 LLM 바이너리가 컴퓨터의 HuggingFace에서 로컬로 다운로드됩니다. 이 약 8GB 바이너리는 과제를 구성하는 AI 엔진입니다. LLM 바이너리는 기본적으로 입력 "프롬프트"를 받아 출력 "응답"을 제공합니다. 프롬프트는 문자열로 함께 연결된 세 가지 요소로 구성됩니다. 이러한 요소는 다음과 같습니다. 1. 지침; 2. 질문; 3. 답변. 지침 요소는 LLM에 대해 설명된 규칙으로 구성됩니다. 이는 LLM이 어떻게 작동해야 하는지 설명하기 위한 것입니다. 질문 요소는 대부분의 시스템에서 사용자 입력을 허용하는 곳입니다. 예를 들어 채팅 엔진에 입력된 댓글은 질문 요소에 배치됩니다. 마지막으로 응답 섹션에서는 LLM이 질문에 응답하도록 규정합니다.
사전 구축된 Docker 이미지인 ai-base에는 LLM 및 과제를 실행하는 데 필요한 모든 라이브러리가 있습니다. 이 컨테이너는 LLM 바이너리와 함께 설치 프로세스 중에 다운로드됩니다. 각 챌린지를 시작하는 Docker Compose는 LLM 바이너리, 특정 챌린지 파일을 연결하고 각 챌린지를 완료하는 데 필요한 TCP 포트를 노출합니다. 시작하는 방법에 대한 지침은 설치 및 설정 섹션을 참조하세요.
각 챌린지 설명, 힌트, 카테고리 및 플래그 제출을 포함하는 선택적 CTFd 컨테이너가 준비되었습니다. 컨테이너 이미지는 dockerhub에서 호스팅되며 ai-base 이미지와 함께 ai-ctfd라고 합니다. ai-ctfd 컨테이너는 ai-goat.py에서 시작하고 브라우저를 사용하여 액세스할 수 있습니다.
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
이 섹션에서는 사용자가 이미 Installation
단계를 수행했다고 가정합니다.
ai-ctfd를 사용하면 모든 챌린지 및 플래그 제출 목록이 제공됩니다. 혼자 사용하거나 CTF를 호스팅할 때 사용할 수 있는 훌륭한 도구입니다. 개인으로서 이를 사용하면 도전 과제 지도가 제공되고 어떤 도전 과제를 완료했는지 추적하는 데 도움이 됩니다. 챌린지 완료를 확인하기 위한 플래그 제출 기능을 제공하고 올바른 방향으로 안내하는 힌트를 제공할 수 있습니다. 컨테이너는 보안 매니아 그룹에 자체 CTF를 호스팅할 수 있는 내부 서버에서 실행 및 호스팅될 수도 있습니다. 다음 명령은 백그라운드에서 ai-ctfd를 시작하고 포트 8000에서 액세스할 수 있습니다.
./ai-goat.py --run ctfd
중요: 일단 시작되면 사용자 계정을 등록하는 사용자를 생성해야 합니다. 이 등록은 컨테이너에 로컬로 유지되며 실제 이메일 주소가 필요하지 않습니다.
챌린지 소스 코드 내에서 플래그를 변경한 다음 CTFD에서 플래그를 변경할 수 있습니다(일치해야 함).
ai-goat/app/challenges/1/app.py
로 이동하여 12행의 문자열에서 플래그를 변경합니다.ai-goat/app/challenges/2/entrypoint.sh
로 이동하여 3행에서 플래그를 변경합니다../ai-goat.py --run ctfd
실행하고 브라우저를 열어 http://127.0.0.1:8000
)를 시작한 다음 qVLv27Dsy5WuXRubjfII
비밀번호로 사용하여 root
사용자로 로그인합니다.재미있게 보내세요!
각 챌린지에 대한 설명은 Challenges
섹션을 참조하거나 Step 1
의 ai-ctfd 웹페이지를 참조하세요. 다음 명령은 첫 번째 챌린지를 시작합니다.
./ai-goat.py --run 1
챌린지 컨테이너는 백그라운드에서 실행되며 챌린지와 상호 작용하는 방법에 대한 지침을 제공합니다. 각 챌린지에는 중괄호로 둘러싸인 문자열인 플래그가 있습니다. 예: {eXampl3F!ag}
. ai-ctfd 페이지의 주제 챌린지에 제출하여 플래그를 확인합니다.
중요: LLM이 플래그 값을 구성하는 경우도 있으므로 ai-ctfd에서 플래그를 확인하세요.)
중요: LLM 응답은 30초 정도 걸릴 수 있습니다.
./ai-goat.py --run
. 이 명령은 컨테이너가 이미 실행 중인 경우 컨테이너를 다시 시작합니다.docker container ps
. 컨테이너를 중지하려면: docker stop
. 메인 브랜치에는 항상 최신 릴리스가 포함됩니다. 기록 버전은 각 분기에서 유지 관리됩니다. 업그레이드 지침:
cd ai-goat
git pull
pip3 install -r requirements.txt
chmod +x ai-goat.py
./ai-goat.py --install
중요: ai-ctfd는 처음부터 효과적으로 시작되므로 원하는 경우 새 사용자를 생성하고 이전 과제를 다시 제출/다시 실행하세요.
성공적인 프롬프트 주입 공격은 LLM이 공개할 의도가 없는 정보로 대응하도록 영향을 미칩니다. 이 챌린지에서는 포트 9001에서 실행되는 AI 챗봇이 플래그를 비밀로 저장하고 있으며 이를 포기하지 말라는 메시지를 표시했습니다. 봇이 당신에게 깃발을 주도록 설득하거나 속일 수 있나요?
./ai-goat.py -r 1
LLM01: 신속한 주사 | LLM07: 데이터 유출
LLM 시스템 출력은 특히 해당 출력이 OS 명령이나 네트워크 호출과 같은 다운스트림 작업에 사용되는 경우 신뢰할 수 없습니다. 이 챌린지에는 사용자 질문을 받아 웹 사이트 제목을 반환하는 포트 9002에서 실행되는 또 다른 AI 챗봇이 있습니다. 사용자 입력은 제목을 리핑하는 동안 해당 사이트의 소스를 요청하는 데 사용되는 챗봇에 의해 URL로 변환됩니다. 이 챗봇이 네트워크에 접속할 수 있는 또 다른 것은 무엇입니까?
./ai-goat.py -r 2
LLM02: 안전하지 않은 출력 처리
최신 버전은 메인 브랜치입니다. CHANGELOG.md
파일에서 버전을 찾을 수 있습니다. 각 버전마다 분기가 생성됩니다.
CTF 엔진: CTFD
아트 작성자: ascii.co.uk의 ejm97
AI 컨테이너 기술: