CVE-2025-9900: libtiff: arbitrary write via crafted TIFF image
HIGH PoC AVAILABLEA 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.
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?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| vLLM | pip | — | No patch |
| vLLM | pip | — | No patch |
| 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?
What is the attack surface?
What should I do?
1 step-
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?
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:
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
MITRE ATLAS Techniques
AML.T0010.001 AI Software AML.T0029 Denial of AI Service AML.T0049 Exploit Public-Facing Application Compliance Controls Affected
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
- access.redhat.com/errata/RHSA-2025:17651 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:17675 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:17710 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:17738 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:17739 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:17740 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:19113 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:19156 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:19276 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:19906 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:19947 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:20956 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:20998 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:21060 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:21061 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:21062 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:21407 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:21506 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:21507 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:21508 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:21994 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:23078 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:23079 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2025:23080 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2026:0001 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2026:0076 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2026:0077 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2026:0078 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2026:3461 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2026:3462 vendor-advisory x_refsource_REDHAT
- access.redhat.com/errata/RHSA-2026:7504 vendor-advisory x_refsource_REDHAT
- access.redhat.com/security/cve/CVE-2025-9900 vdb-entry x_refsource_REDHAT
- bugzilla.redhat.com/show_bug.cgi issue-tracking x_refsource_REDHAT
- github.com/SexyShoelessGodofWar/LibTiff-4.7.0-Write-What-Where
- gitlab.com/libtiff/libtiff/-/issues/704
- gitlab.com/libtiff/libtiff/-/merge_requests/732
- libtiff.gitlab.io/libtiff/releases/v4.7.1.html
- github.com/SexyShoelessGodofWar/LibTiff-4.7.0-Write-What-Where Exploit
- github.com/w4zu/Debian_security Exploit
Timeline
Related Vulnerabilities
CVE-2024-9053 9.8 vllm: RCE via unsafe pickle deserialization in RPC server
Same package: vllm CVE-2024-11041 9.8 vllm: RCE via unsafe pickle deserialization in MessageQueue
Same package: vllm CVE-2026-25960 9.8 vllm: SSRF allows internal network access
Same package: vllm CVE-2025-47277 9.8 vLLM: RCE via exposed TCPStore in distributed inference
Same package: vllm CVE-2025-32444 9.8 vLLM: RCE via pickle deserialization on ZeroMQ
Same package: vllm