Multimodal input without sanitization
ID |
multi-modal-input-without-sanitization |
Severity |
high |
Remediation Complexity |
medium |
Remediation Risk |
low |
Remediation Effort |
medium |
OWASP LLM |
LLM01:2025 — Prompt Injection |
Family |
LLM01 — Prompt Injection |
Asset kind |
ai_agent |
Red-team vectors |
Multi-Modal Injection |
Tags |
ai_security |
The catalogue severity floor is Medium; the platform Severity enum is 4-level (info / low / high / critical) with no medium band, so it maps up to high. Step-3 policy can adjust.
|
Description
A model that accepts image, audio, or video input widens the injection surface: instructions can be smuggled in non-text content (steganographic payloads, embedded prompts, prompt-bearing EXIF/alt-text) that a text-only guardrail never inspects. When the agent’s model declares a non-text modality and no guardrail covers that modality, the multimodal channel is unsanitized.
The rule runs in the post-scan phase over the scan-scoped asset graph: for each ai_agent whose ai_model declares a risky modality (image / audio / video), it diffs that against the modalities covered by the agent’s guardrails; any uncovered modality raises one finding.
Examples
from langchain.agents import initialize_agent
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o") # multimodal: text + image
agent = initialize_agent(tools, llm) # no guardrail covering image
The same agent with a guardrail whose modalities include image produces no finding.
Mitigation / Fix
-
Wire a multimodal guardrail whose modalities overlap the model’s (image / audio / video sanitization, steganography checks) before the content reaches the model.
-
Normalize and re-encode uploaded media; strip embedded metadata (EXIF/XMP) that can carry prompts.
-
Apply the same prompt-injection detection to text extracted from non-text inputs.