계: Input Validation and Representation
입력 검증 및 표현 문제는 메타 문자, 대체 인코딩 및 숫자 표현 때문에 발생합니다. 보안 문제는 입력을 신뢰하기 때문에 발생합니다. 문제로는 "Buffer Overflows", "Cross-Site Scripting" 공격, "SQL Injection", 그 외 여러 가지가 있습니다.
Prompt Injection
Abstract
검증되지 않은 데이터를 AI 모델의 시스템 프롬프트로 보낼 경우 공격자가 출력을 조작하거나 무단 작업을 실행하여 시스템 무결성과 데이터 보안을 손상시킬 수 있습니다.
Explanation
AI 응용 프로그램에서 시스템 프롬프트는 AI 응답을 안내하는 사전 처리 지침이나 컨텍스트를 제공합니다. 공격자는 입력을 조작하여 시스템 프롬프트로 포함될 때 무단 작업을 실행하거나 민감한 정보를 공개하도록 AI 모델의 동작을 변경할 수 있습니다.
예제 1: 다음 코드는 Spring AI를 사용하는 AI 채팅 클라이언트에 대한 시스템 프롬프트 주입을 보여줍니다.
이 예제에서 공격자는 시스템 프롬프트에 대해 검증되지 않은 입력을 조작하여 보안 침해를 일으킬 수 있습니다.
예제 1: 다음 코드는 Spring AI를 사용하는 AI 채팅 클라이언트에 대한 시스템 프롬프트 주입을 보여줍니다.
@GetMapping("/prompt_injection")
String generation(String userInput1, ...) {
return this.clientBuilder.build().prompt()
.system(userInput1)
.user(...)
.call()
.content();
}
이 예제에서 공격자는 시스템 프롬프트에 대해 검증되지 않은 입력을 조작하여 보안 침해를 일으킬 수 있습니다.
References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 1427
[2] Standards Mapping - Common Weakness Enumeration Top 25 2024 [13] CWE ID 077
desc.dataflow.java.prompt_injection
Abstract
검증되지 않은 데이터를 AI 모델의 시스템 프롬프트로 보낼 경우 공격자가 출력을 조작하거나 무단 작업을 실행하여 시스템 무결성과 데이터 보안을 손상시킬 수 있습니다.
Explanation
AI 응용 프로그램에서 시스템 프롬프트는 AI 응답을 안내하는 사전 처리 지침이나 컨텍스트를 제공합니다. 공격자는 입력을 조작하여 시스템 프롬프트로 포함될 때 무단 작업을 실행하거나 민감한 정보를 공개하도록 AI 모델의 동작을 변경할 수 있습니다.
예제 1: 다음 코드는 Anthropic AI 모델에 대한 시스템 프롬프트 주입을 보여줍니다.
이 예제에서 공격자는 시스템 프롬프트에 대해 검증되지 않은 입력을 조작하여 보안 침해를 일으킬 수 있습니다.
예제 1: 다음 코드는 Anthropic AI 모델에 대한 시스템 프롬프트 주입을 보여줍니다.
client = new Anthropic();
# Simulated attacker's input attempting to inject a malicious system prompt
attacker_input = ...
response = client.messages.create(
model = "claude-3-5-sonnet-20240620",
max_tokens=2048,
system = attacker_input,
messages = [
{"role": "user", "content": "Analyze this dataset for anomalies: ..."}
]
);
...
이 예제에서 공격자는 시스템 프롬프트에 대해 검증되지 않은 입력을 조작하여 보안 침해를 일으킬 수 있습니다.
References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 1427
[2] Standards Mapping - Common Weakness Enumeration Top 25 2024 [13] CWE ID 077
desc.dataflow.javascript.prompt_injection
Abstract
검증되지 않은 데이터를 AI 모델의 시스템 프롬프트로 보낼 경우 공격자가 출력을 조작하거나 무단 작업을 실행하여 시스템 무결성과 데이터 보안을 손상시킬 수 있습니다.
Explanation
AI 응용 프로그램에서 시스템 프롬프트는 AI 응답을 안내하는 사전 처리 지침이나 컨텍스트를 제공합니다. 공격자는 입력을 조작하여 시스템 프롬프트로 포함될 때 무단 작업을 실행하거나 민감한 정보를 공개하도록 AI 모델의 동작을 변경할 수 있습니다.
예제 1: 다음 Python 코드는 OpenAI AI 모델에 대한 시스템 프롬프트 주입을 보여줍니다.
이 예제에서 공격자는 시스템 프롬프트에 대해 검증되지 않은 입력을 조작하여 보안 침해를 일으킬 수 있습니다.
예제 1: 다음 Python 코드는 OpenAI AI 모델에 대한 시스템 프롬프트 주입을 보여줍니다.
client = OpenAI()
# Simulated attacker's input attempting to inject a malicious system prompt
attacker_input = ...
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": attacker_input},
{"role": "user", "content": "Compose a poem that explains the concept of recursion in programming."}
]
)
이 예제에서 공격자는 시스템 프롬프트에 대해 검증되지 않은 입력을 조작하여 보안 침해를 일으킬 수 있습니다.
References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 1427
[2] Standards Mapping - Common Weakness Enumeration Top 25 2024 [13] CWE ID 077
desc.dataflow.python.prompt_injection