CVE-2026-112393: Pillow: Heap buffer overflow in _tiffWriteProc when saving TIFF to BytesIO

Published Oct 19, 2026
·
Updated

Pillow is a Python imaging library. From 2.0.0 until 13.0.0, Pillow has a heap buffer overflow and stale-heap disclosure in tiffWriteProc when saving compressed TIFF data through libtiff to a target without a usable fileno(), such as BytesIO. The callback sizes its allocation from the prior buffer size instead of the current write position, allowing an attacker-controlled out-of-line TIFF tag or retained ICC profile to be copied beyond the allocation after libtiff seeks forward. This overflow can crash the process and may allow code execution. Independently, unwritten alignment gaps in compressed TIFF output larger than 64 KiB can disclose stale heap bytes without a crafted tag. File paths and targets with real file descriptors are unaffected. This issue is fixed in version 13.0.0.

Affected Software

1 affected component
pypi/Pillow>=2.0.0<13.0.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade Pillow to a version that resolves this vulnerability.

    Fixed in 13.0.0

Event History

Oct 19, 2026
CVE Published
via MITRE·08:46 PM
Data Sourced
via MITRE·08:46 PM
DescriptionWeakness
Data Sourced
via NVD·09:17 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Which applications are exposed to this issue?

Applications using Pillow versions 2.0.0 through versions before 13.0.0 are exposed when they save compressed TIFF output through libtiff to a target without a usable file descriptor, such as a BytesIO object. Saving to file paths or targets with real file descriptors is unaffected.

2

What conditions are needed to trigger the overflow?

The overflow requires compressed TIFF output to a no-fileno target and attacker-controlled out-of-line TIFF tag data or a retained ICC profile. It occurs after libtiff seeks forward and the callback allocates based on the previous buffer size rather than the current write position.

3

Can data be disclosed without a crafted TIFF tag?

Yes. Compressed TIFF output with unwritten alignment gaps larger than 64 KiB can disclose stale heap bytes independently of the crafted-tag overflow condition.

4

What should be done if upgrading cannot happen immediately?

Avoid saving compressed TIFF data to BytesIO or other targets without a usable fileno(). Use file paths or output targets backed by real file descriptors until Pillow can be updated to version 13.0.0.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203