RAG ingest from untrusted source

ID

rag-ingest-from-untrusted-source

Severity

high

Remediation Complexity

medium

Remediation Risk

low

Remediation Effort

medium

OWASP LLM

LLM04:2025 — Data and Model Poisoning

OWASP ASI

ASI06:2026 (secondary ASI08:2026)

Family

LLM04 — Data and Model Poisoning

Red-team vectors

RAG Poisoning, Indirect Injection

Tags

ai_security

Description

A vector store ingests content from an external / untrusted source — a web crawler, a user upload, a mailbox, a public scrape — with no sanitisation or content guardrail on the ingest path. Hostile documents entering the index poison retrieval: the textbook RAG-poisoning door. External ingest with a content guardrail is the recommended pattern, so only the missing-sanitisation case fires.

Examples

docs = WebBaseLoader("https://public-forum.example").load()   (1)
store = Chroma.from_documents(docs, embeddings)
1 Untrusted web ingest with no sanitisation before indexing — flagged.

Wiring a content/sanitisation guardrail on the ingest path, or ingesting only from trusted sources, produces no finding.

Mitigation / Fix

  • Validate, strip, or moderate documents before indexing (a content guardrail on the ingest path).

  • Restrict ingest to trusted sources; quarantine externally sourced content.