{"id":"CVE-2026-19082","aliases":["DEBIAN-CVE-2026-19082","EUVD-2026-54561","GHSA-hx46-55wp-hv6m","MGASA-2026-0394","UBUNTU-CVE-2026-19082"],"status":"published","title":"Imager versions from 0.45_02 before 1.034 for Perl may expose adjacent heap bytes via strlen() over-read from zero-count ASCII EXIF entries in copy_string_tags","description":"Imager versions from 0.45_02 before 1.034 for Perl may expose adjacent heap bytes via strlen() over-read from zero-count ASCII EXIF entries in copy_string_tags.\n\ncopy_string_tags() computes an ASCII EXIF tag's length as `entry-\u003esize - 1` to strip the trailing NUL. A zero-count ASCII entry sets `entry-\u003esize` to 0, and the derived length reaches i_tags_add() as -1, which is interpreted as a request to call strlen(), scanning past the entry to the next NUL and copying those bytes into the tag. JPEG reaches this path via im_decode_exif(), as does the separate Imager::File::WEBP distribution, which is fixed by upgrading Imager.\n\nAny caller of Imager-\u003eread() on an attacker-supplied image with such an entry may receive an exif_* tag holding adjacent heap bytes instead of an empty string.","severity":{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high","assessor":"adp","from":"cve"},"epss":{"day":"2026-11-07","score":0.00371,"percentile":0.31248,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-125"],"published":"2026-08-07T17:56:49Z","modified":"2026-10-28T11:08:03Z","fixes":[{"ecosystem":"Debian:14","package":"libimager-perl","fixed_in":["1.034+dfsg-1"],"sources":["osv"]},{"ecosystem":"Mageia:10","package":"perl-Imager","fixed_in":["1.34.0-1.1.mga10"],"sources":["osv"]},{"ecosystem":"Mageia:9","package":"perl-Imager","fixed_in":["1.34.0-1.1.mga9"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Debian:12","package":"libimager-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.019+dfsg-1","1.019+dfsg-2","1.020+dfsg-1","1.022+dfsg-1","1.023+dfsg-1","1.024+dfsg-1","1.024+dfsg-2","1.025+dfsg-1","1.027+dfsg-1","1.028+dfsg-1","1.029+dfsg-1","1.030+dfsg-1","1.031+dfsg-1","1.032+dfsg-1","1.033+dfsg-1","1.034+dfsg-1","1.034+dfsg-2","1.035+dfsg-1","1.036+dfsg-1","1.037+dfsg-1","1.037+dfsg-2","1.040+dfsg-1"]},{"source":"osv","ecosystem":"Debian:13","package":"libimager-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.027+dfsg-1","1.028+dfsg-1","1.029+dfsg-1","1.030+dfsg-1","1.031+dfsg-1","1.032+dfsg-1","1.033+dfsg-1","1.034+dfsg-1","1.034+dfsg-2","1.035+dfsg-1","1.036+dfsg-1","1.037+dfsg-1","1.037+dfsg-2","1.040+dfsg-1"]},{"source":"osv","ecosystem":"Debian:14","package":"libimager-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.034+dfsg-1"}]}],"versions":["1.027+dfsg-1","1.028+dfsg-1","1.029+dfsg-1","1.030+dfsg-1","1.031+dfsg-1","1.032+dfsg-1","1.033+dfsg-1"]},{"source":"osv","ecosystem":"Mageia:10","package":"perl-Imager","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.34.0-1.1.mga10"}]}]},{"source":"osv","ecosystem":"Mageia:9","package":"perl-Imager","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.34.0-1.1.mga9"}]}]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"libimager-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.003+dfsg-1","1.004+dfsg-1","1.004+dfsg-1build1"]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"libimager-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.005+dfsg-2build1","1.006+dfsg-1"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"libimager-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.011+dfsg-1","1.011+dfsg-1build1"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"libimager-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.012+dfsg-1build1","1.012+dfsg-2","1.012+dfsg-2build1"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"libimager-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.019+dfsg-2","1.020+dfsg-1","1.022+dfsg-1","1.023+dfsg-1","1.023+dfsg-1build1","1.023+dfsg-1build2"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"libimager-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.029+dfsg-1","1.031+dfsg-1","1.033+dfsg-1","1.035+dfsg-1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"libimager-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.027+dfsg-1","1.029+dfsg-1"]}],"products":[{"vendor":"tonyc","product":"imager"}],"references":[{"url":"https://github.com/tonycoz/imager/security/advisories/GHSA-hx46-55wp-hv6m","tags":["vendor-advisory","exploit","advisory","report"]},{"url":"https://github.com/tonycoz/imager/commit/24bde0427a113264d53f45a9c29ae756d84c82fe.patch","tags":["patch","fix","report"]},{"url":"https://metacpan.org/release/TONYC/Imager-1.034/changes","tags":["release-notes","advisory","web","report"]},{"url":"http://www.openwall.com/lists/oss-security/2026/08/07/6","tags":["web","report"]},{"url":"https://cpan.org/modules","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/19xxx/CVE-2026-19082.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-19082","tags":["advisory"]},{"url":"https://github.com/tonycoz/imager","tags":["package"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-19082","tags":["advisory"]},{"url":"https://advisories.mageia.org/MGASA-2026-0394.html","tags":["advisory"]},{"url":"https://bugs.mageia.org/show_bug.cgi?id=36133","tags":["report"]},{"url":"https://www.openwall.com/lists/oss-security/2026/08/07/6","tags":["web"]},{"url":"https://ubuntu.com/security/CVE-2026-19082","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-19082","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-19082","title":"Imager versions from 0.45_02 before 1.034 for Perl may expose adjacent heap bytes via strlen() over-read from zero-count ASCII EXIF entries in copy_string_tags","description":"Imager versions from 0.45_02 before 1.034 for Perl may expose adjacent heap bytes via strlen() over-read from zero-count ASCII EXIF entries in copy_string_tags.\n\ncopy_string_tags() computes an ASCII EXIF tag's length as `entry-\u003esize - 1` to strip the trailing NUL. A zero-count ASCII entry sets `entry-\u003esize` to 0, and the derived length reaches i_tags_add() as -1, which is interpreted as a request to call strlen(), scanning past the entry to the next NUL and copying those bytes into the tag. JPEG reaches this path via im_decode_exif(), as does the separate Imager::File::WEBP distribution, which is fixed by upgrading Imager.\n\nAny caller of Imager-\u003eread() on an attacker-supplied image with such an entry may receive an exif_* tag holding adjacent heap bytes instead of an empty string.","status":"published","published":"2026-08-07T17:56:49.592Z","modified":"2026-08-07T20:13:18.224Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high","assessor":"adp"}],"cwes":["CWE-125"],"updated_at":"2026-11-02T13:47:17.512524Z"}],"euvd":[{"id":"EUVD-2026-54561","description":"Imager versions from 0.45_02 before 1.034 for Perl may expose adjacent heap bytes via strlen() over-read from zero-count ASCII EXIF entries in copy_string_tags.\n\ncopy_string_tags() computes an ASCII EXIF tag's length as `entry-\u003esize - 1` to strip the trailing NUL. A zero-count ASCII entry sets `entry-\u003esize` to 0, and the derived length reaches i_tags_add() as -1, which is interpreted as a request to call strlen(), scanning past the entry to the next NUL and copying those bytes into the tag. JPEG reaches this path via im_decode_exif(), as does the separate Imager::File::WEBP distribution, which is fixed by upgrading Imager.\n\nAny caller of Imager-\u003eread() on an attacker-supplied image with such an entry may receive an exif_* tag holding adjacent heap bytes instead of an empty string.","status":"published","published":"2026-08-07T17:56:49Z","modified":"2026-08-07T20:13:18Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"updated_at":"2026-11-02T18:02:06.573967Z"}],"nvd":[{"id":"CVE-2026-19082","description":"Imager versions from 0.45_02 before 1.034 for Perl may expose adjacent heap bytes via strlen() over-read from zero-count ASCII EXIF entries in copy_string_tags.\n\ncopy_string_tags() computes an ASCII EXIF tag's length as `entry-\u003esize - 1` to strip the trailing NUL. A zero-count ASCII entry sets `entry-\u003esize` to 0, and the derived length reaches i_tags_add() as -1, which is interpreted as a request to call strlen(), scanning past the entry to the next NUL and copying those bytes into the tag. JPEG reaches this path via im_decode_exif(), as does the separate Imager::File::WEBP distribution, which is fixed by upgrading Imager.\n\nAny caller of Imager-\u003eread() on an attacker-supplied image with such an entry may receive an exif_* tag holding adjacent heap bytes instead of an empty string.","status":"published","published":"2026-08-07T18:17:11.363Z","modified":"2026-10-23T20:10:00.16Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high","assessor":"secondary"}],"cwes":["CWE-125"],"updated_at":"2026-11-02T14:12:35.386166Z"}],"osv":[{"id":"CVE-2026-19082","title":"Imager versions from 0.45_02 before 1.034 for Perl may expose adjacent heap bytes via strlen() over-read from zero-count ASCII EXIF entries in copy_string_tags","description":"Imager versions from 0.45_02 before 1.034 for Perl may expose adjacent heap bytes via strlen() over-read from zero-count ASCII EXIF entries in copy_string_tags.\n\ncopy_string_tags() computes an ASCII EXIF tag's length as `entry-\u003esize - 1` to strip the trailing NUL. A zero-count ASCII entry sets `entry-\u003esize` to 0, and the derived length reaches i_tags_add() as -1, which is interpreted as a request to call strlen(), scanning past the entry to the next NUL and copying those bytes into the tag. JPEG reaches this path via im_decode_exif(), as does the separate Imager::File::WEBP distribution, which is fixed by upgrading Imager.\n\nAny caller of Imager-\u003eread() on an attacker-supplied image with such an entry may receive an exif_* tag holding adjacent heap bytes instead of an empty string.","status":"published","published":"2026-08-07T17:56:49.592Z","modified":"2026-10-28T11:08:03.864622749Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"cwes":["CWE-125"],"updated_at":"2026-11-02T15:44:58.024074Z"},{"id":"DEBIAN-CVE-2026-19082","description":"Imager versions from 0.45_02 before 1.034 for Perl may expose adjacent heap bytes via strlen() over-read from zero-count ASCII EXIF entries in copy_string_tags.  copy_string_tags() computes an ASCII EXIF tag's length as `entry-\u003esize - 1` to strip the trailing NUL. A zero-count ASCII entry sets `entry-\u003esize` to 0, and the derived length reaches i_tags_add() as -1, which is interpreted as a request to call strlen(), scanning past the entry to the next NUL and copying those bytes into the tag. JPEG reaches this path via im_decode_exif(), as does the separate Imager::File::WEBP distribution, which is fixed by upgrading Imager.  Any caller of Imager-\u003eread() on an attacker-supplied image with such an entry may receive an exif_* tag holding adjacent heap bytes instead of an empty string.","status":"published","published":"2026-08-07T18:17:11.363Z","modified":"2026-10-24T10:00:44.323662616Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"updated_at":"2026-11-02T15:45:53.097669Z"},{"id":"UBUNTU-CVE-2026-19082","description":"Imager versions from 0.45_02 before 1.034 for Perl may expose adjacent heap bytes via strlen() over-read from zero-count ASCII EXIF entries in copy_string_tags. copy_string_tags() computes an ASCII EXIF tag's length as `entry-\u003esize - 1` to strip the trailing NUL. A zero-count ASCII entry sets `entry-\u003esize` to 0, and the derived length reaches i_tags_add() as -1, which is interpreted as a request to call strlen(), scanning past the entry to the next NUL and copying those bytes into the tag. JPEG reaches this path via im_decode_exif(), as does the separate Imager::File::WEBP distribution, which is fixed by upgrading Imager. Any caller of Imager-\u003eread() on an attacker-supplied image with such an entry may receive an exif_* tag holding adjacent heap bytes instead of an empty string.","status":"published","published":"2026-08-07T18:17:00Z","modified":"2026-10-17T12:59:54.290369289Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"updated_at":"2026-11-02T16:56:01.334185Z"},{"id":"MGASA-2026-0394","title":"Updated perl-Imager packages fix a security vulnerability","description":"Imager versions from 0.45_02 before 1.034 for Perl may expose adjacent\nheap bytes via strlen() over-read from zero-count ASCII EXIF entries in\ncopy_string_tags\n","status":"published","published":"2026-09-12T03:59:30Z","modified":"2026-09-12T04:00:03.434062349Z","updated_at":"2026-11-02T15:49:43.795591Z"}]}}
