AI

[AI] LLM OWASP 07 : 시스템 프롬프트 유출

poiri3r 2026. 3. 7. 10:23

https://owasp.org/www-chapter-seoul/assets/files/LLMAll_ko-KR-2025-04-02.pdf

 

LLM에서 시스템 프롬프트 유출 취약점은 시스템 프롬프트나 지침이 모델의 행동을 유도하는 데 사용되지만, 의도치 않게 민감 정보를 포함할 수 있는 위험을 의미합니다. 모델의 출력에 포함된 비밀정보는 다른 공격을 수행하는 데 이용될 수 있습니다.

 

중요한 점은, 시스템 프롬프트는 비밀로 취급되어서는 안되며, 보안 제어로 사용되어서도 안됩니다. 자격 증명, 연결 문자열 등 민감 데이터는 시스템 프롬프트 언어에 포함되지 않아야 합니다.

시스템 프롬프트에 민감 정보가 포함되어 있다면, 이러한 정보 노출에 대한 근본적인 보안 위험은 이 정보 노출이 아닌, 애플리케이션이 강력한 세션 관리 및 권함 검사를 우회하도록 LLM에 이를 위임하고 민감한 데이터가 부적절한 위치에 저장되고 있다는 뜻입니다.

 

즉, 시스템 프롬프트 유출 자체는 실제 위험을 초래하지 않으며 보안 위험은 민감 정보 유출, 시스템 가드레일 우회, 권한 분리 오류 등 더 근본적인 요소에 있다는 점을 알고 있어야 합니다.

 

취약점 예시

1. 민감한 기능 유출 : 애플리케이션의 시스템 프롬프트가 민감 정보나 기능을 유출할 수 있습니다. 공격자는 이러한 정보를 추출하거나 사용하여 애플리케이션에 무단 접근할 수 있습니다.

2. 내부 규칙 유출 : 애플리케이션의 시스템 프롬프트가 내부 의사 결정 프로세스를 유출할 수 있습니다. 공격자는 이러한 정보를 통해 애플리케이션 작동을 파악할 수 있어, 제어장치를 우회하거나 약점을 이용하도록 할 수 있습니다.

3. 필터링 기준 유출 : 시스템 프롬프트는 민감한 컨텐츠를 필터링하거나 거부하라는 지시를 모델에 내릴 수 있습니다. 이러한 내용도 마찬가지로 필터링을 우회하는데 이용될 수 있습니다.

4. 권한 및 이용자 역할 유출 : 시스템 프롬프트는 애플리케이션의 내부 역할 구조나 권한 수준을 유출할 수 있습니다. 공격자가 이러한 역할 기반 권한을 알면, 권한 상승 공격을 시도할 수 있습니다.

 

공격 시나리오 예시는 다음과 같습니다.

공격 시나리오 예시

시나리오 #1 : LLM에 시스템 프롬프트가 포함되어 있으며, 이 프롬프트에는 LLM이 접근할 수 있는 도구에 대한 자격 증명이 들어 있습니다. 이 시스템 프롬프트가 공격자에게 유출되면, 공격자는 이러한 자격 증명을 사용해 다른 용도로 악용할 수 있습니다.

 

시나리오 #2 : LLM에 외부 링크, 코드 실행, 공격적인 컨텐츠 생성을 금지하는 시스템 프롬프트가 있습니다. 공격자는 이 시스템 프롬프트를 추출한 후 프롬프트 인젝션 공격을 사용하여 이러한 지침을 우회하고 원격 코드 실행 공격을 수행할 수 있습니다.

예방 및 완화 전략

1. 시스템 프롬프트에서 민감 데이터 분리 : API 키, 인증 키, 데이터베이스 이름, 이용자 권한 등과 같은 민감 정보를 시스템 프롬프트에 직접 포함시키지 말아야 합니다. 또 해당 정보를 모델이 접근하지 않는 외부 시스템에 저장하고 관리해야 합니다.

2. 시스템 프롬프트에 의존하지 않고 엄격한 행동 제어 : 가능한 시스템 프롬프트에 의존하여 모델의 행동을 제어하지 말고, 외부 시스템을 사용하여 모델의 행동을 보장하는 것이 좋습니다. 

3. 가드레일 구현 : LLM 자체 외부에 가드레일 시스템을 구현해야 합니다 특정 행동을 모델에 훈련시키는 것이 효과적일 수 있지만, 모델이 항상 이를 준수한다고 보장할 수 없고, 모델의 출력을 검사하여 동작을 확인하는 독립적인 시스템을 통해 가드레일을 구현해야 합니다.

4. LLM과 독립적인 보안 제어 구현 : 권한 분리, 인증 경계 체크 등 중요한 보안 제언느 시스템 프롬프트를 통하건 다른 방식이건 LLM에게 위임되어서는 안됩니다.