CVE-2026-62291
libheif: Heap out of bounds write in libheif uncompressed encoder when writing images with mismatched auxiliary alpha dimensions
CVE-2026-62291 is a medium vulnerability (CVSS 5.3) in Strukturag Libheif, published August 1, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.19%, the 8th percentile. Fixed in libheif 1.23.4-r0.
libheif is a HEIF and AVIF file format decoder and encoder. In 1.23.0 and earlier, a crafted image sequence with a 2x2 primary plane and a 256x256 auxiliary alpha plane can cause attacker-controlled heap corruption during a normal decode and re-encode workflow. Track_Visual::decode_next_image_sample() calls transfer_channel_from_image_as() without checking that the auxiliary alpha dimensions match the main frame. The resulting inconsistent image reaches heif_track_decode_next_image() and then heif_context_encode_image(). In unc_encoder::encode(), unc_encoder_component_interleave::encode_tile() sizes its buffer with compute_tile_data_size_bytes() using the primary dimensions but copies each component using its actual plane dimensions. The oversized alpha plane is therefore copied beyond the allocation, causing an out-of-bounds write; the inverse size mismatch can also produce an out-of-bounds read. This issue is fixed in version 1.23.1.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- Low
Exploit likelihood
What each source reports
CVE List Score used
5.3
libheif: Heap out of bounds write in libheif uncompressed encoder when writing images with mismatched auxiliary alpha dimensions
libheif is a HEIF and AVIF file format decoder and encoder. In 1.23.0 and earlier, a crafted image sequence with a 2x2 primary plane and a 256x256 auxiliary alpha plane can cause attacker-controlled heap corruption during a normal decode and re-encode workflow. Track_Visual::decode_next_image_sample() calls transfer_channel_from_image_as() without checking that the auxiliary alpha dimensions match the main frame. The resulting inconsistent image reaches heif_track_decode_next_image() and then heif_context_encode_image(). In unc_encoder::encode(), unc_encoder_component_interleave::encode_tile() sizes its buffer with compute_tile_data_size_bytes() using the primary dimensions but copies each component using its actual plane dimensions. The oversized alpha plane is therefore copied beyond the allocation, causing an out-of-bounds write; the inverse size mismatch can also produce an out-of-bounds read. This issue is fixed in version 1.23.1.
- Record
CVE-2026-62291- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L - Weakness
- CWE-125, CWE-787
- Updated
- 2026-11-02
EUVDEUVD-2026-62190
5.3
libheif is a HEIF and AVIF file format decoder and encoder. In 1.23.0 and earlier, a crafted image sequence with a 2x2 primary plane and a 256x256 auxiliary alpha plane can cause attacker-controlled heap corruption during a normal decode and re-encode workflow. Track_Visual::decode_next_image_sample() calls transfer_channel_from_image_as() without checking that the auxiliary alpha dimensions match the main frame. The resulting inconsistent image reaches heif_track_decode_next_image() and then heif_context_encode_image(). In unc_encoder::encode(), unc_encoder_component_interleave::encode_tile() sizes its buffer with compute_tile_data_size_bytes() using the primary dimensions but copies each component using its actual plane dimensions. The oversized alpha plane is therefore copied beyond the allocation, causing an out-of-bounds write; the inverse size mismatch can also produce an out-of-bounds read. This issue is fixed in version 1.23.1.
- Record
EUVD-2026-62190- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
NVD
5.3
libheif is a HEIF and AVIF file format decoder and encoder. In 1.23.0 and earlier, a crafted image sequence with a 2x2 primary plane and a 256x256 auxiliary alpha plane can cause attacker-controlled heap corruption during a normal decode and re-encode workflow. Track_Visual::decode_next_image_sample() calls transfer_channel_from_image_as() without checking that the auxiliary alpha dimensions match the main frame. The resulting inconsistent image reaches heif_track_decode_next_image() and then heif_context_encode_image(). In unc_encoder::encode(), unc_encoder_component_interleave::encode_tile() sizes its buffer with compute_tile_data_size_bytes() using the primary dimensions but copies each component using its actual plane dimensions. The oversized alpha plane is therefore copied beyond the allocation, causing an out-of-bounds write; the inverse size mismatch can also produce an out-of-bounds read. This issue is fixed in version 1.23.1.
- Record
CVE-2026-62291- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L - Weakness
- CWE-125, CWE-787
- Updated
- 2026-11-02
OSVBELL-CVE-2026-62291
5.3
- Record
BELL-CVE-2026-62291- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
OSV
5.3
libheif: Heap out of bounds write in libheif uncompressed encoder when writing images with mismatched auxiliary alpha dimensions
libheif is a HEIF and AVIF file format decoder and encoder. In 1.23.0 and earlier, a crafted image sequence with a 2x2 primary plane and a 256x256 auxiliary alpha plane can cause attacker-controlled heap corruption during a normal decode and re-encode workflow. Track_Visual::decode_next_image_sample() calls transfer_channel_from_image_as() without checking that the auxiliary alpha dimensions match the main frame. The resulting inconsistent image reaches heif_track_decode_next_image() and then heif_context_encode_image(). In unc_encoder::encode(), unc_encoder_component_interleave::encode_tile() sizes its buffer with compute_tile_data_size_bytes() using the primary dimensions but copies each component using its actual plane dimensions. The oversized alpha plane is therefore copied beyond the allocation, causing an out-of-bounds write; the inverse size mismatch can also produce an out-of-bounds read. This issue is fixed in version 1.23.1.
- Record
CVE-2026-62291- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L - Weakness
- CWE-125, CWE-787
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-62291
5.3
libheif is a HEIF and AVIF file format decoder and encoder. In 1.23.0 and earlier, a crafted image sequence with a 2x2 primary plane and a 256x256 auxiliary alpha plane can cause attacker-controlled heap corruption during a normal decode and re-encode workflow. Track_Visual::decode_next_image_sample() calls transfer_channel_from_image_as() without checking that the auxiliary alpha dimensions match the main frame. The resulting inconsistent image reaches heif_track_decode_next_image() and then heif_context_encode_image(). In unc_encoder::encode(), unc_encoder_component_interleave::encode_tile() sizes its buffer with compute_tile_data_size_bytes() using the primary dimensions but copies each component using its actual plane dimensions. The oversized alpha plane is therefore copied beyond the allocation, causing an out-of-bounds write; the inverse size mismatch can also produce an out-of-bounds read. This issue is fixed in version 1.23.1.
- Record
DEBIAN-CVE-2026-62291- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
Show 7 moreShow less
OSVUBUNTU-CVE-2026-62291
5.3
libheif is a HEIF and AVIF file format decoder and encoder. In 1.23.0 and earlier, a crafted image sequence with a 2x2 primary plane and a 256x256 auxiliary alpha plane can cause attacker-controlled heap corruption during a normal decode and re-encode workflow. Track_Visual::decode_next_image_sample() calls transfer_channel_from_image_as() without checking that the auxiliary alpha dimensions match the main frame. The resulting inconsistent image reaches heif_track_decode_next_image() and then heif_context_encode_image(). In unc_encoder::encode(), unc_encoder_component_interleave::encode_tile() sizes its buffer with compute_tile_data_size_bytes() using the primary dimensions but copies each component using its actual plane dimensions. The oversized alpha plane is therefore copied beyond the allocation, causing an out-of-bounds write; the inverse size mismatch can also produce an out-of-bounds read. This issue is fixed in version 1.23.1.
- Record
UBUNTU-CVE-2026-62291- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11416-1 No score
gdk-pixbuf-loader-libheif-1.23.1-1.1 on GA media
These are all security issues fixed in the gdk-pixbuf-loader-libheif-1.23.1-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11416-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21644-1 No score
Security update for libheif
This update for libheif fixes the following issues:
Update to version 1.23.1 (jsc#PED-16355).
Security issues fixed:
- CVE-2026-62289: integer underflow in Fraction constructor via double clap transform application (bsc#1273079).
- CVE-2026-62291: heap out-of-bounds write in the uncompressed encoder when writing images with mismatched auxiliary alpha dimensions (bsc#1273080).
- CVE-2026-62292: out-of-bounds read in uncompressed unci tile range slicing (bsc#1273081).
- CVE-2026-62377: reachable assertion in
HeifContext::get_track()aborts on a valid-but-empty HEIF sequence file (bsc#1273082). - Heap out-of-bounds write in the uncompressed encoder for RRGGBB images with interleaved bit-depth
<= 8(bsc#1273083).
Changes for libheif:
- Version 1.23.1
- FFmpeg decoder plugin gains AV1, VVC, JPEG, and JPEG 2000/HTJ2K decoding.
- SVT-AV1 encoder: new
tune=iqandms-ssimtune parameters. - C++ API: added getters/setters for the CLLI and MDCV HDR metadata boxes.
- Sequence decoder now scales the alpha auxiliary track to the main image size.
- Fixed pixi box writing for multi-channel images.
- Corrected the placement of the TAI
clock_typefield into the top 2 bits. - Empty/unset plugin directory is no longer scanned.
- Record
openSUSE-SU-2026:21644-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:23320-1 No score
Security update for libheif
This update for libheif fixes the following issues:
Update to version 1.23.1 (jsc#PED-16355).
Security issues fixed:
- CVE-2026-62289: integer underflow in Fraction constructor via double clap transform application (bsc#1273079).
- CVE-2026-62291: heap out-of-bounds write in the uncompressed encoder when writing images with mismatched auxiliary alpha dimensions (bsc#1273080).
- CVE-2026-62292: out-of-bounds read in uncompressed unci tile range slicing (bsc#1273081).
- CVE-2026-62377: reachable assertion in
HeifContext::get_track()aborts on a valid-but-empty HEIF sequence file (bsc#1273082). - Heap out-of-bounds write in the uncompressed encoder for RRGGBB images with interleaved bit-depth
<= 8(bsc#1273083).
Changes for libheif:
- Version 1.23.1
- FFmpeg decoder plugin gains AV1, VVC, JPEG, and JPEG 2000/HTJ2K decoding.
- SVT-AV1 encoder: new
tune=iqandms-ssimtune parameters. - C++ API: added getters/setters for the CLLI and MDCV HDR metadata boxes.
- Sequence decoder now scales the alpha auxiliary track to the main image size.
- Fixed pixi box writing for multi-channel images.
- Corrected the placement of the TAI
clock_typefield into the top 2 bits. - Empty/unset plugin directory is no longer scanned.
- Record
SUSE-SU-2026:23320-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:3597-1 No score
Security update for libheif
This update for libheif fixes the following issues:
Update to version 1.23.1 (jsc#PED-16355).
Security issues fixed:
- CVE-2026-62289: integer underflow in Fraction constructor via double clap transform application (bsc#1273079).
- CVE-2026-62291: heap out-of-bounds write in the uncompressed encoder when writing images with mismatched auxiliary alpha dimensions (bsc#1273080).
- CVE-2026-62292: out-of-bounds read in uncompressed unci tile range slicing (bsc#1273081).
- CVE-2026-62377: reachable assertion in
HeifContext::get_track()aborts on a valid-but-empty HEIF sequence file (bsc#1273082). - Heap out-of-bounds write in the uncompressed encoder for RRGGBB images with interleaved bit-depth
<= 8(bsc#1273083).
Changes for libheif:
- Version 1.23.1
- FFmpeg decoder plugin gains AV1, VVC, JPEG, and JPEG 2000/HTJ2K decoding.
- SVT-AV1 encoder: new
tune=iqandms-ssimtune parameters. - C++ API: added getters/setters for the CLLI and MDCV HDR metadata boxes.
- Sequence decoder now scales the alpha auxiliary track to the main image size.
- Fixed pixi box writing for multi-channel images.
- Corrected the placement of the TAI
clock_typefield into the top 2 bits. - Empty/unset plugin directory is no longer scanned.
- Record
SUSE-SU-2026:3597-1- Updated
- 2026-11-02
OSVUSN-8683-1 No score
libheif vulnerabilities
Feng Ning discovered that libheif incorrectly handled certain image transforms. A remote attacker could possibly use this issue to cause a denial of service. This issue only affected Ubuntu 18.04 LTS, Ubuntu 20.04 LTS, and Ubuntu 22.04 LTS. (CVE-2026-62289)
Ali Firas discovered that libheif incorrectly handled certain images. An attacker could possibly use this issue to cause a denial of service or execute arbitrary code. This issue only affected Ubuntu 24.04 LTS. (CVE-2026-62291)
- Record
USN-8683-1- Updated
- 2026-11-02
OSVUSN-8774-1 No score
libheif vulnerabilities
Ali Firas discovered that libheif incorrectly handled certain images. An attacker could possibly use this issue to cause a denial of service or execute arbitrary code. (CVE-2026-62291)
Dmitrijs Trizna discovered that libheif incorrectly handled certain image sequences. An attacker could possibly use this issue to cause a denial of service. (CVE-2026-62377)
- Record
USN-8774-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
libheifAlpaquita:stream |
1.20.2-r2 up to 1.23.4-r0 | 1.23.4-r0 |
libheifDebian:14 |
before 1.23.1-1, plus listed versions 1.19.8-11.20.1-11.20.2-11.20.2-21.21.2-11.21.2-21.21.2-31.21.2-4 |
1.23.1-1 |
libheifSUSE:Linux Enterprise Server 16.0 |
before 1.23.1-160000.1.1 | 1.23.1-160000.1.1 |
libheifSUSE:Linux Enterprise Server for SAP applications 16.0 |
before 1.23.1-160000.1.1 | 1.23.1-160000.1.1 |
libheifSUSE:Linux Enterprise Module for Desktop Applications 15 SP7 |
before 1.23.1-150700.3.18.1 | 1.23.1-150700.3.18.1 |
libheifSUSE:Linux Enterprise Module for Package Hub 15 SP7 |
before 1.23.1-150700.3.18.1 | 1.23.1-150700.3.18.1 |
libheifUbuntu:24.04:LTS |
before 1.17.6-1ubuntu4.8, plus listed versions 1.16.2-2ubuntu11.17.1-1ubuntu21.17.1-1ubuntu31.17.4-1ubuntu11.17.6-1ubuntu1 Show 10 moreShow less1.17.6-1ubuntu21.17.6-1ubuntu31.17.6-1ubuntu41.17.6-1ubuntu4.11.17.6-1ubuntu4.21.17.6-1ubuntu4.31.17.6-1ubuntu4.41.17.6-1ubuntu4.51.17.6-1ubuntu4.61.17.6-1ubuntu4.7 |
1.17.6-1ubuntu4.8 |
libheifUbuntu:26.04:LTS |
before 1.21.2-3ubuntu0.5, plus listed versions 1.20.2-11.20.2-21.20.2-2build11.20.2-2build21.20.2-2ubuntu1 Show 6 moreShow less1.21.2-11.21.2-31.21.2-3ubuntu0.11.21.2-3ubuntu0.21.21.2-3ubuntu0.31.21.2-3ubuntu0.4 |
1.21.2-3ubuntu0.5 |
libheifUbuntu:Pro:18.04:LTS |
before 1.1.0-2ubuntu0.1~esm4, plus listed versions 1.1.0-21.1.0-2ubuntu0.1~esm11.1.0-2ubuntu0.1~esm21.1.0-2ubuntu0.1~esm3 |
1.1.0-2ubuntu0.1~esm4 |
libheifUbuntu:Pro:20.04:LTS |
before 1.6.1-1ubuntu0.1~esm4, plus listed versions 1.5.0-1build11.5.1-11.5.1-1build11.6.0-11.6.1-1 Show 4 moreShow less1.6.1-1build11.6.1-1ubuntu0.1~esm11.6.1-1ubuntu0.1~esm21.6.1-1ubuntu0.1~esm3 |
1.6.1-1ubuntu0.1~esm4 |
libheifUbuntu:Pro:22.04:LTS |
before 1.12.0-2ubuntu0.1~esm4, plus listed versions 1.11.0-11.12.0-2build11.12.0-2ubuntu0.1~esm11.12.0-2ubuntu0.1~esm21.12.0-2ubuntu0.1~esm3 |
1.12.0-2ubuntu0.1~esm4 |
libheifopenSUSE:Tumbleweed |
before 1.23.1-1.1 | 1.23.1-1.1 |
libheifopenSUSE:Leap 16.0 |
before 1.23.1-160000.1.1 | 1.23.1-160000.1.1 |
History
| When | Changed | Sources |
|---|---|---|
| 2026-11-02 | created | CVE List, EUVD, NVD, OSV |
References
github.com/strukturag/libheif/security/advisories/GHSA-xpw3-9rhw-482x
github.com/strukturag/libheif/commit/ac5521ad50399885de96bb6a0733a5d2442740f9
github.com/strukturag/libheif/releases/tag/v1.23.1
docs.bell-sw.com/security/cves/CVE-2026-62291
github.com/CVEProject/cvelistV5/tree/main/cves/2026/62xxx/CVE-2026-62291.json
nvd.nist.gov/vuln/detail/CVE-2026-62291
Show 18 moreShow less
security-tracker.debian.org/tracker/CVE-2026-62291
suse.com/support/update/announcement/2026/suse-su-202623320-1
bugzilla.suse.com/1273079
bugzilla.suse.com/1273080
bugzilla.suse.com/1273081
bugzilla.suse.com/1273082
bugzilla.suse.com/1273083
suse.com/security/cve/CVE-2026-62289
suse.com/security/cve/CVE-2026-62291
suse.com/security/cve/CVE-2026-62292
suse.com/security/cve/CVE-2026-62377
suse.com/support/update/announcement/2026/suse-su-20263597-1
ubuntu.com/security/CVE-2026-62291
cve.org/CVERecord?id=CVE-2026-62291
ubuntu.com/security/notices/USN-8683-1
ubuntu.com/security/notices/USN-8774-1
ubuntu.com/security/CVE-2026-62289
ubuntu.com/security/CVE-2026-62377