RAG Security: Guia completo
Securing Retrieval-Augmented Generation systems against document poisoning, retrieval manipulation, and embedding attacks
Updated: August 2026 • Parte do OWASP LLM08
O que é RAG?
Retrieval-Augmented Generation (RAG) is an AI architecture that combines large language models with external knowledge retrieval. Enterprise LLM deployments now use RAG extensively, making its security critical.
1. Consulta do usuário
O usuário envia uma pergunta ou prompt ao sistema
2. Incorporação
A consulta é convertida em incorporação de vetor
3. Recuperação
Documentos semelhantes recuperados do banco de dados de vetor
4. Aumento
Contexto recuperado adicionado ao prompt
5. Geração
LLM gera resposta usando contexto
The Trust Paradox
RAG systems have a fundamental security flaw: user queries are treated as untrusted input, but retrieved context is implicitly trusted - even though both enter the same prompt. This creates a significant attack surface that traditional security doesn't address.
Vetores de Ataque
1. Envenenamento de Documentos
Injetando conteúdo malicioso em documentos armazenados em a base de conhecimento.
Como funciona
- O invasor carrega ou injeta documentos maliciosos
- Os documentos são incorporados e armazenados no banco de dados vetorial
- Quando uma consulta relevante é feita, o documento envenenado é recuperado
- LLM incorpora contexto malicioso na resposta
Impacto
- 90% success com apenas 5 documentos envenenados
- Funciona até mesmo em bancos de dados com milhões de documentos
- Pode causar resultados prejudiciais, tendenciosos ou incorretos
- Difícil de detectar após a implantação
2. Manipulação de recuperação
Manipular quais documentos são recuperados para influenciar os resultados.
Como funciona
- O invasor cria consultas para acionar recuperação específica
- Explora os pontos fracos do algoritmo de classificação
- Usa similaridade semântica para recuperação de sequestro
- Manipulação entre usuários em sistemas compartilhados
Impacto
- Força a recuperação de conteúdo controlado pelo invasor
- Pode suprimir conteúdo legítimo
- Permite a manipulação direcionada
- Quebra a confiança na qualidade de recuperação
3. Incorporando Inversão
Recuperação de dados originais de incorporações vetoriais.
Como funciona
- Atacante obtém acesso ao banco de dados de vetores
- Usa técnicas de inversão em embeddings
- Reconstrói o texto original a partir de vetores
- Recupera dados incorporados confidenciais
Impacto
- Recover 50-70% of input words
- Expor dados confidenciais em embeddings
- Violações de privacidade
- Problemas de conformidade (GDPR, etc.)
4. Ataques entre locatários
Explorando infraestrutura RAG compartilhada em sistemas multilocatários.
Como funciona
- O invasor é um locatário do sistema compartilhado
- Injeta conteúdo que afeta outros locatários
- Explora banco de dados de vetores compartilhado
- Recupera dados de outros locatários
Impacto
- Vazamento de dados entre locatários
- Acesso não autorizado a dados de concorrentes
- Violações de conformidade
- Danos à reputação
CVEs do mundo real
Vulnerabilidades documentadas em sistemas RAG.
| CVE ID | Produto | Descrição | Gravidade | CVSS |
|---|---|---|---|---|
CVE-2025-68700 |
RAGFlow | RCE via Canvas CodeExec component - untrusted data parsed with eval() | Critical | 9.1 |
CVE-2025-69286 |
RAGFlow | Insecure API key generation allows mutual token derivation (authentication bypass) | Critical | 8.9 |
CVE-2025-25282 |
RAGFlow | IDOR vulnerability allowing cross-tenant access and unauthorized user addition | High | 8.1 |
CVE-2025-69286 |
RAGFlow | Token generation using same URLSafeTimedSerializer for API keys | High | 8.9 |
GHSA-8xw3-v6c2-j84j |
RAGFlow | RCE via stdout parsing in CodeExec component | High | 8.5 |
Estratégias de defesa
1. Segurança da fase de ingestão
Validação de documentos
- Verificar todos os documentos em busca de malware
- Validar formato e estrutura do documento
- Verifique se há padrões de conteúdo suspeitos
- Limitar tipos de documentos permitidos
Filtragem de conteúdo
- Remover PII antes de incorporar
- Filtrar padrões de dados confidenciais
- Bloquear padrões maliciosos conhecidos
- Implementar listas de permissão/bloqueio
Controles de acesso
- Validar fonte de documentos
- Implementar RBAC para ingestão
- Trilha de auditoria para todos os uploads
- Colocar novos documentos em quarentena
2. Segurança da fase de recuperação
Sanitização de consulta
- Validar e higienizar consultas de usuários
- Detecte tentativas de injeção
- Limitar a complexidade da consulta
- Limitação de taxa
Filtragem de recuperação
- Implementar segurança de reclassificação
- Referência cruzada com fontes confiáveis
- Detecte padrões de recuperação anômalos
- Limitar o número de documentos
Isolamento de multilocação
- Namespaces de vetores separados
- Limites rígidos de locatário
- Prevenção de consulta entre locatários
- Criptografia por locatário
3. Segurança da fase de geração
Validação de saída
- Validar resultados do LLM
- Verificar conteúdo injetado
- Verificação de fatos em fontes
- Filtragem de conteúdo
Verificação de contexto
- Verifique a autenticidade do conteúdo recuperado
- Detectar tentativas de manipulação
- Sinalizar padrões de contexto incomuns
- Registre todo o uso de contexto
Human-in-the-Loop
- Revisar saídas sensíveis
- Aprovar ações de alto risco
- Capacidade de substituição manual
- Caminhos de escalonamento
4. Segurança de dados
Criptografia
- Criptografar vetores em repouso
- TLS para dados em trânsito
- Práticas recomendadas de gerenciamento de chaves
- Considere criptografia homomórfica
Segurança de banco de dados vetorial
- Autenticação forte
- Isolamento de rede
- Auditorias regulares de segurança
- Gerenciamento de patches
Proteção de privacidade
- Minimização de dados
- Detecção e remoção de PII
- Políticas de retenção
- Suporte ao direito de exclusão
Metodologia de Teste
Lista de verificação de teste de segurança RAG
- Testes de injeção de documentos
- Testes de manipulação de recuperação
- Incorporação de tentativas de inversão
- Testes de isolamento entre locatários
- Testes de vazamento de PII
- Testes de estouro de contexto
- Testes de manipulação de classificação
- Testes de desvio de autenticação
- Testes de injeção de API
- Testes de negação de serviço
- Testes de exfiltração de dados
- Auditoria de conformidade
Ferramentas de teste
Exemplos de código
Exemplo de validação de documento
```python
import re
from typing import List
class RAGDocumentValidator:
SUSPICIOUS_PATTERNS = [
r"ignore previous instructions",
r"system prompt:",
r"{{.*}}",
r"you are now dan",
]
PII_PATTERNS = [
r"\b\d{3}-\d{2}-\d{4}\b", # SSN
r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b", # Email
r"\b\d{16}\b", # Credit card
]
def validate_document(self, content: str) -> dict:
"""Validate document before embedding."""
warnings = []
blocked = False
# Check for suspicious patterns
for pattern in self.SUSPICIOUS_PATTERNS:
if re.search(pattern, content, re.IGNORECASE):
warnings.append(f"Suspicious pattern: {pattern}")
blocked = True
# Check for PII
for pattern in self.PII_PATTERNS:
if re.search(pattern, content):
warnings.append(f"PII detected: {pattern}")
return {
"valid": not blocked,
"warnings": warnings,
"pii_detected": len([w for w in warnings if "PII" in w]) > 0
}
```