CVE-2025-9900: libtiff: arbitrary write via crafted TIFF image

HIGH PoC AVAILABLE
Published September 23, 2025
CISO Take

A memory corruption bug in libtiff — the C image-parsing library bundled inside Red Hat AI Inference Server container images for vLLM (CUDA/ROCm) and model-opt — lets an attacker who gets a specially crafted TIFF processed trigger a 'write-what-where' condition, writing attacker-controlled data to an arbitrary memory address by declaring an abnormally large image height. This matters for AI shops because any multimodal or document-ingestion pipeline that decodes TIFF files (vision-LLM uploads, OCR preprocessing, RAG document ingestion) inherits the flaw through the container image, not through the model itself. The technical severity is real (CVSS 8.8, network vector, no privileges required) and a public PoC exists, but exploitation requires user interaction, EPSS sits at only the 50th percentile, it is not in CISA KEV, and CISA's SSVC decision is TRACK rather than Act — so this is a patch-on-schedule item, not a fire drill. Action: pull updated rhaiis/vllm-cuda-rhel9, rhaiis/vllm-rocm-rhel9, rhaiis/model-opt-cuda-rhel9 and rhaiis/discovery-ui-rhel9 images per the linked RHSA advisories, and in the meantime reject or pre-validate TIFF dimension metadata on any endpoint that accepts user-supplied images ahead of inference.

Sources: NVD EPSS CISA KEV CISA SSVC access.redhat.com ATLAS

What is the risk?

High technical severity (CVSS 8.8) but moderate real-world urgency: EPSS is only top-50th-percentile, the flaw is not in CISA KEV, and CISA's own SSVC decision is TRACK (monitor, no mandated immediate action). The mitigating factor is required user interaction — an attacker needs their crafted TIFF actually decoded by the target. That bar is trivial to clear in any AI pipeline that auto-processes user- or third-party-supplied images (upload forms, document ingestion, agent tool outputs), which effectively removes the human-in-the-loop protection the CVSS vector assumes. A public PoC exists, lowering the skill floor for the denial-of-service variant even if reliable RCE remains harder. Risk should be treated as elevated specifically for any AI service that decodes untrusted image files server-side.

How does the attack unfold?

Delivery
Attacker sends or uploads a specially crafted TIFF file with an abnormally large height value to an AI service that decodes images (e.g., a vision-LLM upload endpoint or RAG document ingestion path).
AML.T0049
Parsing trigger
libtiff processes the TIFF metadata and enters the vulnerable code path where buffer bounds are miscalculated based on the attacker-controlled height field (CWE-123).
Memory corruption
The write-what-where condition lets attacker-controlled color data be written to an arbitrary memory location inside the inference process.
Impact
The corrupted memory either crashes the inference service, causing denial of service, or — if reliably exploited — allows arbitrary code execution with the service account's privileges inside the container.
AML.T0029

What systems are affected?

Package Ecosystem Vulnerable Range Patched
vLLM pip No patch
88.6K 130 dependents Pushed today 26% patched ~51d to patch Full package profile →
vLLM pip No patch
88.6K 130 dependents Pushed today 26% patched ~51d to patch Full package profile →
compat-libtiff3 No patch
discovery/discovery-ui-rhel9 No patch
libtiff No patch
libtiff-main No patch
mingw-libtiff No patch
rhaiis/model-opt-cuda-rhel9 No patch
spice-client-win No patch

How severe is it?

CVSS 3.1
8.8 / 10
EPSS
0.7%
chance of exploitation in 30 days
Higher than 51% of all CVEs
Exploitation Status
Exploit Available
Exploitation: MEDIUM
Sophistication
Advanced
Exploitation Confidence
medium
Public PoC indexed (trickest/cve)
Composite signal derived from CISA KEV, VulnCheck KEV, CISA SSVC, EPSS, Metasploit, Exploit-DB, trickest/cve, Nuclei templates, and inthewild.io exploitation reports.

What is the attack surface?

AV AC PR UI S C I A
AV Network
AC Low
PR None
UI Required
S Unchanged
C High
I High
A High

What should I do?

1 step
  1. 1) Patch libtiff to the fixed version per the applicable Red Hat advisory (RHSA-2025:17651/17675/17710/17738/17739/17740/19113/19156/19276/19906 depending on product/channel). 2) Rebuild or re-pull updated rhaiis/vllm-cuda-rhel9, rhaiis/vllm-rocm-rhel9, rhaiis/model-opt-cuda-rhel9 and rhaiis/discovery-ui-rhel9 images once patched builds are published. 3) Until patched, validate/cap image height and width metadata before handing files to libtiff-based decoders, and reject files with implausible dimension values. 4) Run image-decoding steps in a sandboxed/least-privilege context (seccomp profile, non-root container user, gVisor/Kata where available) so a crash or RCE doesn't reach the host or other tenants. 5) Monitor inference service logs for unexpected segfaults/crashes in image-decode paths as a detection signal. 6) If TIFF support isn't a business requirement, disable/strip it from the image pipeline entirely.

What does CISA's SSVC say?

Decision Track
Exploitation none
Automatable No
Technical Impact total

Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.

How is it classified?

