Skip to content
Heist/ feed
Back to feed
Medium

ExifReader HEIC/AVIF ISO-BMFF parser throws uncaught RangeError on truncated boxes

Type: advisorySources: OSV

ExifReader is a JavaScript Exif information parser. Prior to 4.40.1, ExifReader.load() and the asynchronous file and URL loaders can pass attacker-supplied HEIC or AVIF data to the ISO-BMFF parser in src/image-header-iso-bmff.js, where findMetaBox() and parseBox() accept an eight-byte box header without confirming that fields required by the parsed box remain in the DataView. A valid ftyp box followed by an empty free or unknown box can cause an unchecked full-box version read, while a truncated extended-size box can make getBoxLength() and hasEmptyHighBits() read absent size fields. The resulting RangeError escapes the main parsing path and can abort an application request or worker when parse errors are not defensively caught, causing denial of service. This issue is fixed in version 4.40.1.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-53496
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 02:07 UTC · Revision 1

Source evidence

ExifReader HEIC/AVIF ISO-BMFF parser throws uncaught RangeError on truncated boxes

core-osv · Original source

Published 14 Sept 2026, 16:12 UTC

ExifReader is a JavaScript Exif information parser. Prior to 4.40.1, ExifReader.load() and the asynchronous file and URL loaders can pass attacker-supplied HEIC or AVIF data to the ISO-BMFF parser in src/image-header-iso-bmff.js, where findMetaBox() and parseBox() accept an eight-byte box header without confirming that fields required by the parsed box remain in the DataView. A valid ftyp box followed by an empty free or unknown box can cause an unchecked full-box version read, while a truncated extended-size box can make getBoxLength() and hasEmptyHighBits() read absent size fields. The resulting RangeError escapes the main parsing path and can abort an application request or worker when parse errors are not defensively caught, causing denial of service. This issue is fixed in version 4.40.1.

