CSIRTS // UNIFIED SECURITY ADVISORY FEEDSYS ● ONLINE · POWERED BY INTELFUSIONS.COM

CVE-2026-53496

mediumCVSS 5.3covered by 1 sourcefirst seen 2026-07-17
Summary ExifReader 4.40.0 can throw an uncaught RangeError: Offset is outside the bounds of the DataView while parsing crafted HEIC/AVIF files. The file only needs a valid leading ftyp box with a HEIC/AVIF major brand followed by a malformed ISO-BMFF box, such as an empty 8-byte free box or a truncated extended-size box. This is reachable through the public ExifReader.load() API for in-memory buffers and through the async file/URL loaders when an application parses attacker-supplied images. In applications that do not wrap every parse in a defensive try/catch, a single uploaded or fetched image can abort the request/worker and cause a denial of service. Credit requested: Yaohui Wang. Affected version tested - npm package: exifreader - Version: 4.40.0 - Repository commit tested: 8cb0261a26b7d986955fe0a6780f076dcb7902e7 Root cause The ISO-BMFF parser assumes that every top-level box with at least an 8-byte header also has enough bytes for the fields required by its parsed form. In src/image-header-iso-bmff.js: - findMetaBox() calls parseBox(dataView, offset) while only checking that offset + 8 <= dataView.byteLength. - parseBox() calls getBoxLength() and then unconditionally reads fields such as the full-box version byte for meta/iloc/iinf/idat boxes. - getBoxLength() handles boxLength === 1 by calling hasEmptyHighBits(dataView, offset), which reads dataView.getUint32(offset + 8) without first checking that the 64-bit extended size field is present. As a result, syntactically small or truncated boxes after a valid HEIC/AVIF ftyp box escape the format-detection catch blocks and throw from the main parsing path. Reproduction Run this from the repository root against the committed dist/exif-reader.js bundle: const ExifReader = require('./dist/exif-reader.js'); function u32be(n) { return [(n >>> 24) & 255, (n >>> 16) & 255, (n >>> 8) & 255, n & 255]; } function ascii(s) { return Array.from(Buffer.from(s, 'ascii')); } function box(type, content = []) { return

⚡ Watch CVE-2026-53496

Get an email if CVE-2026-53496 is added to CISA KEV, gains public exploit code, or a new advisory cites it — max one per day, one-click unsubscribe.

Advisory coverage (1)

External references

NVD record for CVE-2026-53496

CVE.org record

Embed the live status

CVE-2026-53496 live status badge — this badge updates automatically when the KEV or exploit status changes. How to embed it →

[![CVE-2026-53496 status](https://www.csirts.com/badge/CVE-2026-53496)](https://www.csirts.com/cve/CVE-2026-53496)