Which compliance frameworks are affected?

This CVE is relevant to:

EU AI Act
Article 15 - Accuracy, robustness and cybersecurity
NIST AI RMF
MEASURE 2.7 - AI system security and resilience are evaluated and documented
OWASP LLM Top 10
LLM03:2025 - Supply Chain Vulnerabilities

Frequently Asked Questions

What is CVE-2025-9900?

A memory corruption bug in libtiff — the C image-parsing library bundled inside Red Hat AI Inference Server container images for vLLM (CUDA/ROCm) and model-opt — lets an attacker who gets a specially crafted TIFF processed trigger a 'write-what-where' condition, writing attacker-controlled data to an arbitrary memory address by declaring an abnormally large image height. This matters for AI shops because any multimodal or document-ingestion pipeline that decodes TIFF files (vision-LLM uploads, OCR preprocessing, RAG document ingestion) inherits the flaw through the container image, not through the model itself. The technical severity is real (CVSS 8.8, network vector, no privileges required) and a public PoC exists, but exploitation requires user interaction, EPSS sits at only the 50th percentile, it is not in CISA KEV, and CISA's SSVC decision is TRACK rather than Act — so this is a patch-on-schedule item, not a fire drill. Action: pull updated rhaiis/vllm-cuda-rhel9, rhaiis/vllm-rocm-rhel9, rhaiis/model-opt-cuda-rhel9 and rhaiis/discovery-ui-rhel9 images per the linked RHSA advisories, and in the meantime reject or pre-validate TIFF dimension metadata on any endpoint that accepts user-supplied images ahead of inference.

Is CVE-2025-9900 actively exploited?

Proof-of-concept exploit code is publicly available for CVE-2025-9900, increasing the risk of exploitation.

How to fix CVE-2025-9900?

1) Patch libtiff to the fixed version per the applicable Red Hat advisory (RHSA-2025:17651/17675/17710/17738/17739/17740/19113/19156/19276/19906 depending on product/channel). 2) Rebuild or re-pull updated rhaiis/vllm-cuda-rhel9, rhaiis/vllm-rocm-rhel9, rhaiis/model-opt-cuda-rhel9 and rhaiis/discovery-ui-rhel9 images once patched builds are published. 3) Until patched, validate/cap image height and width metadata before handing files to libtiff-based decoders, and reject files with implausible dimension values. 4) Run image-decoding steps in a sandboxed/least-privilege context (seccomp profile, non-root container user, gVisor/Kata where available) so a crash or RCE doesn't reach the host or other tenants. 5) Monitor inference service logs for unexpected segfaults/crashes in image-decode paths as a detection signal. 6) If TIFF support isn't a business requirement, disable/strip it from the image pipeline entirely.

What systems are affected by CVE-2025-9900?

This vulnerability affects the following AI/ML architecture patterns: model serving, multimodal/vision inference pipelines, RAG pipelines, data/document ingestion pipelines.

What is the CVSS score for CVE-2025-9900?

CVE-2025-9900 has a CVSS v3.1 base score of 8.8 (HIGH). The EPSS exploitation probability is 0.74%.

What is the AI security impact?

Affected AI Architectures

model servingmultimodal/vision inference pipelinesRAG pipelinesdata/document ingestion pipelines

MITRE ATLAS Techniques

AML.T0010.001 AI Software
AML.T0029 Denial of AI Service
AML.T0049 Exploit Public-Facing Application

Compliance Controls Affected

EU AI Act: Article 15
NIST AI RMF: MEASURE 2.7
OWASP LLM Top 10: LLM03:2025

What are the technical details?

Original Advisory

A flaw was found in Libtiff. This vulnerability is a "write-what-where" condition, triggered when the library processes a specially crafted TIFF image file. By providing an abnormally large image height value in the file's metadata, an attacker can trick the library into writing attacker-controlled color data to an arbitrary memory location. This memory corruption can be exploited to cause a denial of service (application crash) or to achieve arbitrary code execution with the permissions of the user.

Exploitation Scenario

An attacker uploads or otherwise delivers a TIFF file with a maliciously oversized height value to an AI service that automatically decodes user-supplied images — for example, a vision-enabled LLM inference API, a document-ingestion step in a RAG pipeline, or an internal dataset-curation tool. When libtiff parses the file, the write-what-where flaw lets the attacker's color data be written to an arbitrary memory location inside the inference process. In the simplest case this crashes the container, taking down the inference endpoint (DoS) for all users sharing it; with more exploit engineering, the same primitive could be leveraged for arbitrary code execution under the service account's privileges, potentially exposing model weights, API keys, or other tenants co-located on the same inference host.

Weaknesses (CWE)

CWE-123 — Write-what-where Condition: Any condition where the attacker has the ability to write an arbitrary value to an arbitrary location, often as the result of a buffer overflow.

  • [Architecture and Design] Use a language that provides appropriate memory abstractions.
  • [Operation] Use OS-level preventative functionality integrated after the fact. Not a complete solution.

Source: MITRE CWE corpus.

CVSS Vector

CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

References

Timeline

Published
September 23, 2025
Last Modified
June 29, 2026
First Seen
June 25, 2026

Related Vulnerabilities