Every CVE Search/ Get API key

CVE-2025-64181

OpenEXR Makes Use of Uninitialized Memory

2.0 LowFix available

OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In versions 3.3.0 through 3.3.5 and 3.4.0 through 3.4.2, while fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory. The issue can result in undefined behavior and/or a potential crash/denial of service. Versions 3.3.6 and 3.4.3 fix the issue.

Attack profile

How easy it is to exploit

Attack vector
Local
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
Low

Exploit likelihood

0.41%Up 0.4 points since Nov 11, 2025
90%50%10%1%

What each source reports

CVE List Score used 2.0

OpenEXR Makes Use of Uninitialized Memory

OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In versions 3.3.0 through 3.3.5 and 3.4.0 through 3.4.2, while fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory. The issue can result in undefined behavior and/or a potential crash/denial of service. Versions 3.3.6 and 3.4.3 fix the issue.

Record
CVE-2025-64181
CVSS 4.0
2.0 LowCVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P
Weakness
CWE-457
Updated
2026-11-02
EUVDEUVD-2025-50828 2.0

OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In versions 3.3.0 through 3.3.5 and 3.4.0 through 3.4.2, while fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory. The issue can result in undefined behavior and/or a potential crash/denial of service. Versions 3.3.6 and 3.4.3 fix the issue.

Record
EUVD-2025-50828
CVSS 4.0
2.0 LowCVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P
Updated
2026-11-02
GitHub AdvisoriesGHSA-3h9h-qfvw-98hq 2.0

OpenEXR Makes Use of Uninitialized Memory

Summary

While fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory (CWE-457). The issue is reproducible with the current OSS-Fuzz harness and a single-file PoC.

Details

Environment:

  • Tooling: valgrind --tool=memcheck --track-origins=yes
  • Target: openexr_exrcheck_fuzzer
  • OS: Ubuntu 20.04.6 LTS focal x86_64
  • openexr version and Git-commit hash: openexr 3.4.2 | commit fd657e8a41e157e5841c7cc2e2a5efe094b069a1 (grafted, HEAD -> main, origin/main, origin/HEAD)

Function: generic_unpack

Possible root cause (based on observed symptoms): The unpacker is branching on bytes in a scratch buffer that were never written because the decode step didn’t fully populate it.

  • The first use flagged is in generic_unpack(). That function reads from the decompressed/expanded pixel buffer to scatter data into the framebuffer. A “conditional jump depends on uninitialised value(s)” means it’s consulting bytes in that buffer before they were written.
  • Valgrind says the uninitialised value “was created by a heap allocation (malloc)”, not the stack: this matches a per-tile/per-scanline decode scratch buffer allocated in exr_decoding_run().

Valgrind Trace (top frames):

