CVE-2026-73638
Imager versions from 0.45_02 before 1.035 for Perl read outside the EXIF block via unchecked start offsets in tiff_load_ifd
Imager versions from 0.45_02 before 1.035 for Perl read outside the EXIF block via unchecked start offsets in tiff_load_ifd.
tiff_load_ifd() validates an IFD entry's data by checking that entry->offset + entry->size stays within the EXIF block, and never checks the start offset itself. Where that sum is not the real end of the data, the check passes with the entry starting outside the block.
Through 1.032 entry->offset is a plain int, so on the usual two's-complement implementations an offset with the high bit set converts to negative and the sum can land back inside the block. From 1.033 the field is a size_t and the addition wraps only where size_t is 32 bits. The IFD's own start offset is checked the same way and wraps where unsigned long is 32 bits, which includes 64-bit Windows.
Any caller of Imager->read() on an attacker-supplied image may receive EXIF tags holding bytes from outside the block, or crash the process.
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
- High
Exploit likelihood
What each source reports
CVE List Score used
6.2
Imager versions from 0.45_02 before 1.035 for Perl read outside the EXIF block via unchecked start offsets in tiff_load_ifd
Imager versions from 0.45_02 before 1.035 for Perl read outside the EXIF block via unchecked start offsets in tiff_load_ifd.
tiff_load_ifd() validates an IFD entry's data by checking that entry->offset + entry->size stays within the EXIF block, and never checks the start offset itself. Where that sum is not the real end of the data, the check passes with the entry starting outside the block.
Through 1.032 entry->offset is a plain int, so on the usual two's-complement implementations an offset with the high bit set converts to negative and the sum can land back inside the block. From 1.033 the field is a size_t and the addition wraps only where size_t is 32 bits. The IFD's own start offset is checked the same way and wraps where unsigned long is 32 bits, which includes 64-bit Windows.
Any caller of Imager->read() on an attacker-supplied image may receive EXIF tags holding bytes from outside the block, or crash the process.
- Record
CVE-2026-73638- CVSS 3.1
- 6.2 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-125
- Updated
- 2026-11-02
EUVDEUVD-2026-82491
6.2
Imager versions from 0.45_02 before 1.035 for Perl read outside the EXIF block via unchecked start offsets in tiff_load_ifd.
tiff_load_ifd() validates an IFD entry's data by checking that entry->offset + entry->size stays within the EXIF block, and never checks the start offset itself. Where that sum is not the real end of the data, the check passes with the entry starting outside the block.
Through 1.032 entry->offset is a plain int, so on the usual two's-complement implementations an offset with the high bit set converts to negative and the sum can land back inside the block. From 1.033 the field is a size_t and the addition wraps only where size_t is 32 bits. The IFD's own start offset is checked the same way and wraps where unsigned long is 32 bits, which includes 64-bit Windows.
Any caller of Imager->read() on an attacker-supplied image may receive EXIF tags holding bytes from outside the block, or crash the process.
- Record
EUVD-2026-82491- CVSS 3.1
- 6.2 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
NVD
6.2
Imager versions from 0.45_02 before 1.035 for Perl read outside the EXIF block via unchecked start offsets in tiff_load_ifd.
tiff_load_ifd() validates an IFD entry's data by checking that entry->offset + entry->size stays within the EXIF block, and never checks the start offset itself. Where that sum is not the real end of the data, the check passes with the entry starting outside the block.
Through 1.032 entry->offset is a plain int, so on the usual two's-complement implementations an offset with the high bit set converts to negative and the sum can land back inside the block. From 1.033 the field is a size_t and the addition wraps only where size_t is 32 bits. The IFD's own start offset is checked the same way and wraps where unsigned long is 32 bits, which includes 64-bit Windows.
Any caller of Imager->read() on an attacker-supplied image may receive EXIF tags holding bytes from outside the block, or crash the process.
- Record
CVE-2026-73638- CVSS 3.1
- 6.2 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-125
- Updated
- 2026-11-02
OSV
6.2
Imager versions from 0.45_02 before 1.035 for Perl read outside the EXIF block via unchecked start offsets in tiff_load_ifd
Imager versions from 0.45_02 before 1.035 for Perl read outside the EXIF block via unchecked start offsets in tiff_load_ifd.
tiff_load_ifd() validates an IFD entry's data by checking that entry->offset + entry->size stays within the EXIF block, and never checks the start offset itself. Where that sum is not the real end of the data, the check passes with the entry starting outside the block.
Through 1.032 entry->offset is a plain int, so on the usual two's-complement implementations an offset with the high bit set converts to negative and the sum can land back inside the block. From 1.033 the field is a size_t and the addition wraps only where size_t is 32 bits. The IFD's own start offset is checked the same way and wraps where unsigned long is 32 bits, which includes 64-bit Windows.
Any caller of Imager->read() on an attacker-supplied image may receive EXIF tags holding bytes from outside the block, or crash the process.
- Record
CVE-2026-73638- CVSS 3.1
- 6.2 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-125
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-73638
6.2
Imager versions from 0.45_02 before 1.035 for Perl read outside the EXIF block via unchecked start offsets in tiff_load_ifd. tiff_load_ifd() validates an IFD entry's data by checking that entry->offset + entry->size stays within the EXIF block, and never checks the start offset itself. Where that sum is not the real end of the data, the check passes with the entry starting outside the block. Through 1.032 entry->offset is a plain int, so on the usual two's-complement implementations an offset with the high bit set converts to negative and the sum can land back inside the block. From 1.033 the field is a size_t and the addition wraps only where size_t is 32 bits. The IFD's own start offset is checked the same way and wraps where unsigned long is 32 bits, which includes 64-bit Windows. Any caller of Imager->read() on an attacker-supplied image may receive EXIF tags holding bytes from outside the block, or crash the process.
- Record
DEBIAN-CVE-2026-73638- CVSS 3.1
- 6.2 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-73638
6.2
Imager versions from 0.45_02 before 1.035 for Perl read outside the EXIF block via unchecked start offsets in tiff_load_ifd. tiff_load_ifd() validates an IFD entry's data by checking that entry->offset + entry->size stays within the EXIF block, and never checks the start offset itself. Where that sum is not the real end of the data, the check passes with the entry starting outside the block. Through 1.032 entry->offset is a plain int, so on the usual two's-complement implementations an offset with the high bit set converts to negative and the sum can land back inside the block. From 1.033 the field is a size_t and the addition wraps only where size_t is 32 bits. The IFD's own start offset is checked the same way and wraps where unsigned long is 32 bits, which includes 64-bit Windows. Any caller of Imager->read() on an attacker-supplied image may receive EXIF tags holding bytes from outside the block, or crash the process.
- Record
UBUNTU-CVE-2026-73638- CVSS 3.1
- 6.2 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVMGASA-2026-0500 No score
Updated perl-Imager package fixes security vulnerabilities
Buffer read underflows on 32-bit size_t systems decoding EXIF data. (CVE-2026-73638) Palette off-by-one discloses uninitialized heap memory. (CVE-2026-93018) TGA reader: signed colourmaplength causes process-killing allocator abort. (CVE-2026-93019) Unvalidated raw_datachannels can cause incorrect memory allocations. (CVE-2026-102504) getsamples(... type => "float") called on a paletted image allocated buffer overflow. (CVE-2026-102505)
- Record
MGASA-2026-0500- Updated
- 2026-11-02
Affected packages
| Package | Affected | Fixed |
|---|---|---|
libimager-perlDebian:12 |
All versions, plus listed versions 1.019+dfsg-11.019+dfsg-21.020+dfsg-11.022+dfsg-11.023+dfsg-1 Show 14 moreShow less1.024+dfsg-11.024+dfsg-21.025+dfsg-11.027+dfsg-11.028+dfsg-11.029+dfsg-11.030+dfsg-11.031+dfsg-11.032+dfsg-11.033+dfsg-11.034+dfsg-11.034+dfsg-21.035+dfsg-11.036+dfsg-1 |
None known |
libimager-perlDebian:13 |
All versions, plus listed versions 1.027+dfsg-11.028+dfsg-11.029+dfsg-11.030+dfsg-11.031+dfsg-1 Show 6 moreShow less1.032+dfsg-11.033+dfsg-11.034+dfsg-11.034+dfsg-21.035+dfsg-11.036+dfsg-1 |
None known |
libimager-perlDebian:14 |
before 1.035+dfsg-1, plus listed versions 1.027+dfsg-11.028+dfsg-11.029+dfsg-11.030+dfsg-11.031+dfsg-1 Show 4 moreShow less1.032+dfsg-11.033+dfsg-11.034+dfsg-11.034+dfsg-2 |
1.035+dfsg-1 |
perl-ImagerMageia:10 From an advisory covering 5 CVEs |
before 1.37.0-1.mga10 | 1.37.0-1.mga10 |
libimager-perlUbuntu:16.04:LTS |
All versions, plus listed versions 1.003+dfsg-11.004+dfsg-11.004+dfsg-1build1 |
None known |
libimager-perlUbuntu:18.04:LTS |
All versions, plus listed versions 1.005+dfsg-2build11.006+dfsg-1 |
None known |
libimager-perlUbuntu:20.04:LTS |
All versions, plus listed versions 1.011+dfsg-11.011+dfsg-1build1 |
None known |
libimager-perlUbuntu:22.04:LTS |
All versions, plus listed versions 1.012+dfsg-1build11.012+dfsg-21.012+dfsg-2build1 |
None known |
libimager-perlUbuntu:24.04:LTS |
All versions, plus listed versions 1.019+dfsg-21.020+dfsg-11.022+dfsg-11.023+dfsg-11.023+dfsg-1build11.023+dfsg-1build2 |
None known |
libimager-perlUbuntu:26.10 |
All versions, plus listed versions 1.029+dfsg-11.031+dfsg-11.033+dfsg-11.035+dfsg-1 |
None known |
libimager-perlUbuntu:26.04:LTS |
All versions, plus listed versions 1.027+dfsg-11.029+dfsg-1 |
None known |
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-73638 is a medium vulnerability (CVSS 6.2) in libimager-perl, published September 17, 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 libimager-perl 1.035+dfsg-1.
References
github.com/tonycoz/imager/security/advisories/GHSA-j47j-8w8p-3mmc
github.com/tonycoz/imager/commit/48ba8ac0749f89466b6e6681fb88cbdb51086ebd.patch
github.com/tonycoz/imager/commit/6f1fd003a8e48c7e6e58b7019a04cc71bbfec2c3.patch
github.com/tonycoz/imager/issues/568
bugs.debian.org/cgi-bin/bugreport.cgi?bug=1144226
metacpan.org/release/TONYC/Imager-1.035/changes
Show 20 moreShow less
openwall.com/lists/oss-security/2026/09/17/5
cpan.org/modules
github.com/CVEProject/cvelistV5/tree/main/cves/2026/73xxx/CVE-2026-73638.json
nvd.nist.gov/vuln/detail/CVE-2026-73638
github.com/tonycoz/imager
security-tracker.debian.org/tracker/CVE-2026-73638
advisories.mageia.org/MGASA-2026-0500.html
bugs.mageia.org/show_bug.cgi?id=36330
lists.fedoraproject.org/archives/list/[email protected]/message/M2IGAORFTDV6NM2L2NZCBWRWLAWHXUHK
lists.security.metacpan.org/cve-announce/msg/43654795
github.com/tonycoz/imager/security/advisories/GHSA-j7v7-cm4g-vrgf
lists.security.metacpan.org/cve-announce/msg/43654761
github.com/tonycoz/imager/security/advisories/GHSA-p4vw-rc54-p2c2
openwall.com/lists/oss-security/2026/10/01/9
github.com/tonycoz/imager/security/advisories/GHSA-g549-r73g-x7x6
metacpan.org/release/TONYC/Imager-1.037/changes
openwall.com/lists/oss-security/2026/10/01/10
github.com/tonycoz/imager/security/advisories/GHSA-4rx6-cgv3-fmxp
ubuntu.com/security/CVE-2026-73638
cve.org/CVERecord?id=CVE-2026-73638