界: 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