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