{"id":"CVE-2026-70654","aliases":["DEBIAN-CVE-2026-70654","EUVD-2026-63656","GHSA-rjmm-3qch-m9rg","UBUNTU-CVE-2026-70654","USN-8994-1","openSUSE-SU-2026:12266-1"],"status":"published","title":"libvips: A well-crafted PPM image processed via a custom source could lead to possible heap buffer write overflow","description":"libvips is a fast image processing library with low memory needs. Prior to version 8.18.3, applications that define unusual custom libvips sources and use them to process untrusted uncompressed PPM images can trigger a max/min error in vips_source_read_to_memory in libvips/iofuncs/source.c. The function uses VIPS_MAX instead of VIPS_MIN when selecting the remaining read size, allowing up to 4032 bytes to be written beyond the allocated heap buffer and causing memory corruption or a process crash. This issue is fixed in version 8.18.3.","severity":{"version":"4.0","score":5.8,"vector":"CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00114,"percentile":0.0149,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-122"],"published":"2026-08-20T21:07:25Z","modified":"2026-11-04T03:43:11Z","fixes":[{"ecosystem":"Debian:13","package":"vips","fixed_in":["8.16.1-1+deb13u2"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"vips","fixed_in":["8.18.3-1"],"sources":["osv"]},{"ecosystem":"Ubuntu:Pro:20.04:LTS","package":"vips","fixed_in":["8.9.1-2ubuntu0.1~esm2"],"sources":["osv"]},{"ecosystem":"Ubuntu:Pro:22.04:LTS","package":"vips","fixed_in":["8.12.1-1ubuntu0.1~esm3"],"sources":["osv"]},{"ecosystem":"Ubuntu:Pro:24.04:LTS","package":"vips","fixed_in":["8.15.1-1.1ubuntu0.1~esm2"],"sources":["osv"]},{"ecosystem":"Ubuntu:Pro:26.04:LTS","package":"vips","fixed_in":["8.18.0-1ubuntu0.1~esm2"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Debian:12","package":"vips","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["8.14.1-3","8.14.1-3+deb12u1","8.14.1-3+deb12u2","8.14.1-3+deb12u3","8.14.2-1","8.14.3-1","8.14.4-1","8.14.5-1","8.15.0-1","8.15.0-2","8.15.0~rc2-1","8.15.0~rc2-2","8.15.1-1","8.15.1-1.1","8.15.1-1.1~exp1","8.15.2-1","8.15.2-2","8.15.3-1","8.16.0-1","8.16.0-2","8.16.1-1","8.16.1-2","8.17.3-1","8.17.3-2","8.18.0-1","8.18.0-2","8.18.0-3","8.18.1-1","8.18.2-1","8.18.3-1","8.18.4-1","8.18.5-1","8.18.6-1","8.18.6-2","8.18.7-1"]},{"source":"osv","ecosystem":"Debian:13","package":"vips","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.16.1-1+deb13u2"}]}],"versions":["8.16.1-1","8.16.1-1+deb13u1"]},{"source":"osv","ecosystem":"Debian:14","package":"vips","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.18.3-1"}]}],"versions":["8.16.1-1","8.16.1-2","8.17.3-1","8.17.3-2","8.18.0-1","8.18.0-2","8.18.0-3","8.18.1-1","8.18.2-1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:20.04:LTS","package":"vips","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.9.1-2ubuntu0.1~esm2"}]}],"versions":["8.7.4-1build1","8.8.3-3","8.8.3-3ubuntu1","8.9.0-1","8.9.0-1build1","8.9.1-1","8.9.1-2","8.9.1-2ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:22.04:LTS","package":"vips","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.12.1-1ubuntu0.1~esm3"}]}],"versions":["8.10.5-2ubuntu1","8.11.4-2","8.12.1-1","8.12.1-1build1","8.12.1-1ubuntu0.1~esm1","8.12.1-1ubuntu0.1~esm2"]},{"source":"osv","ecosystem":"Ubuntu:Pro:24.04:LTS","package":"vips","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.15.1-1.1ubuntu0.1~esm2"}]}],"versions":["8.14.3-1","8.14.5-1","8.15.0-1","8.15.0-2","8.15.1-1","8.15.1-1build1","8.15.1-1.1build3","8.15.1-1.1build4","8.15.1-1.1ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:26.04:LTS","package":"vips","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.18.0-1ubuntu0.1~esm2"}]}],"versions":["8.16.1-1","8.16.1-2","8.17.3-2","8.18.0-1","8.18.0-1build1","8.18.0-1ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:16.04:LTS","package":"vips","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.2.2-1ubuntu0.1~esm1"}]}],"versions":["7.40.6-2ubuntu2","8.0.2-2","8.2.1-1","8.2.2-1"],"bundled":9},{"source":"osv","ecosystem":"Ubuntu:Pro:18.04:LTS","package":"vips","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.4.5-1ubuntu0.1~esm2"}]}],"versions":["8.4.5-1build1","8.4.5-1ubuntu0.1~esm1"],"bundled":9},{"source":"osv","ecosystem":"Ubuntu:Pro:20.04:LTS","package":"vips","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.9.1-2ubuntu0.1~esm2"}]}],"versions":["8.7.4-1build1","8.8.3-3","8.8.3-3ubuntu1","8.9.0-1","8.9.0-1build1","8.9.1-1","8.9.1-2","8.9.1-2ubuntu0.1~esm1"],"bundled":9},{"source":"osv","ecosystem":"Ubuntu:Pro:22.04:LTS","package":"vips","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.12.1-1ubuntu0.1~esm3"}]}],"versions":["8.10.5-2ubuntu1","8.11.4-2","8.12.1-1","8.12.1-1build1","8.12.1-1ubuntu0.1~esm1","8.12.1-1ubuntu0.1~esm2"],"bundled":9},{"source":"osv","ecosystem":"Ubuntu:Pro:24.04:LTS","package":"vips","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.15.1-1.1ubuntu0.1~esm2"}]}],"versions":["8.14.3-1","8.14.5-1","8.15.0-1","8.15.0-2","8.15.1-1","8.15.1-1build1","8.15.1-1.1build3","8.15.1-1.1build4","8.15.1-1.1ubuntu0.1~esm1"],"bundled":9},{"source":"osv","ecosystem":"Ubuntu:Pro:26.04:LTS","package":"vips","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.18.0-1ubuntu0.1~esm2"}]}],"versions":["8.16.1-1","8.16.1-2","8.17.3-2","8.18.0-1","8.18.0-1build1","8.18.0-1ubuntu0.1~esm1"],"bundled":9},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"vips","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.18.7-1.1"}]}],"bundled":9}],"products":[{"vendor":"libvips","product":"libvips"}],"references":[{"url":"https://github.com/libvips/libvips/security/advisories/GHSA-rjmm-3qch-m9rg","tags":["x_refsource_CONFIRM","advisory","report"]},{"url":"https://github.com/libvips/libvips/pull/5038","tags":["x_refsource_MISC","fix","report"]},{"url":"https://github.com/libvips/libvips/commit/80e021c6cdda0f80b756c2109d99839c94c03258","tags":["x_refsource_MISC","fix"]},{"url":"https://github.com/libvips/libvips/releases/tag/v8.18.3","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/70xxx/CVE-2026-70654.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-70654","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-70654","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-70654","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-70654","tags":["report"]},{"url":"https://ubuntu.com/security/notices/USN-8994-1","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2025-59933","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2026-33327","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2026-33328","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2026-35590","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2026-35591","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2026-69242","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2026-70651","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2026-70653","tags":["report"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2019-17534","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2019-6976","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2023-40032","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-59933","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-2913","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-69242","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-70651","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-70652","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-70654","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2026-70654","title":"libvips: A well-crafted PPM image processed via a custom source could lead to possible heap buffer write overflow","description":"libvips is a fast image processing library with low memory needs. Prior to version 8.18.3, applications that define unusual custom libvips sources and use them to process untrusted uncompressed PPM images can trigger a max/min error in vips_source_read_to_memory in libvips/iofuncs/source.c. The function uses VIPS_MAX instead of VIPS_MIN when selecting the remaining read size, allowing up to 4032 bytes to be written beyond the allocated heap buffer and causing memory corruption or a process crash. This issue is fixed in version 8.18.3.","status":"published","published":"2026-08-20T21:07:25.54Z","modified":"2026-08-21T11:35:46.559Z","cvss":[{"version":"4.0","score":5.8,"vector":"CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N","level":"medium","assessor":"cna"}],"cwes":["CWE-122"],"updated_at":"2026-11-02T13:35:33.380441Z"}],"euvd":[{"id":"EUVD-2026-63656","description":"libvips is a fast image processing library with low memory needs. Prior to version 8.18.3, applications that define unusual custom libvips sources and use them to process untrusted uncompressed PPM images can trigger a max/min error in vips_source_read_to_memory in libvips/iofuncs/source.c. The function uses VIPS_MAX instead of VIPS_MIN when selecting the remaining read size, allowing up to 4032 bytes to be written beyond the allocated heap buffer and causing memory corruption or a process crash. This issue is fixed in version 8.18.3.","status":"published","published":"2026-08-20T21:07:25Z","modified":"2026-08-21T11:35:46Z","cvss":[{"version":"4.0","score":5.8,"vector":"CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-02T18:01:37.96401Z"}],"nvd":[{"id":"CVE-2026-70654","description":"libvips is a fast image processing library with low memory needs. Prior to version 8.18.3, applications that define unusual custom libvips sources and use them to process untrusted uncompressed PPM images can trigger a max/min error in vips_source_read_to_memory in libvips/iofuncs/source.c. The function uses VIPS_MAX instead of VIPS_MIN when selecting the remaining read size, allowing up to 4032 bytes to be written beyond the allocated heap buffer and causing memory corruption or a process crash. This issue is fixed in version 8.18.3.","status":"published","published":"2026-08-20T21:17:08.567Z","modified":"2026-10-26T10:10:00.14Z","cvss":[{"version":"4.0","score":5.8,"vector":"CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N/E:X/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","level":"medium","assessor":"secondary"}],"cwes":["CWE-122"],"updated_at":"2026-11-02T14:12:40.302911Z"}],"osv":[{"id":"CVE-2026-70654","title":"libvips: A well-crafted PPM image processed via a custom source could lead to possible heap buffer write overflow","description":"libvips is a fast image processing library with low memory needs. Prior to version 8.18.3, applications that define unusual custom libvips sources and use them to process untrusted uncompressed PPM images can trigger a max/min error in vips_source_read_to_memory in libvips/iofuncs/source.c. The function uses VIPS_MAX instead of VIPS_MIN when selecting the remaining read size, allowing up to 4032 bytes to be written beyond the allocated heap buffer and causing memory corruption or a process crash. This issue is fixed in version 8.18.3.","status":"published","published":"2026-08-20T21:07:25.54Z","modified":"2026-10-28T11:22:40.335180547Z","cvss":[{"version":"4.0","score":5.8,"vector":"CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-122"],"updated_at":"2026-11-02T15:45:15.164658Z"},{"id":"DEBIAN-CVE-2026-70654","description":"libvips is a fast image processing library with low memory needs. Prior to version 8.18.3, applications that define unusual custom libvips sources and use them to process untrusted uncompressed PPM images can trigger a max/min error in vips_source_read_to_memory in libvips/iofuncs/source.c. The function uses VIPS_MAX instead of VIPS_MIN when selecting the remaining read size, allowing up to 4032 bytes to be written beyond the allocated heap buffer and causing memory corruption or a process crash. This issue is fixed in version 8.18.3.","status":"published","published":"2026-08-20T21:17:08.567Z","modified":"2026-10-27T09:47:43.372991752Z","cvss":[{"version":"4.0","score":5.8,"vector":"CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N/E:X/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","level":"medium"}],"updated_at":"2026-11-02T15:46:02.094661Z"},{"id":"UBUNTU-CVE-2026-70654","description":"libvips is a fast image processing library with low memory needs. Prior to version 8.18.3, applications that define unusual custom libvips sources and use them to process untrusted uncompressed PPM images can trigger a max/min error in vips_source_read_to_memory in libvips/iofuncs/source.c. The function uses VIPS_MAX instead of VIPS_MIN when selecting the remaining read size, allowing up to 4032 bytes to be written beyond the allocated heap buffer and causing memory corruption or a process crash. This issue is fixed in version 8.18.3.","status":"published","published":"2026-08-20T21:17:00Z","modified":"2026-11-04T03:30:36.014080014Z","cvss":[{"version":"4.0","score":5.8,"vector":"CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-04T03:56:39.110241Z"},{"id":"openSUSE-SU-2026:12266-1","title":"libvips-devel-8.18.7-1.1 on GA media","description":"These are all security issues fixed in the libvips-devel-8.18.7-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-10-24T00:00:00Z","modified":"2026-10-25T17:30:03.892254255Z","updated_at":"2026-11-02T16:58:40.245664Z"},{"id":"USN-8994-1","title":"vips vulnerabilities","description":"It was discovered that libvips incorrectly handled certain PDF files with a\npage that defines a width but not a height. An attacker could possibly use\nthis issue to cause libvips to crash, resulting in a denial of service, or\nobtain sensitive information. This issue only affected Ubuntu 16.04 LTS,\nUbuntu 18.04 LTS, Ubuntu 20.04 LTS, Ubuntu 22.04 LTS, and Ubuntu 24.04 LTS.\n(CVE-2025-59933)\n\nIt was discovered that libvips incorrectly determined image dimensions in\nthe vipsload operation, leading to an integer overflow. An attacker could\npossibly use this issue to cause libvips to crash, resulting in a denial of\nservice, or possibly execute arbitrary code. (CVE-2026-33327)\n\nIt was discovered that libvips incorrectly determined image dimensions in\nthe gifload operation on 32-bit systems, leading to an integer overflow. An\nattacker could possibly use this issue to cause libvips to crash, resulting\nin a denial of service. This issue only affected Ubuntu 24.04 LTS and\nUbuntu 26.04 LTS. (CVE-2026-33328)\n\nIt was discovered that libvips did not properly validate EXIF tag groups.\nAn attacker could possibly use this issue to cause libvips to crash,\nresulting in a denial of service. (CVE-2026-35590)\n\nIt was discovered that libvips incorrectly determined the number of\nchannels in certain encoded tiles within TIFF images. An attacker could\npossibly use this issue to cause libvips to crash, resulting in a denial of\nservice, or possibly execute arbitrary code. This issue only affected\nUbuntu 22.04 LTS, Ubuntu 24.04 LTS, and Ubuntu 26.04 LTS. (CVE-2026-35591)\n\nIt was discovered that libvips incorrectly validated scanlines in certain\nTIFF images with many bands, leading to an integer overflow. An attacker\ncould possibly use this issue to cause libvips to crash, resulting in a\ndenial of service, obtain sensitive information, or possibly execute\narbitrary code. (CVE-2026-69242)\n\nIt was discovered that libvips incorrectly calculated frame heights when\nloading certain multi-page TIFF images through ImageMagick. An attacker\ncould possibly use this issue to cause libvips to crash, resulting in a\ndenial of service. (CVE-2026-70651)\n\nIt was discovered that libvips incorrectly handled certain Radiance images.\nAn attacker could possibly use this issue to obtain sensitive information.\n(CVE-2026-70653)\n\nIt was discovered that libvips incorrectly calculated read sizes when\nprocessing certain uncompressed PPM images from custom sources. An attacker\ncould possibly use this issue to cause libvips to crash, resulting in a\ndenial of service, or possibly execute arbitrary code. This issue only\naffected Ubuntu 20.04 LTS, Ubuntu 22.04 LTS, Ubuntu 24.04 LTS, and Ubuntu\n26.04 LTS. (CVE-2026-70654)","status":"published","published":"2026-11-03T17:39:43Z","modified":"2026-11-04T03:43:11.896270874Z","updated_at":"2026-11-04T03:56:18.279609Z"}]}}
