Reino: Input Validation and Representation

Problemas de validação e representação da entrada são causados por metacaracteres, codificações alternativas e representações numéricas. Confiar na entrada resulta em problemas de segurança. Os problemas incluem: “Buffer Overflows”, ataques de “Cross-Site Scripting”, “SQL Injection”, entre outros.

Prompt Injection: Persistent

Abstract
O envio de dados não validados para prompts de função do sistema em modelos de IA permite que os invasores manipulem resultados ou executem ações não autorizadas, comprometendo a integridade do sistema e a segurança dos dados.
Explanation
Em aplicativos de IA, os prompts do sistema fornecem instruções de pré-processamento ou contexto que orientam as respostas da IA. Os invasores podem criar entradas que, quando incorporadas como prompts do sistema, alteram o comportamento do modelo de IA para executar operações não autorizadas ou divulgar informações confidenciais. No caso da injeção de prompt persistente, essa entrada não confiável normalmente vem de um banco de dados ou de um armazenamento de dados de back-end, e não de uma solicitação da web.

Exemplo 1: O código a seguir ilustra uma injeção de prompt do sistema em um cliente de bate-papo de IA que usa o Spring AI:

@GetMapping("/prompt_injection_persistent")
String generation(String userInput1, ...) {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users WHERE ...");
String userName = "";

if (rs != null) {
rs.next();
userName = rs.getString("userName");
}

return this.clientBuilder.build().prompt()
.system("Assist the user " + userName)
.user(userInput1)
.call()
.content();
}


Neste exemplo, o invasor manipula entradas não validadas em um prompt do sistema, o que pode levar a uma violação de segurança.
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_persistent
Abstract
O envio de dados não validados para prompts de função do sistema em modelos de IA permite que os invasores manipulem resultados ou executem ações não autorizadas, comprometendo a integridade do sistema e a segurança dos dados.
Explanation
Em aplicativos de IA, os prompts do sistema fornecem instruções de pré-processamento ou contexto que orientam as respostas da IA. Os invasores podem criar entradas que, quando incorporadas como prompts do sistema, alteram o comportamento do modelo de IA para executar operações não autorizadas ou divulgar informações confidenciais. No caso da injeção de prompt persistente, essa entrada não confiável normalmente vem de um banco de dados ou de um armazenamento de dados de back-end, e não de uma solicitação da web.

Exemplo 1: O código a seguir ilustra uma injeção de prompt do sistema no modelo de IA do Anthropic:

client = new Anthropic();

# Simulated attacker's input attempting to inject a malicious system prompt
attacker_query = ...;
attacker_name = db.qyery('SELECT name FROM user_profiles WHERE ...');

response = client.messages.create(
model = "claude-3-5-sonnet-20240620",
max_tokens=2048,
system = "Provide assistance to the user " + attacker_name,
messages = [
{"role": "user", "content": attacker_query}
]
);
...


Neste exemplo, o invasor manipula entradas não validadas em um prompt do sistema, o que pode levar a uma violação de segurança.
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_persistent
Abstract
O envio de dados não validados para prompts de função do sistema em modelos de IA permite que os invasores manipulem resultados ou executem ações não autorizadas, comprometendo a integridade do sistema e a segurança dos dados.
Explanation
Em aplicativos de IA, os prompts do sistema fornecem instruções de pré-processamento ou contexto que orientam as respostas da IA. Os invasores podem criar entradas que, quando incorporadas como prompts do sistema, alteram o comportamento do modelo de IA para executar operações não autorizadas ou divulgar informações confidenciais. No caso da injeção de prompt persistente, essa entrada não confiável normalmente vem de um banco de dados ou de um armazenamento de dados de back-end, e não de uma solicitação da web.

Exemplo 1: O código Python a seguir ilustra uma injeção de prompt do sistema no modelo de IA do OpenAI:

client = OpenAI()

# Simulated attacker's input attempting to inject a malicious system prompt
attacker_name = cursor.fetchone()['name']
attacker_query = ...

completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "Provide assistance to the user " + attacker_name},
{"role": "user", "content": attacker_query}
]
)


Neste exemplo, o invasor manipula entradas não validadas em um prompt do sistema, o que pode levar a uma violação de segurança.
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_persistent