osv:CVE-2026-53496
Complete source record
{
  "id": "cdcce74ad83d7cc7b249374be68228fc2f2904eaac6bbefce8b4ab89c5b90e48",
  "url": "https://osv.dev/vulnerability/CVE-2026-53496",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "ExifReader HEIC/AVIF ISO-BMFF parser throws uncaught RangeError on truncated boxes",
    "summary": "ExifReader is a JavaScript Exif information parser. Prior to 4.40.1, ExifReader.load() and the asynchronous file and URL loaders can pass attacker-supplied HEIC or AVIF data to the ISO-BMFF parser in src/image-header-iso-bmff.js, where findMetaBox() and parseBox() accept an eight-byte box header without confirming that fields required by the parsed box remain in the DataView. A valid ftyp box followed by an empty free or unknown box can cause an unchecked full-box version read, while a truncated extended-size box can make getBoxLength() and hasEmptyHighBits() read absent size fields. The resulting RangeError escapes the main parsing path and can abort an application request or worker when parse errors are not defensively caught, causing denial of service. This issue is fixed in version 4.40.1.",
    "evidence": "osv:CVE-2026-53496",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-53496",
      "aliases": [
        "CVE-2026-53496",
        "GHSA-g77h-45rf-hcx4"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/mattiasw/exifreader",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "0ea9d58c48fb64b7aea744c4222671db18e2ea88"
                },
                {
                  "fixed": "00878ca9df0e26480dda7a931c888048c9f7be45"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "4.40.1"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "00878ca9df0e26480dda7a931c888048c9f7be45"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "0ea9d58c48fb64b7aea744c4222671db18e2ea88"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v4.40.1"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v4.40.0",
            "v4.39.1",
            "v4.39.0",
            "v4.38.1",
            "v4.38.0",
            "v4.37.1",
            "v4.37.0",
            "v4.36.2",
            "v4.36.1",
            "v4.36.0",
            "v4.35.0",
            "v4.34.0",
            "v4.33.1",
            "v4.33.0",
            "v4.32.0",
            "v4.31.2",
            "v4.31.1",
            "v4.31.0",
            "v4.30.1",
            "v4.30.0",
            "v4.29.0",
            "v4.28.1",
            "v4.28.0",
            "v4.27.0",
            "v4.26.2",
            "v4.26.1",
            "v4.26.0",
            "v4.25.0",
            "v4.24.0",
            "v4.23.7",
            "v4.23.6",
            "v4.23.5",
            "v4.23.4",
            "v4.23.3",
            "v4.23.2",
            "v4.23.1",
            "v4.23.0",
            "v4.22.1",
            "v4.22.0",
            "v4.21.1",
            "v4.21.0",
            "v4.20.0",
            "v4.19.1",
            "v4.19.0",
            "v4.18.0",
            "v4.16.0",
            "v4.15.0",
            "v4.14.1",
            "v4.14.0",
            "4.14.0",
            "4.13.2",
            "4.13.1",
            "v4.13.0",
            "4.13.0",
            "4.12.1",
            "v4.12.0",
            "4.12.0",
            "v4.11.1",
            "4.11.1",
            "v4.11.0",
            "4.11.0",
            "v4.10.0",
            "4.10.0",
            "v4.9.2",
            "4.9.2",
            "v4.9.1",
            "4.9.1",
            "v4.9.0",
            "4.9.0",
            "v4.8.1",
            "4.8.1",
            "v4.8.0",
            "4.8.0",
            "v4.7.0",
            "4.7.0",
            "v4.6.0",
            "4.6.0",
            "v4.5.1",
            "4.5.1",
            "v4.5.0",
            "4.5.0",
            "v4.4.0",
            "4.4.0",
            "v4.3.1",
            "4.3.1",
            "v4.3.0",
            "4.3.0",
            "v4.2.0",
            "4.2.0",
            "v4.1.1",
            "4.1.1",
            "v4.1.0",
            "4.1.0",
            "v4.0.0",
            "4.0.0",
            "v3.16.0",
            "3.16.0",
            "v3.15.0",
            "3.15.0",
            "v3.14.1",
            "3.14.1",
            "v3.14.0",
            "3.14.0",
            "v3.13.0",
            "3.13.0",
            "v3.12.6",
            "3.12.6",
            "v3.12.5",
            "3.12.5",
            "v3.12.4",
            "3.12.4",
            "v3.12.3",
            "3.12.3",
            "v3.12.2",
            "3.12.2",
            "3.12.1",
            "v3.12.0",
            "3.12.0",
            "v3.11.2",
            "3.11.2",
            "v3.11.1",
            "3.11.1",
            "v3.11.0",
            "3.11.0",
            "v3.10.0",
            "3.10.0",
            "v3.9.0",
            "3.9.0",
            "v3.8.0",
            "3.8.0",
            "v3.7.0",
            "3.7.0",
            "v3.6.1",
            "3.6.1",
            "3.6.0",
            "3.4.0",
            "3.3.0",
            "3.2.0",
            "3.1.0",
            "3.0.0",
            "2.13.1",
            "2.13.0",
            "2.12.0",
            "2.11.0",
            "2.10.0",
            "2.9.0",
            "2.8.5",
            "2.8.4",
            "2.8.3",
            "2.8.2",
            "2.8.1",
            "2.7.0",
            "2.6.0",
            "2.5.0",
            "2.4.0",
            "2.3.0",
            "2.2.0",
            "2.1.2",
            "2.1.1",
            "2.1.0",
            "2.0.2",
            "v1.1.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-53496.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:32.365375676Z",
      "provider": "osv",
      "references": [
        "https://github.com/mattiasw/ExifReader/releases/tag/v4.40.1",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/53xxx/CVE-2026-53496.json",
        "https://github.com/mattiasw/ExifReader/security/advisories/GHSA-g77h-45rf-hcx4",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-53496",
        "https://github.com/mattiasw/ExifReader/commit/00878ca9df0e26480dda7a931c888048c9f7be45"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-248",
          "CWE-755"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/53xxx/CVE-2026-53496.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-53496",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 499553,
  "published_at": "2026-09-14T16:12:43.777+00:00"
}