Reino: Input Validation and Representation
Los problemas de validación y representación de entradas están causados por metacaracteres, codificaciones alternativas y representaciones numéricas. Los problemas de seguridad surgen de entradas en las que se confía. Estos problemas incluyen: «desbordamientos de búfer», ataques de «scripts de sitios», "SQL injection" y muchas otras acciones.
Prompt Injection: Persistent
Abstract
Cuando envía datos no validados a solicitudes del sistema en modelos de IA, los atacantes pueden manipular los resultados o ejecutar acciones no autorizadas, lo que comprometería la integridad del sistema y la seguridad de los datos.
Explanation
En las aplicaciones de IA, las indicaciones del sistema proporcionan instrucciones de preprocesamiento o contexto que guía las respuestas de la IA. Los atacantes pueden crear entradas que, cuando se integran como indicaciones del sistema, alteran el comportamiento del modelo de IA para ejecutar operaciones no autorizadas o revelar información confidencial. En el caso de una inyección rápida persistente, esta entrada no confiable generalmente proviene de una base de datos o de un almacén de datos de back-end, en lugar de una solicitud web.
Ejemplo 1: El siguiente código ilustra una inyección de aviso del sistema a un cliente de chat de IA que utiliza Spring AI:
En este ejemplo, el atacante manipula entradas no validadas en un mensaje del sistema, lo que puede provocar una violación de la seguridad.
Ejemplo 1: El siguiente código ilustra una inyección de aviso del sistema a un cliente de chat de IA que utiliza 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();
}
En este ejemplo, el atacante manipula entradas no validadas en un mensaje del sistema, lo que puede provocar una violación de la seguridad.
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
Cuando envía datos no validados a solicitudes del sistema en modelos de IA, los atacantes pueden manipular los resultados o ejecutar acciones no autorizadas, lo que comprometería la integridad del sistema y la seguridad de los datos.
Explanation
En las aplicaciones de IA, las indicaciones del sistema proporcionan instrucciones de preprocesamiento o contexto que guía las respuestas de la IA. Los atacantes pueden crear entradas que, cuando se integran como indicaciones del sistema, alteran el comportamiento del modelo de IA para ejecutar operaciones no autorizadas o revelar información confidencial. En el caso de una inyección rápida persistente, esta entrada no confiable generalmente proviene de una base de datos o de un almacén de datos de back-end, en lugar de una solicitud web.
Ejemplo 1: El siguiente código ilustra una inyección de aviso del sistema en el modelo de IA de Anthropic:
En este ejemplo, el atacante manipula entradas no validadas en un mensaje del sistema, lo que puede provocar una violación de la seguridad.
Ejemplo 1: El siguiente código ilustra una inyección de aviso del sistema en el modelo de IA de 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}
]
);
...
En este ejemplo, el atacante manipula entradas no validadas en un mensaje del sistema, lo que puede provocar una violación de la seguridad.
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
Cuando envía datos no validados a solicitudes del sistema en modelos de IA, los atacantes pueden manipular los resultados o ejecutar acciones no autorizadas, lo que comprometería la integridad del sistema y la seguridad de los datos.
Explanation
En las aplicaciones de IA, las indicaciones del sistema proporcionan instrucciones de preprocesamiento o contexto que guía las respuestas de la IA. Los atacantes pueden crear entradas que, cuando se integran como indicaciones del sistema, alteran el comportamiento del modelo de IA para ejecutar operaciones no autorizadas o revelar información confidencial. En el caso de una inyección rápida persistente, esta entrada no confiable generalmente proviene de una base de datos o de un almacén de datos de back-end, en lugar de una solicitud web.
Ejemplo 1: El siguiente código Python ilustra una inyección de aviso del sistema en el modelo de IA de OpenAI:
En este ejemplo, el atacante manipula entradas no validadas en un mensaje del sistema, lo que puede provocar una violación de la seguridad.
Ejemplo 1: El siguiente código Python ilustra una inyección de aviso del sistema en el modelo de IA de 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}
]
)
En este ejemplo, el atacante manipula entradas no validadas en un mensaje del sistema, lo que puede provocar una violación de la seguridad.
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