==454== Conditional jump or move depends on uninitialised value(s)
==454==    at 0x4539BE: generic_unpack (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x44B85F: exr_decoding_run (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x38BC5F: Imf_4_0::(anonymous namespace)::TileProcess::run_decode(_priv_exr_context_t const*, int, Imf_4_0::FrameBuffer const*, std::__1::vector<Imf_4_0::Slice, std::__1::allocator<Imf_4_0::Slice> > const&) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x388BE1: Imf_4_0::TiledInputFile::Data::readTiles(int, int, int, int, int, int) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x388619: Imf_4_0::TiledInputFile::readTiles(int, int, int, int, int, int) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x353755: Imf_4_0::InputFile::Data::bufferedReadPixels(int, int) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x352286: Imf_4_0::InputFile::readPixels(int) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x3190FA: Imf_4_0::(anonymous namespace)::readMultiPart(Imf_4_0::MultiPartInputFile&, bool, bool) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x314C4D: Imf_4_0::checkOpenEXRFile(char const*, unsigned long, bool, bool, bool) (in /out/openexr_exrcheck_fuzzer)
==454==  Uninitialised value was created by a heap allocation at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)

PoC

In the attached archive, you will find:

  • The executable used for our tests.
  • The testcase used to trigger the bug.

To observe the bug, simply run the OSS-Fuzz helper script:

git clone https://github.com/google/oss-fuzz.git
cd oss-fuzz

python3 infra/helper.py build_image openexr
python3 infra/helper.py build_fuzzers --sanitizer=none openexr
python3 infra/helper.py shell openexr

apt update && apt install -y valgrind
ulimit -n 65535
valgrind --tool=memcheck --track-origins=yes /out/openexr_exrcheck_fuzzer /path/to/poc

Impact

  • Undefined Behavior
  • Potential crash
  • Denial of Service

Credit: Aldo Ristori archive0.zip

Update Note:

Other saved testcases from the fuzzing campaign trigger the same underlying bug, but with a different manifestation. So there is one root cause (missing post-decode validation / zero-init before any unpack), with different call-sites. Below there are several archives, formatted like the previous one, that reproduce the other test cases.

Other observed sinks (distinct manifestations of the same bug):

Deep pointers path: generic_unpack_deep_pointers (deep scanline/tiled)…

Record
GHSA-3h9h-qfvw-98hq
CVSS 4.0
2.0 LowCVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-457
Updated
2026-11-02
NVD 2.0

OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In versions 3.3.0 through 3.3.5 and 3.4.0 through 3.4.2, while fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory. The issue can result in undefined behavior and/or a potential crash/denial of service. Versions 3.3.6 and 3.4.3 fix the issue.

Record
CVE-2025-64181
CVSS 4.0
2.0 LowCVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P/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.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-457
Updated
2026-11-02
OSV 2.0

OpenEXR Makes Use of Uninitialized Memory

OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In versions 3.3.0 through 3.3.5 and 3.4.0 through 3.4.2, while fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory. The issue can result in undefined behavior and/or a potential crash/denial of service. Versions 3.3.6 and 3.4.3 fix the issue.

Record
CVE-2025-64181
CVSS 4.0
2.0 LowCVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P
Weakness
CWE-457
Updated
2026-11-02
OSVDEBIAN-CVE-2025-64181 7.5

OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In versions 3.3.0 through 3.3.5 and 3.4.0 through 3.4.2, while fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory. The issue can result in undefined behavior and/or a potential crash/denial of service. Versions 3.3.6 and 3.4.3 fix the issue.

Record
DEBIAN-CVE-2025-64181
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
Show 14 moreShow less
OSVGHSA-3h9h-qfvw-98hq 2.0

OpenEXR Makes Use of Uninitialized Memory

Summary

While fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory (CWE-457). The issue is reproducible with the current OSS-Fuzz harness and a single-file PoC.

Details

Environment:

  • Tooling: valgrind --tool=memcheck --track-origins=yes
  • Target: openexr_exrcheck_fuzzer
  • OS: Ubuntu 20.04.6 LTS focal x86_64
  • openexr version and Git-commit hash: openexr 3.4.2 | commit fd657e8a41e157e5841c7cc2e2a5efe094b069a1 (grafted, HEAD -> main, origin/main, origin/HEAD)

Function: generic_unpack

Possible root cause (based on observed symptoms): The unpacker is branching on bytes in a scratch buffer that were never written because the decode step didn’t fully populate it.

  • The first use flagged is in generic_unpack(). That function reads from the decompressed/expanded pixel buffer to scatter data into the framebuffer. A “conditional jump depends on uninitialised value(s)” means it’s consulting bytes in that buffer before they were written.
  • Valgrind says the uninitialised value “was created by a heap allocation (malloc)”, not the stack: this matches a per-tile/per-scanline decode scratch buffer allocated in exr_decoding_run().

Valgrind Trace (top frames):

==454== Conditional jump or move depends on uninitialised value(s)
==454==    at 0x4539BE: generic_unpack (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x44B85F: exr_decoding_run (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x38BC5F: Imf_4_0::(anonymous namespace)::TileProcess::run_decode(_priv_exr_context_t const*, int, Imf_4_0::FrameBuffer const*, std::__1::vector<Imf_4_0::Slice, std::__1::allocator<Imf_4_0::Slice> > const&) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x388BE1: Imf_4_0::TiledInputFile::Data::readTiles(int, int, int, int, int, int) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x388619: Imf_4_0::TiledInputFile::readTiles(int, int, int, int, int, int) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x353755: Imf_4_0::InputFile::Data::bufferedReadPixels(int, int) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x352286: Imf_4_0::InputFile::readPixels(int) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x3190FA: Imf_4_0::(anonymous namespace)::readMultiPart(Imf_4_0::MultiPartInputFile&, bool, bool) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x314C4D: Imf_4_0::checkOpenEXRFile(char const*, unsigned long, bool, bool, bool) (in /out/openexr_exrcheck_fuzzer)
==454==  Uninitialised value was created by a heap allocation at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)

PoC

In the attached archive, you will find:

  • The executable used for our tests.
  • The testcase used to trigger the bug.

To observe the bug, simply run the OSS-Fuzz helper script:

git clone https://github.com/google/oss-fuzz.git
cd oss-fuzz

python3 infra/helper.py build_image openexr
python3 infra/helper.py build_fuzzers --sanitizer=none openexr
python3 infra/helper.py shell openexr

apt update && apt install -y valgrind
ulimit -n 65535
valgrind --tool=memcheck --track-origins=yes /out/openexr_exrcheck_fuzzer /path/to/poc

Impact

  • Undefined Behavior
  • Potential crash
  • Denial of Service

Credit: Aldo Ristori archive0.zip

Update Note:

Other saved testcases from the fuzzing campaign trigger the same underlying bug, but with a different manifestation. So there is one root cause (missing post-decode validation / zero-init before any unpack), with different call-sites. Below there are several archives, formatted like the previous one, that reproduce the other test cases.

Other observed sinks (distinct manifestations of the same bug):

Deep pointers path: generic_unpack_deep_pointers (deep scanline/tiled)…

Record
GHSA-3h9h-qfvw-98hq
CVSS 4.0
2.0 LowCVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-457
Updated
2026-11-02
OSVOESA-2025-2710 4.0

OpenEXR security update

OpenEXR is a high dynamic-range (HDR) image file format originally developed by Industrial Light &amp; Magic for use in computer imaging applications.

Security Fix(es):

OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In versions 3.3.0 through 3.3.5 and 3.4.0 through 3.4.2, while fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory. The issue can result in undefined behavior and/or a potential crash/denial of service. Versions 3.3.6 and 3.4.3 fix the issue.(CVE-2025-64181)

Record
OESA-2025-2710
CVSS 3.1
4.0 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Updated
2026-11-02
OSVOESA-2025-2711 4.0

OpenEXR security update

OpenEXR is a high dynamic-range (HDR) image file format originally developed by Industrial Light &amp; Magic for use in computer imaging applications.

Security Fix(es):

OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In versions 3.3.0 through 3.3.5 and 3.4.0 through 3.4.2, while fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory. The issue can result in undefined behavior and/or a potential crash/denial of service. Versions 3.3.6 and 3.4.3 fix the issue.(CVE-2025-64181)

Record
OESA-2025-2711
CVSS 3.1
4.0 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Updated
2026-11-02
OSVOESA-2025-2712 4.0

OpenEXR security update

OpenEXR is a high dynamic-range (HDR) image file format originally developed by Industrial Light &amp; Magic for use in computer imaging applications.

Security Fix(es):

OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In versions 3.3.0 through 3.3.5 and 3.4.0 through 3.4.2, while fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory. The issue can result in undefined behavior and/or a potential crash/denial of service. Versions 3.3.6 and 3.4.3 fix the issue.(CVE-2025-64181)

Record
OESA-2025-2712
CVSS 3.1
4.0 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Updated
2026-11-02
OSVOESA-2025-2713 4.0

OpenEXR security update

OpenEXR is a high dynamic-range (HDR) image file format originally developed by Industrial Light &amp; Magic for use in computer imaging applications.

Security Fix(es):

OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In versions 3.3.0 through 3.3.5 and 3.4.0 through 3.4.2, while fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory. The issue can result in undefined behavior and/or a potential crash/denial of service. Versions 3.3.6 and 3.4.3 fix the issue.(CVE-2025-64181)

Record
OESA-2025-2713
CVSS 3.1
4.0 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Updated
2026-11-02
OSVOESA-2025-2740 4.0

OpenEXR security update

OpenEXR is a high dynamic-range (HDR) image file format originally developed by Industrial Light &amp; Magic for use in computer imaging applications.

Security Fix(es):

OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In versions 3.3.0 through 3.3.5 and 3.4.0 through 3.4.2, while fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory. The issue can result in undefined behavior and/or a potential crash/denial of service. Versions 3.3.6 and 3.4.3 fix the issue.(CVE-2025-64181)

Record
OESA-2025-2740
CVSS 3.1
4.0 MediumCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Updated
2026-11-02
OSVPYSEC-2026-2843 2.0

OpenEXR Makes Use of Uninitialized Memory

Summary

While fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory (CWE-457). The issue is reproducible with the current OSS-Fuzz harness and a single-file PoC.

Details

Environment:

  • Tooling: valgrind --tool=memcheck --track-origins=yes
  • Target: openexr_exrcheck_fuzzer
  • OS: Ubuntu 20.04.6 LTS focal x86_64
  • openexr version and Git-commit hash: openexr 3.4.2 | commit fd657e8a41e157e5841c7cc2e2a5efe094b069a1 (grafted, HEAD -> main, origin/main, origin/HEAD)

Function: generic_unpack

Possible root cause (based on observed symptoms): The unpacker is branching on bytes in a scratch buffer that were never written because the decode step didn’t fully populate it.

  • The first use flagged is in generic_unpack(). That function reads from the decompressed/expanded pixel buffer to scatter data into the framebuffer. A “conditional jump depends on uninitialised value(s)” means it’s consulting bytes in that buffer before they were written.
  • Valgrind says the uninitialised value “was created by a heap allocation (malloc)”, not the stack: this matches a per-tile/per-scanline decode scratch buffer allocated in exr_decoding_run().

Valgrind Trace (top frames):

==454== Conditional jump or move depends on uninitialised value(s)
==454==    at 0x4539BE: generic_unpack (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x44B85F: exr_decoding_run (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x38BC5F: Imf_4_0::(anonymous namespace)::TileProcess::run_decode(_priv_exr_context_t const*, int, Imf_4_0::FrameBuffer const*, std::__1::vector<Imf_4_0::Slice, std::__1::allocator<Imf_4_0::Slice> > const&) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x388BE1: Imf_4_0::TiledInputFile::Data::readTiles(int, int, int, int, int, int) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x388619: Imf_4_0::TiledInputFile::readTiles(int, int, int, int, int, int) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x353755: Imf_4_0::InputFile::Data::bufferedReadPixels(int, int) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x352286: Imf_4_0::InputFile::readPixels(int) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x3190FA: Imf_4_0::(anonymous namespace)::readMultiPart(Imf_4_0::MultiPartInputFile&, bool, bool) (in /out/openexr_exrcheck_fuzzer)
==454==    by 0x314C4D: Imf_4_0::checkOpenEXRFile(char const*, unsigned long, bool, bool, bool) (in /out/openexr_exrcheck_fuzzer)
==454==  Uninitialised value was created by a heap allocation at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)

PoC

In the attached archive, you will find:

  • The executable used for our tests.
  • The testcase used to trigger the bug.

To observe the bug, simply run the OSS-Fuzz helper script:

git clone https://github.com/google/oss-fuzz.git
cd oss-fuzz

python3 infra/helper.py build_image openexr
python3 infra/helper.py build_fuzzers --sanitizer=none openexr
python3 infra/helper.py shell openexr

apt update && apt install -y valgrind
ulimit -n 65535
valgrind --tool=memcheck --track-origins=yes /out/openexr_exrcheck_fuzzer /path/to/poc

Impact

  • Undefined Behavior
  • Potential crash
  • Denial of Service

Credit: Aldo Ristori archive0.zip

Update Note:

Other saved testcases from the fuzzing campaign trigger the same underlying bug, but with a different manifestation. So there is one root cause (missing post-decode validation / zero-init before any unpack), with different call-sites. Below there are several archives, formatted like the previous one, that reproduce the other test cases.

Other observed sinks (distinct manifestations of the same bug):

Deep pointers path: generic_unpack_deep_pointers (deep scanline/tiled)…

Record
PYSEC-2026-2843
CVSS 4.0
2.0 LowCVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVROOT-OS-DEBIAN-12-CVE-2025-64181 7.5

CVE-2025-64181 in openexr - Patched by Root

Root has patched CVE-2025-64181 in the openexr package for Root:Debian:12. Multiple fixed versions available.

Record
ROOT-OS-DEBIAN-12-CVE-2025-64181
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVROOT-OS-DEBIAN-13-CVE-2025-64181 7.5

CVE-2025-64181 in openexr - Patched by Root

Root has patched CVE-2025-64181 in the openexr package for Root:Debian:13. Multiple fixed versions available.

Record
ROOT-OS-DEBIAN-13-CVE-2025-64181
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVUBUNTU-CVE-2025-64181 2.0

OpenEXR provides the specification and reference implementation of the EXR file format, an image storage format for the motion picture industry. In versions 3.3.0 through 3.3.5 and 3.4.0 through 3.4.2, while fuzzing openexr_exrcheck_fuzzer, Valgrind reports a conditional branch depending on uninitialized data inside generic_unpack. This indicates a use of uninitialized memory. The issue can result in undefined behavior and/or a potential crash/denial of service. Versions 3.3.6 and 3.4.3 fix the issue.

Record
UBUNTU-CVE-2025-64181
CVSS 4.0
2.0 LowCVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVCLSA-2026-1775211239 No score

openexr: Fix of 4 CVEs

  • CVE-2025-12495 CVE-2025-12839 CVE-2025-12840: fix heap buffer overflows in the C core decoding pipeline (missing nread validation in exr_read_chunk, missing packed/unpacked size check for uncompressed tiles, missing storage_mode guard in chunk offset computation)
  • CVE-2025-64181: fix use of uninitialized memory caused by incompletely populated scratch buffers (addressed by the same precondition guards in chunk.c and parse_header.c)
Record
CLSA-2026-1775211239
Updated
2026-11-02
OSVopenSUSE-SU-2025:15741-1 No score

libIex-3_4-33-3.4.3-1.1 on GA media

These are all security issues fixed in the libIex-3_4-33-3.4.3-1.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2025:15741-1
Updated
2026-11-02
OSVopenSUSE-SU-2025:20056-1 No score

Security update for openexr

This update for openexr fixes the following issues:

  • CVE-2025-64181: Fixed use of uninitialized memory in function generic_unpack() (bsc#1253233)
Record
openSUSE-SU-2025:20056-1
Updated
2026-11-02
OSVSUSE-SU-2025:21014-1 No score

Security update for openexr

This update for openexr fixes the following issues:

  • CVE-2025-64181: Fixed use of uninitialized memory in function generic_unpack() (bsc#1253233)
Record
SUSE-SU-2025:21014-1
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
openexr
PyPI
3.3.0 up to 3.3.6
3.3.6
openexr
PyPI
3.4.0 up to 3.4.3
3.4.3
openexr
TuxCare:AlmaLinux:9.6
From an advisory covering 4 CVEs
before 3.1.1-3.el9.tuxcare.els2
3.1.1-3.el9.tuxcare.els2
openexr-devel
TuxCare:AlmaLinux:9.6
From an advisory covering 4 CVEs
before 3.1.1-3.el9.tuxcare.els2
3.1.1-3.el9.tuxcare.els2
openexr-libs
TuxCare:AlmaLinux:9.6
From an advisory covering 4 CVEs
before 3.1.1-3.el9.tuxcare.els2
3.1.1-3.el9.tuxcare.els2
openexr
Debian: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 5 moreShow less
3.4.14-0.13.4.6+ds-13.4.6+ds-23.4.6+ds-33.4.6+ds-4
None known
openexr
Debian:13
All versions, plus listed versions
3.1.13-23.4.14-0.13.4.6+ds-13.4.6+ds-23.4.6+ds-33.4.6+ds-4
None known
openexr
Debian:14
before 3.4.6+ds-1, plus listed versions
3.1.13-2
3.4.6+ds-1
openexr
PyPI
3.3.0 up to 3.3.6, plus listed versions
3.3.13.3.23.3.33.3.43.3.5
3.3.6
openexr
PyPI
3.4.0 up to 3.4.3, plus listed versions
3.4.13.4.2
3.4.3
Show 14 moreShow less
Affected packages
PackageAffectedFixed
OpenEXR
openEuler:22.03-LTS-SP4
before 3.1.5-4.oe2203sp4
3.1.5-4.oe2203sp4
OpenEXR
openEuler:24.03-LTS
before 3.1.11-4.oe2403
3.1.11-4.oe2403
OpenEXR
openEuler:24.03-LTS-SP1
before 3.1.11-4.oe2403sp1
3.1.11-4.oe2403sp1
OpenEXR
openEuler:24.03-LTS-SP2
before 3.1.11-4.oe2403sp2
3.1.11-4.oe2403sp2
OpenEXR
openEuler:22.03-LTS-SP3
before 3.1.5-4.oe2203sp3
3.1.5-4.oe2203sp3
openexr
PyPI
3.3.0 up to 3.3.6, 3.4.0 up to 3.4.3, plus listed versions
3.3.13.3.23.3.33.3.43.3.53.4.13.4.2
3.3.63.4.3
openexr
Root:Debian:12
before 3.1.5-5.root.io.8
3.1.5-5.root.io.83.1.5-5.root.io.93.1.5-5.root.io.103.1.5-5.root.io.73.1.5-5.root.io.153.1.5-5.root.io.63.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-openexr
Root:Debian:12
before 3.1.5-5.root.io.8
3.1.5-5.root.io.83.1.5-5.root.io.93.1.5-5.root.io.103.1.5-5.root.io.73.1.5-5.root.io.153.1.5-5.root.io.63.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
openexr
Root:Debian:13
before 3.1.13-2.root.io.6
3.1.13-2.root.io.63.1.13-2.root.io.73.1.13-2.root.io.53.1.13-2.root.io.83.1.13-2.aikido.143.1.13-2.root.io.103.1.13-2.root.io.113.1.13-2.root.io.93.1.13-2.root.io.133.1.13-2.root.io.123.1.13-2.aikido.15
rootio-openexr
Root:Debian:13
before 3.1.13-2.root.io.6
3.1.13-2.root.io.63.1.13-2.root.io.73.1.13-2.root.io.53.1.13-2.root.io.83.1.13-2.aikido.143.1.13-2.root.io.103.1.13-2.root.io.113.1.13-2.root.io.93.1.13-2.root.io.133.1.13-2.root.io.123.1.13-2.aikido.15
openexr
SUSE:Linux Enterprise Server 16.0
before 3.2.2-160000.3.1
3.2.2-160000.3.1
openexr
SUSE:Linux Enterprise Server for SAP applications 16.0
before 3.2.2-160000.3.1
3.2.2-160000.3.1
openexr
openSUSE:Tumbleweed
From an advisory covering 3 CVEs
before 3.4.3-1.1
3.4.3-1.1
openexr
openSUSE:Leap 16.0
before 3.2.2-160000.3.1
3.2.2-160000.3.1

History

History
RecordedChangedSources
affected, facts
affected
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2025-64181 is a low vulnerability (CVSS 2.0) in Academysoftwarefoundation Openexr, published November 10, 2025. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.41%, the 35th percentile. Fixed in openexr 3.3.6.

References

Show 20 moreShow less
This page doesn't list everything

Left out here: the rest of 3 source descriptions. The JSON record has them.

MoveEnter Open