2026-05-06 11:59CVE-2026-6210TQtC
PUBLISHED5.2CWE-843CWE-122

Type confusion and heap-buffer-overflow in Qt SVG marker handling causing application crash

A type confusion vulnerability in Qt SVG allows an attacker to cause an application crash via a crafted SVG image.

When processing SVG marker references, the renderer retrieves a node by its id attribute and casts it to QSvgMarker* without verifying the node type. A non-marker element (such as a <line> element) that references itself as a marker triggers an out-of-bounds heap read due to the object size difference between QSvgLine and QSvgMarker,

followed by an endless recursion that bypasses the marker recursion

guard through incorrect virtual dispatch. The result is an application

crash (denial of service).

This issue affects Qt SVG: 

from 6.7.0 before 6.8.8, from 6.9.0 before 6.11.1.

Problem type

Affected products

The Qt Company

Qt

< 6.8.8 - AFFECTED

< 6.11.1 - AFFECTED

References

GitHub Security Advisories

GHSA-mh4x-qpf6-hr3q

A type confusion vulnerability in Qt SVG allows an attacker to cause an application crash via a...

https://github.com/advisories/GHSA-mh4x-qpf6-hr3q

A type confusion vulnerability in Qt SVG allows an attacker to cause an application crash via a crafted SVG image.

When processing SVG marker references, the renderer retrieves a node by its id attribute and casts it to QSvgMarker* without verifying the node type. A non-marker element (such as a element) that references itself as a marker triggers an out-of-bounds heap read due to the object size difference between QSvgLine and QSvgMarker, followed by an endless recursion that bypasses the marker recursion guard through incorrect virtual dispatch. The result is an application crash (denial of service).

This issue affects Qt SVG:  from 6.7.0 before 6.8.8, from 6.9.0 before 6.11.1.

JSON source

https://cveawg.mitre.org/api/cve/CVE-2026-6210
Click to expand
{
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "cveMetadata": {
    "cveId": "CVE-2026-6210",
    "assignerOrgId": "a59d8014-47c4-4630-ab43-e1b13cbe58e3",
    "assignerShortName": "TQtC",
    "dateUpdated": "2026-05-06T13:11:44.674Z",
    "dateReserved": "2026-04-13T12:16:27.416Z",
    "datePublished": "2026-05-06T11:59:01.727Z",
    "state": "PUBLISHED"
  },
  "containers": {
    "cna": {
      "providerMetadata": {
        "orgId": "a59d8014-47c4-4630-ab43-e1b13cbe58e3",
        "shortName": "TQtC",
        "dateUpdated": "2026-05-06T11:59:01.727Z"
      },
      "title": "Type confusion and heap-buffer-overflow in Qt SVG marker handling causing application crash",
      "descriptions": [
        {
          "lang": "en",
          "value": "A type confusion vulnerability in Qt SVG allows an attacker to cause an application crash via a crafted SVG image.\n\n\n\nWhen processing SVG marker references, the renderer retrieves a node by its id attribute and casts it to QSvgMarker* without verifying the node type. A non-marker element (such as a <line> element) that references itself as a marker triggers an out-of-bounds heap read due to the object size difference between QSvgLine and QSvgMarker,\n followed by an endless recursion that bypasses the marker recursion \nguard through incorrect virtual dispatch. The result is an application \ncrash (denial of service).\n\n\n\nThis issue affects Qt SVG: \nfrom 6.7.0 before 6.8.8, from 6.9.0 before 6.11.1.",
          "supportingMedia": [
            {
              "type": "text/html",
              "base64": false,
              "value": "<p>A type confusion vulnerability in Qt SVG allows an attacker to cause an application crash via a crafted SVG image.</p><p>When processing SVG marker references, the renderer retrieves a node by its <code>id</code> attribute and casts it to <code>QSvgMarker*</code> without verifying the node type. A non-marker element (such as a <code>&lt;line&gt;</code> element) that references itself as a marker triggers an out-of-bounds heap read due to the object size difference between <code>QSvgLine</code> and <code>QSvgMarker</code>,\n followed by an endless recursion that bypasses the marker recursion \nguard through incorrect virtual dispatch. The result is an application \ncrash (denial of service).</p><p>This issue affects Qt SVG:&nbsp;\nfrom 6.7.0 before 6.8.8, from 6.9.0 before 6.11.1.</p>"
            }
          ]
        }
      ],
      "affected": [
        {
          "vendor": "The Qt Company",
          "product": "Qt",
          "modules": [
            "Qt SVG"
          ],
          "programFiles": [
            "src/svg/qsvgstructure.cpp"
          ],
          "repo": "git://code.qt.io/qt/qtsvg.git",
          "defaultStatus": "unaffected",
          "versions": [
            {
              "version": "6.7.0",
              "status": "affected",
              "versionType": "python",
              "lessThan": "6.8.8"
            },
            {
              "version": "6.9.0",
              "status": "affected",
              "versionType": "python",
              "lessThan": "6.11.1"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "lang": "en",
              "description": "CWE-843 Access of Resource Using Incompatible Type ('Type Confusion')",
              "cweId": "CWE-843",
              "type": "CWE"
            }
          ]
        },
        {
          "descriptions": [
            {
              "lang": "en",
              "description": "CWE-122 Heap-based Buffer Overflow",
              "cweId": "CWE-122",
              "type": "CWE"
            }
          ]
        }
      ],
      "references": [
        {
          "url": "https://codereview.qt-project.org/c/qt/qtsvg/+/724887"
        },
        {
          "url": "https://issues.oss-fuzz.com/issues/496327371"
        }
      ],
      "impacts": [
        {
          "descriptions": [
            {
              "lang": "en",
              "value": "Application crash (denial of service)"
            }
          ]
        },
        {
          "descriptions": [
            {
              "lang": "en",
              "value": "Heap-based buffer overflow via out-of-bounds field access on miscast pointer"
            }
          ]
        },
        {
          "descriptions": [
            {
              "lang": "en",
              "value": "Endless recursion due to recursion guard bypass on miscast vtable dispatch"
            }
          ]
        }
      ],
      "metrics": [
        {
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "solutions": [
        {
          "lang": "en",
          "value": "Apply fix:  https://codereview.qt-project.org/c/qt/qtsvg/+/724887",
          "supportingMedia": [
            {
              "type": "text/html",
              "base64": false,
              "value": "Apply fix: <a href=\"https://codereview.qt-project.org/c/qt/qtsvg/+/724887\">https://codereview.qt-project.org/c/qt/qtsvg/+/724887</a>"
            }
          ]
        }
      ]
    },
    "adp": [
      {
        "providerMetadata": {
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP",
          "dateUpdated": "2026-05-06T13:11:44.674Z"
        },
        "title": "CISA ADP Vulnrichment",
        "metrics": [
          {}
        ]
      }
    ]
  }
}