CVE-2026-84449
libheif hOp_RGB24_32_to_YCbCr Memory Access Error / SEGV
libheif is a HEIF and AVIF file format decoder and encoder. Prior to 1.19.6, Op_RGB24_32_to_YCbCr::convert_colorspace() stores image-plane strides in an integer width that can overflow for extremely large RGB images created through heif_image_create() and heif_image_add_plane(). The resulting wrapped stride causes the conversion loop in libheif/color-conversion/rgb2yuv.cc to compute an invalid input pointer and read beyond the allocated interleaved plane while heif_context_encode_image() performs RGB-to-YCbCr conversion. This can crash the encoding process. This issue is fixed in version 1.19.6.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- Low
Exploit likelihood
What each source reports
CVE List Score used
3.7
libheif hOp_RGB24_32_to_YCbCr Memory Access Error / SEGV
libheif is a HEIF and AVIF file format decoder and encoder. Prior to 1.19.6, Op_RGB24_32_to_YCbCr::convert_colorspace() stores image-plane strides in an integer width that can overflow for extremely large RGB images created through heif_image_create() and heif_image_add_plane(). The resulting wrapped stride causes the conversion loop in libheif/color-conversion/rgb2yuv.cc to compute an invalid input pointer and read beyond the allocated interleaved plane while heif_context_encode_image() performs RGB-to-YCbCr conversion. This can crash the encoding process. This issue is fixed in version 1.19.6.
- Record
CVE-2026-84449- CVSS 3.1
- 3.7 Low
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-190, CWE-125
- Updated
- 2026-11-02
EUVDEUVD-2026-83025
3.7
libheif is a HEIF and AVIF file format decoder and encoder. Prior to 1.19.6, Op_RGB24_32_to_YCbCr::convert_colorspace() stores image-plane strides in an integer width that can overflow for extremely large RGB images created through heif_image_create() and heif_image_add_plane(). The resulting wrapped stride causes the conversion loop in libheif/color-conversion/rgb2yuv.cc to compute an invalid input pointer and read beyond the allocated interleaved plane while heif_context_encode_image() performs RGB-to-YCbCr conversion. This can crash the encoding process. This issue is fixed in version 1.19.6.
- Record
EUVD-2026-83025- CVSS 3.1
- 3.7 Low
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L - Updated
- 2026-11-02
NVD
3.7
libheif is a HEIF and AVIF file format decoder and encoder. Prior to 1.19.6, Op_RGB24_32_to_YCbCr::convert_colorspace() stores image-plane strides in an integer width that can overflow for extremely large RGB images created through heif_image_create() and heif_image_add_plane(). The resulting wrapped stride causes the conversion loop in libheif/color-conversion/rgb2yuv.cc to compute an invalid input pointer and read beyond the allocated interleaved plane while heif_context_encode_image() performs RGB-to-YCbCr conversion. This can crash the encoding process. This issue is fixed in version 1.19.6.
- Record
CVE-2026-84449- CVSS 3.1
- 3.7 Low
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-125, CWE-190
- Updated
- 2026-11-02
OSV
3.7
libheif hOp_RGB24_32_to_YCbCr Memory Access Error / SEGV
libheif is a HEIF and AVIF file format decoder and encoder. Prior to 1.19.6, Op_RGB24_32_to_YCbCr::convert_colorspace() stores image-plane strides in an integer width that can overflow for extremely large RGB images created through heif_image_create() and heif_image_add_plane(). The resulting wrapped stride causes the conversion loop in libheif/color-conversion/rgb2yuv.cc to compute an invalid input pointer and read beyond the allocated interleaved plane while heif_context_encode_image() performs RGB-to-YCbCr conversion. This can crash the encoding process. This issue is fixed in version 1.19.6.
- Record
CVE-2026-84449- CVSS 3.1
- 3.7 Low
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-125, CWE-190
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-84449
3.7
libheif is a HEIF and AVIF file format decoder and encoder. Prior to 1.19.6, Op_RGB24_32_to_YCbCr::convert_colorspace() stores image-plane strides in an integer width that can overflow for extremely large RGB images created through heif_image_create() and heif_image_add_plane(). The resulting wrapped stride causes the conversion loop in libheif/color-conversion/rgb2yuv.cc to compute an invalid input pointer and read beyond the allocated interleaved plane while heif_context_encode_image() performs RGB-to-YCbCr conversion. This can crash the encoding process. This issue is fixed in version 1.19.6.
- Record
DEBIAN-CVE-2026-84449- CVSS 3.1
- 3.7 Low
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-84449
3.7
libheif is a HEIF and AVIF file format decoder and encoder. Prior to 1.19.6, Op_RGB24_32_to_YCbCr::convert_colorspace() stores image-plane strides in an integer width that can overflow for extremely large RGB images created through heif_image_create() and heif_image_add_plane(). The resulting wrapped stride causes the conversion loop in libheif/color-conversion/rgb2yuv.cc to compute an invalid input pointer and read beyond the allocated interleaved plane while heif_context_encode_image() performs RGB-to-YCbCr conversion. This can crash the encoding process. This issue is fixed in version 1.19.6.
- Record
UBUNTU-CVE-2026-84449- CVSS 3.1
- 3.7 Low
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L - Updated
- 2026-11-02
Show 4 moreShow less
OSVopenSUSE-SU-2026:11921-1 No score
gdk-pixbuf-loader-libheif-1.23.5-2.1 on GA media
These are all security issues fixed in the gdk-pixbuf-loader-libheif-1.23.5-2.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11921-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:22052-1 No score
Security update for libheif
This update for libheif fixes the following issues:
- CVE-2026-84449: hOp_RGB24_32_to_YCbCr Memory Access Error / SEGV (bsc#1281829).
- AV1/libaom path allows allocation before libheif rejects mismatched coded dimensions (bsc#1281953).
- Caller-configured security limits not enforced for MINI-box parsing (bsc#1281952).
- Heap out-of-bounds read in libheif alpha compositing via mismatched per-channel bit depths (bsc#1281951).
- Heap-use-after-free and double free in ImageItem::encode_to_bitstream_and_boxes (bsc#1281949).
- Incomplete OpenJPEG pre-decode security limits allow unsafe decode through the public API (bsc#1281954).
- JPEG 2000 pclr zero-column allocation amplification bypasses max_total_memory (bsc#1281950).
- Out-of-bounds heap read in unc_encoder_rgb_pixel_interleave (bsc#1281948).
Changes for libheif:
- update to 1.23.5:
- (GHSA-v8qw-hwjv-44hw) Memory exhaustion through a mismatch between the container and the bitstream image size. A crafted image can declare a small size in its ispe property while the bitstream declares a much larger coded frame. The container-level checks used the ispe size, so the oversized bitstream reached the decoder, which allocated a frame buffer for the in-band size before libheif rejected the mismatch. The advisory demonstrated this for AV1 with the libaom backend (a 351-byte AVIF declaring 64x64 but coding up to 27648x27648, allocating hundreds of MB to more than 10 GB), but the same class affects every codec whose real frame size lives in the bitstream. The coded size is now checked against max_image_size_pixels in the codec- independent decode path, before any bytes reach a decoder plugin: all AV1 sequence headers, all HEVC/AVC/VVC SPS NAL units (including those carried in the item data, not only the ones in the configuration record), the JPEG SOF marker and the JPEG 2000 SIZ reference grid are scanned for the largest coded size. (high)
- (GHSA-qwpf-5wf7-r996) Heap use-after-free and double free when encoding an image that carries a TAI timestamp, including transcoding a file with an itai property. ImageDescription shallow-copied its raw heif_tai_timestamp_packet pointer, and a temporary in ImageItem::encode_to_bitstream_and_boxes() freed the packet while the item and the source image still held it. The timestamp is now stored by value. (medium)
- (GHSA-9c75-9g8r-4728) Memory amplification through a JPEG 2000 pclr box declaring zero palette columns. The entry-count bound was skipped for zero columns, so an 11-byte box allocated 65,535 empty palette entries, and nested j2kH containers could repeat this within the child and nesting limits: a 3 KB file reached about 330 MB RSS, none of it charged to max_total_memory. Zero columns are rejected (ISO/IEC 15444-1 requires 1 to 255), the byte bound is unconditional, and the palette storage is charged to the memory limits. (medium)
- (GHSA-r7gr-2xm2-23wf) Heap out-of-bounds read in alpha compositing for uncompressed (unci) images whose colour planes have different bit depths. Op_flatten_alpha_plane read every plane through the sample type of the first colour plane, so an 8-bit blue plane next to 16-bit red and green planes was read with a halved stride past its end, and the bytes ended up in the composited output. ColorState now tracks one bit depth per plane, and the operator declines mixed sample widths at planning time. (medium)
- (GHSA-q492-cfcm-895h) The OpenJPEG decoder plugin's pre-decode size check bounded the JPEG 2000 window span (x1-x0)*(y1-y0) but not the absolute reference-grid coordinates, so a codestream with a 17-pixel window on a grid near the 32-bit boundary reached opj_decode(). Against OpenJPEG 2.3.1 this produced a heap-buffer-overflow write inside OpenJPEG (the class of CVE-2020-6851); OpenJPEG 2.5.4 rejects the input. The reference-grid area is now bounded as well. (low)
- (GHSA-qfj5-c4pq-q998) Heap out-of-bounds read in the uncompressed encoder when an…
- Record
openSUSE-SU-2026:22052-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:24205-1 No score
Security update for libheif
This update for libheif fixes the following issues:
- CVE-2026-84449: hOp_RGB24_32_to_YCbCr Memory Access Error / SEGV (bsc#1281829).
- AV1/libaom path allows allocation before libheif rejects mismatched coded dimensions (bsc#1281953).
- Caller-configured security limits not enforced for MINI-box parsing (bsc#1281952).
- Heap out-of-bounds read in libheif alpha compositing via mismatched per-channel bit depths (bsc#1281951).
- Heap-use-after-free and double free in ImageItem::encode_to_bitstream_and_boxes (bsc#1281949).
- Incomplete OpenJPEG pre-decode security limits allow unsafe decode through the public API (bsc#1281954).
- JPEG 2000 pclr zero-column allocation amplification bypasses max_total_memory (bsc#1281950).
- Out-of-bounds heap read in unc_encoder_rgb_pixel_interleave (bsc#1281948).
Changes for libheif:
- update to 1.23.5:
- (GHSA-v8qw-hwjv-44hw) Memory exhaustion through a mismatch between the container and the bitstream image size. A crafted image can declare a small size in its ispe property while the bitstream declares a much larger coded frame. The container-level checks used the ispe size, so the oversized bitstream reached the decoder, which allocated a frame buffer for the in-band size before libheif rejected the mismatch. The advisory demonstrated this for AV1 with the libaom backend (a 351-byte AVIF declaring 64x64 but coding up to 27648x27648, allocating hundreds of MB to more than 10 GB), but the same class affects every codec whose real frame size lives in the bitstream. The coded size is now checked against max_image_size_pixels in the codec- independent decode path, before any bytes reach a decoder plugin: all AV1 sequence headers, all HEVC/AVC/VVC SPS NAL units (including those carried in the item data, not only the ones in the configuration record), the JPEG SOF marker and the JPEG 2000 SIZ reference grid are scanned for the largest coded size. (high)
- (GHSA-qwpf-5wf7-r996) Heap use-after-free and double free when encoding an image that carries a TAI timestamp, including transcoding a file with an itai property. ImageDescription shallow-copied its raw heif_tai_timestamp_packet pointer, and a temporary in ImageItem::encode_to_bitstream_and_boxes() freed the packet while the item and the source image still held it. The timestamp is now stored by value. (medium)
- (GHSA-9c75-9g8r-4728) Memory amplification through a JPEG 2000 pclr box declaring zero palette columns. The entry-count bound was skipped for zero columns, so an 11-byte box allocated 65,535 empty palette entries, and nested j2kH containers could repeat this within the child and nesting limits: a 3 KB file reached about 330 MB RSS, none of it charged to max_total_memory. Zero columns are rejected (ISO/IEC 15444-1 requires 1 to 255), the byte bound is unconditional, and the palette storage is charged to the memory limits. (medium)
- (GHSA-r7gr-2xm2-23wf) Heap out-of-bounds read in alpha compositing for uncompressed (unci) images whose colour planes have different bit depths. Op_flatten_alpha_plane read every plane through the sample type of the first colour plane, so an 8-bit blue plane next to 16-bit red and green planes was read with a halved stride past its end, and the bytes ended up in the composited output. ColorState now tracks one bit depth per plane, and the operator declines mixed sample widths at planning time. (medium)
- (GHSA-q492-cfcm-895h) The OpenJPEG decoder plugin's pre-decode size check bounded the JPEG 2000 window span (x1-x0)*(y1-y0) but not the absolute reference-grid coordinates, so a codestream with a 17-pixel window on a grid near the 32-bit boundary reached opj_decode(). Against OpenJPEG 2.3.1 this produced a heap-buffer-overflow write inside OpenJPEG (the class of CVE-2020-6851); OpenJPEG 2.5.4 rejects the input. The reference-grid area is now bounded as well. (low)
- (GHSA-qfj5-c4pq-q998) Heap out-of-bounds read in the uncompressed encoder when an…
- Record
SUSE-SU-2026:24205-1- Updated
- 2026-11-02
OSVUSN-8846-1 No score
libheif vulnerabilities
Yuqi Qiu and Xiang Li discovered that libheif incorrectly handled certain compressed metadata. A remote attacker could possibly use this issue to cause a denial of service. This issue only affected Ubuntu 24.04 LTS and Ubuntu 26.04 LTS. (CVE-2026-84384)
Yuqi Qiu and Xiang Li discovered that libheif incorrectly handled certain HEIF sequence data. A remote attacker could possibly use this issue to cause a denial of service. This issue only affected Ubuntu 26.04 LTS. (CVE-2026-84446)
Yuqi Qiu and Xiang Li discovered that libheif incorrectly handled certain image references. A remote attacker could possibly use this issue to cause a denial of service. This issue only affected Ubuntu 26.04 LTS. (CVE-2026-84447)
It was discovered that libheif incorrectly handled certain region masks. A local attacker could possibly use this issue to obtain sensitive information or cause a denial of service. This issue only affected Ubuntu 24.04 LTS and Ubuntu 26.04 LTS. (CVE-2026-84448)
It was discovered that libheif incorrectly handled certain images. 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, Ubuntu 22.04 LTS, and Ubuntu 24.04 LTS. (CVE-2026-84449)
- Record
USN-8846-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
libheifDebian:12 |
All versions, plus listed versions 1.15.1-11.15.1-1+deb12u11.16.2-11.16.2-21.16.2-3 Show 31 moreShow less1.17.0-11.17.1-11.17.4-11.17.6-11.17.6-21.17.6-31.17.6-41.18.1-11.18.1-21.18.2-11.18.2-21.19.1-11.19.1-1~bpo12+11.19.1-1~bpo12+21.19.3-11.19.3-1~bpo12+11.19.5-11.19.7-11.19.7-1~bpo12+11.19.8-11.20.1-11.20.2-11.20.2-21.21.2-11.21.2-21.21.2-31.21.2-41.23.1-11.23.2-11.23.3-11.23.4-1 |
None known |
libheifDebian:13 |
before 1.19.7-1 | 1.19.7-1 |
libheifDebian:14 |
before 1.19.7-1 | 1.19.7-1 |
libheifSUSE:Linux Enterprise Server 16.0 From an advisory covering 2 CVEs |
before 1.23.5-160000.1.1 | 1.23.5-160000.1.1 |
libheifSUSE:Linux Enterprise Server for SAP applications 16.0 From an advisory covering 2 CVEs |
before 1.23.5-160000.1.1 | 1.23.5-160000.1.1 |
libheifUbuntu:Pro:18.04:LTS |
before 1.1.0-2ubuntu0.1~esm5, plus listed versions 1.1.0-21.1.0-2ubuntu0.1~esm11.1.0-2ubuntu0.1~esm21.1.0-2ubuntu0.1~esm31.1.0-2ubuntu0.1~esm4 |
1.1.0-2ubuntu0.1~esm5 |
libheifUbuntu:Pro:20.04:LTS |
before 1.6.1-1ubuntu0.1~esm5, plus listed versions 1.5.0-1build11.5.1-11.5.1-1build11.6.0-11.6.1-1 Show 5 moreShow less1.6.1-1build11.6.1-1ubuntu0.1~esm11.6.1-1ubuntu0.1~esm21.6.1-1ubuntu0.1~esm31.6.1-1ubuntu0.1~esm4 |
1.6.1-1ubuntu0.1~esm5 |
libheifUbuntu:Pro:22.04:LTS |
before 1.12.0-2ubuntu0.1~esm5, plus listed versions 1.11.0-11.12.0-2build11.12.0-2ubuntu0.1~esm11.12.0-2ubuntu0.1~esm21.12.0-2ubuntu0.1~esm31.12.0-2ubuntu0.1~esm4 |
1.12.0-2ubuntu0.1~esm5 |
libheifUbuntu:24.04:LTS |
before 1.17.6-1ubuntu4.9, plus listed versions 1.16.2-2ubuntu11.17.1-1ubuntu21.17.1-1ubuntu31.17.4-1ubuntu11.17.6-1ubuntu1 Show 11 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.71.17.6-1ubuntu4.8 |
1.17.6-1ubuntu4.9 |
libheifUbuntu:Pro:18.04:LTS From an advisory covering 5 CVEs |
before 1.1.0-2ubuntu0.1~esm5, plus listed versions 1.1.0-21.1.0-2ubuntu0.1~esm11.1.0-2ubuntu0.1~esm21.1.0-2ubuntu0.1~esm31.1.0-2ubuntu0.1~esm4 |
1.1.0-2ubuntu0.1~esm5 |
Show 6 moreShow less
| Package | Affected | Fixed |
|---|---|---|
libheifUbuntu:Pro:20.04:LTS From an advisory covering 5 CVEs |
before 1.6.1-1ubuntu0.1~esm5, plus listed versions 1.5.0-1build11.5.1-11.5.1-1build11.6.0-11.6.1-1 Show 5 moreShow less1.6.1-1build11.6.1-1ubuntu0.1~esm11.6.1-1ubuntu0.1~esm21.6.1-1ubuntu0.1~esm31.6.1-1ubuntu0.1~esm4 |
1.6.1-1ubuntu0.1~esm5 |
libheifUbuntu:Pro:22.04:LTS From an advisory covering 5 CVEs |
before 1.12.0-2ubuntu0.1~esm5, plus listed versions 1.11.0-11.12.0-2build11.12.0-2ubuntu0.1~esm11.12.0-2ubuntu0.1~esm21.12.0-2ubuntu0.1~esm31.12.0-2ubuntu0.1~esm4 |
1.12.0-2ubuntu0.1~esm5 |
libheifUbuntu:24.04:LTS From an advisory covering 5 CVEs |
before 1.17.6-1ubuntu4.9, plus listed versions 1.16.2-2ubuntu11.17.1-1ubuntu21.17.1-1ubuntu31.17.4-1ubuntu11.17.6-1ubuntu1 Show 11 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.71.17.6-1ubuntu4.8 |
1.17.6-1ubuntu4.9 |
libheifUbuntu:26.04:LTS From an advisory covering 5 CVEs |
before 1.21.2-3ubuntu0.6, plus listed versions 1.20.2-11.20.2-21.20.2-2build11.20.2-2build21.20.2-2ubuntu1 Show 7 moreShow less1.21.2-11.21.2-31.21.2-3ubuntu0.11.21.2-3ubuntu0.21.21.2-3ubuntu0.31.21.2-3ubuntu0.41.21.2-3ubuntu0.5 |
1.21.2-3ubuntu0.6 |
libheifopenSUSE:Tumbleweed |
before 1.23.5-2.1 | 1.23.5-2.1 |
libheifopenSUSE:Leap 16.0 From an advisory covering 2 CVEs |
before 1.23.5-160000.1.1 | 1.23.5-160000.1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-84449 is a low vulnerability (CVSS 3.7) in Strukturag Libheif, published September 18, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.42%, the 36th percentile. Fixed in libheif 1.19.7-1.
References
github.com/strukturag/libheif/security/advisories/GHSA-2c3g-p585-8rpq
github.com/strukturag/libheif/commit/e29953da30eb11aa1762df0bff3b36be4b22fbe3
github.com/strukturag/libheif/releases/tag/v1.19.6
github.com/CVEProject/cvelistV5/tree/main/cves/2026/84xxx/CVE-2026-84449.json
nvd.nist.gov/vuln/detail/CVE-2026-84449
security-tracker.debian.org/tracker/CVE-2026-84449
Show 18 moreShow less
suse.com/support/update/announcement/2026/suse-su-202624205-1
bugzilla.suse.com/1281829
bugzilla.suse.com/1281948
bugzilla.suse.com/1281949
bugzilla.suse.com/1281950
bugzilla.suse.com/1281951
bugzilla.suse.com/1281952
bugzilla.suse.com/1281953
bugzilla.suse.com/1281954
suse.com/security/cve/CVE-2020-6851
suse.com/security/cve/CVE-2026-84449
ubuntu.com/security/CVE-2026-84449
cve.org/CVERecord?id=CVE-2026-84449
ubuntu.com/security/notices/USN-8846-1
ubuntu.com/security/CVE-2026-84384
ubuntu.com/security/CVE-2026-84446
ubuntu.com/security/CVE-2026-84447
ubuntu.com/security/CVE-2026-84448
Left out here: the rest of 2 source descriptions. The JSON record has them.