웹해킹

Web LLM Attacks 대규모 언어 모델 AI 보안 취약점

이둥둥 2025. 3. 11. 21:56

AI의 급성장과 더불어 LLM 역시 빠지지 않는 주제이다. gpt처럼 전용 소프트웨어로 사용되는 경우도 있지만 다른 서비스 소프트웨어에 임베드되어 사용되는 경우도 많다(Notion, Canva 등). 오늘은 LLM의 API의 작동방식과 취약점에 대해 다뤄보려고 한다.

 

LLM 대규모 언어 모델이란

요즘 정말 많은 기업에서 웹 서비스에 LLM을 도입하고 있는데, 나 역시 GPT, Bard, Gemini 등을 사용하기 때문에 이제는 없어서는 안 되는 존재임이 틀림없다. LLM은 머신러닝 기반의 인공지능으로, 방대한 양의 텍스트를 학습해서 언어 구성 요소를 이해한다. 일반적으로 사용자의 인풋, 프롬프트를 통해 인터렉티브한 서비스를 제공하고, 인풋값은 입력 유효성 규칙을 따라 검증을 거치는 게 일반적이다. 

 

LLM API 작동 방식

LLM과 API의 결합의 워크플로우는 일반적으로 API 의 구조에 따라 달라진다. 대략적인 과정을 알아보자

  1. 클라이언트가 프롬프트로 LLM을 호출함(ex. ~하는 기능의 코드를 짜줘)
  2. 프롬프트를 분석해 필요한 API를 결정한다(ex. 주문 조회는 ERP 시스템 접근 api)
  3. API 호출을 위해 json 형식으로 데이터를 구성(파라미터 등)하고 api에 보낼 준비
  4. 준비된 데이터로 실제 API를 호출하면 클라이언트는 LLM이 반환한 JSON 데이터를 받아 API 호출+결과 수령
  5. API에서 받은 결과를 LLM에 전달해서 사용자에게 응답으로 반환

 

LLM 공격 예시와 공격 벡터

  • LLM이 접근할 수 있는 데이터(프롬프트, 모델에 제공된 API 등)
  • AP를 통한 SQL Injection
  • 프롬프트 질문으로 쿼리하는 사용자와 시스템에 공격 유발

대부분의 웹 LLM 공격은 프롬프트 인젝션 Prompt Injection 기술을 사용한다. LLM과 소통할 수 있는 프롬프트에 정교한 공격 페이로드를 사용해서 출력을 조작하는 방식이다. 민감한 API에 잘못된 호출을 하거나 부적절한 콘텐츠를 반환하는 등의 작업을 수행하도록 유도한다

공격벡터에 대해 알아보자

 

1. Prompt Injection

LLM에 악의적인 프롬프트 입력값을 주입해서 민감한 데이터를 조회하고 노출시키는 공격

2. API 악용 및 SQL Injection

외부 API와 연동할때, 특히 입력 검증 없이 데이터베이스에 접근해서 SQL쿼리가 실행될 때 정보를 탈취

3. SSRF 공격

위와 비슷하게 외부 리소스에 요청하는 기능이 있다면, 서버에서 내부 시스템에 요청을 보내는 SSRF 공격이 가능

 

 

LLM 취약점 탐지 방법

  • 입력값 검증: 프롬프트같은 직접적인 입력뿐만 아니라 학습 데이터 같은 간접적 입력 포함
  • LLM이 접근하는 데이터와 API 파악
  • 새로운 Attack Surface와 취약점 조사

 

OWASP 에서 선정한 LLM부문 취약점 10개도 참고

https://www.cloudflare.com/ko-kr/learning/ai/owasp-top-10-risks-for-llms/