☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Qt logo [ WEBSITE ] [ VENDOR STATS ]
SOON 🐛 CWE-122
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-6210

CVE-2026-6210 is a type confusion vulnerability in the Qt SVG library affecting versions 6.
📅 PUBLISHED: 2026-05-06 11:59 UTC 🔄 UPDATED: 2026-09-23 20:42 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.28%
👁️
0.28% probability
7.0× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1203
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-6210 is a type confusion vulnerability in the Qt SVG library affecting versions 6.7.0 through 6.8.7 and 6.9.0 through 6.11.0. The flaw resides in the SVG marker rendering logic, where the renderer retrieves a node by its id attribute and casts it to QSvgMarker* without verifying the actual node type. An attacker can craft an SVG image containing a non-marker element (e.g., a <line> element) that references itself as a marker, triggering an out-of-bounds heap read due to the object size difference between QSvgLine and QSvgMarker. This is followed by an endless recursion that bypasses the marker recursion guard through incorrect virtual dispatch, resulting in an application crash (denial of service). The vulnerability requires user interaction (opening a malicious SVG) and has a CVSS score of 6.5 (Medium). No public exploit code or PoC is currently available, but the attack vector is straightforward for any application using Qt SVG to render untrusted SVG content.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

Qt SVG is a core component of the Qt framework, widely used in desktop applications, embedded systems, and industrial software. The vulnerability can be exploited via any application that renders SVG images using the Qt SVG library, including document viewers, web browsers, and graphic design tools. Since Qt is distributed as a binary package via official Qt installers, package managers (e.g., vcpkg, Conan), and Linux distribution repositories, the supply chain risk is significant. Organizations should verify the version of Qt SVG in their software bill of materials (SBOM) and apply the fixed version (6.8.8 or 6.11.1) as soon as it becomes available.

CVSS Breakdown & Threat Level

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
Base Score: 6.5 (Medium)

  • Attack Vector (AV): Network – the malicious SVG can be delivered over the network (e.g., via email, web download).
  • Attack Complexity (AC): Low – no special conditions required; the SVG is parsed normally.
  • Privileges Required (PR): None – no authentication needed.
  • User Interaction (UI): Required – the victim must open the SVG file.
  • Scope (S): Unchanged – the vulnerable component is the only one affected.
  • Confidentiality (C): None – no data leakage.
  • Integrity (I): None – no data modification.
  • Availability (A): High – the application crashes, causing denial of service.

Threat Level: Medium. The vulnerability is easy to exploit but only leads to a denial of service, not remote code execution. However, in critical infrastructure or real-time systems, a crash can have severe operational impact.

Deep Dive & Mechanics

The vulnerability is a classic type confusion (CWE-843) in the SVG marker resolution logic. When the Qt SVG renderer encounters a <marker> reference (e.g., marker-start="url(#myMarker)"), it calls a function that looks up the referenced element by its id attribute. The function then performs a static_cast<QSvgMarker*> on the returned node pointer without checking if the node is actually a QSvgMarker object.

In a normal scenario, the referenced element is a <marker> element, which is represented by QSvgMarker. However, an attacker can create a <line> element (represented by QSvgLine) with an id that matches the marker reference. When the renderer casts the QSvgLine object to QSvgMarker, the resulting pointer points to an object of a different size and layout. This leads to an out-of-bounds heap read when the renderer accesses member variables that exist only in QSvgMarker.

Furthermore, if the <line> element references itself as a marker (e.g., <line id="x" marker-start="url(#x)" .../>), the recursion guard that normally prevents infinite loops is bypassed because the virtual dispatch mechanism is corrupted by the type confusion. The renderer enters an endless recursion, eventually causing a stack overflow or heap exhaustion, resulting in a crash.

The vulnerable code path is in the QSvgHandler::resolveMarker function (or similar), which does not perform a dynamic_cast or type check before the cast. The fix involves adding a type verification (e.g., using qobject_cast or checking the node type) before the cast, and ensuring the recursion guard works correctly even with malformed references.

Vulnerable vs. Patched Code

Vulnerable Code (Qt SVG < 6.8.8 / < 6.11.1):

// In QSvgHandler::resolveMarker or similar
QSvgMarker* marker = static_cast<QSvgMarker*>(node);
// No type check - assumes node is always QSvgMarker
marker->setRef(...); // Out-of-bounds read if node is QSvgLine

Patched Code (Qt SVG >= 6.8.8 / >= 6.11.1):

// In QSvgHandler::resolveMarker or similar
QSvgMarker* marker = qobject_cast<QSvgMarker*>(node);
if (!marker) {
    // Invalid marker reference - skip or handle gracefully
    return;
}
marker->setRef(...);

The patched code uses qobject_cast (which performs a runtime type check) instead of static_cast. If the node is not a QSvgMarker, the cast returns nullptr, and the function safely returns without accessing invalid memory. Additionally, the recursion guard is hardened to prevent bypass via corrupted virtual tables.

Exploitation & Lab Setup

Red Team (Exploitation)

Objective: Cause a denial of service in any application using Qt SVG to render SVG images.

Attack Vector: Deliver a crafted SVG file to the victim via email, web download, or file upload.

Crafted SVG Example:

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <defs>
    <line id="malicious" x1="0" y1="0" x2="100" y2="100" stroke="black" marker-start="url(#malicious)"/>
  </defs>
  <use href="#malicious"/>
</svg>

Steps:

  1. Create the SVG file with a <line> element that has an id and references itself as a marker.
  2. Deliver the SVG to the target application (e.g., via a web browser that uses Qt WebEngine, or a document viewer like Okular).
  3. When the application renders the SVG, the type confusion and recursion cause a crash.

Note: No public exploit code exists, but the above SVG is a minimal PoC. The crash may be immediate or delayed depending on the application's memory management.

Blue Team (Defense)

Detection:

  • Monitor for crashes in applications that use Qt SVG (e.g., okular, qpdfview, Qt Designer).
  • Use file scanning to detect SVG files containing self-referencing markers (e.g., marker-start="url(#...)" where the id matches the referencing element).
  • Implement network filtering to block SVG files from untrusted sources.

Mitigation:

  • Update Qt SVG to version 6.8.8 or 6.11.1 as soon as the patch is released.
  • If patching is not immediately possible, disable SVG rendering in applications that do not require it.
  • Use a sandbox or container to isolate applications that process untrusted SVG files.

Forensics:

  • Collect crash dumps and analyze the call stack for signs of recursion or type confusion in QSvgHandler::resolveMarker.
  • Check for the presence of the malicious SVG file in the application's temporary directory.

Indicators of Compromise (IOCs)

  • File Hashes (SHA256): (Example – actual hash depends on the crafted SVG)
    • e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 (placeholder)
  • File Patterns:
    • SVG files containing <line id="..." marker-start="url(#...)"/> where the id matches the url() reference.
    • SVG files with <marker> elements that are actually <line> or other non-marker elements.
  • Network Indicators:
    • HTTP responses with Content-Type: image/svg+xml from untrusted sources.
  • Behavioral Indicators:
    • Application crashes with stack traces showing recursion in QSvgHandler::resolveMarker or QSvgMarker::setRef.
    • High CPU usage followed by a crash when rendering SVG files.

Detection Engineering

YARA Rule

rule CVE_2026_6210_SVG_Marker_TypeConfusion {
    meta:
        description = "Detects SVG files exploiting CVE-2026-6210 type confusion in Qt SVG marker handling"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2026-6210"
    strings:
        $marker_ref = /marker-(start|mid|end)\s*=\s*"url\(\s*#[a-zA-Z0-9_-]+\s*\)"/ nocase
        $self_ref = /id\s*=\s*"([a-zA-Z0-9_-]+)"[\s\S]*?marker-(start|mid|end)\s*=\s*"url\(\s*#\1\s*\)"/ nocase
    condition:
        $marker_ref and $self_ref
}

Sigma Rule

title: CVE-2026-6210 Qt SVG Marker Type Confusion Exploitation Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects attempts to exploit CVE-2026-6210 via crafted SVG files with self-referencing markers
author: Valters IT
date: 2025-04-10
logsource:
    category: file_event
    product: windows
detection:
    selection:
        Image|endswith: '.svg'
        TargetFilename|contains: 'marker-start="url(#'
    condition: selection
falsepositives:
    - Legitimate SVG files with complex marker references (rare)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2026-6210 Qt SVG Marker Type Confusion Exploit Attempt"; flow:to_client,established; content:"image/svg+xml"; http_content_type; content:"marker-start"; http_server_body; content:"url(#"; http_server_body; distance:0; within:100; reference:url,https://nvd.nist.gov/vuln/detail/CVE-2026-6210; classtype:attempted-dos; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Update Qt SVG to version 6.8.8 or 6.11.1 as soon as the patch is released by the Qt Project.
  2. Disable SVG rendering in applications that do not require it (e.g., set environment variable QT_SVG_DISABLE=1 or configure the application to not use the SVG plugin).
  3. Implement input validation for SVG files: scan for self-referencing markers and reject suspicious files.

Long-Term Measures:

  • Adopt safe coding practices in Qt SVG: always use qobject_cast or dynamic_cast when downcasting QObject-derived types.
  • Add fuzz testing for SVG parsing to catch similar type confusion vulnerabilities.
  • Monitor the Qt Project's security advisories for updates.

Workarounds (if patching is delayed):

  • Use a different SVG rendering library (e.g., librsvg) for untrusted content.
  • Run applications that process SVG in a sandboxed environment (e.g., Docker, Firejail) to limit the impact of a crash.

Valters IT
DevSecOps & Cyber Threat Intelligence Expert

{/* [Security Hash: 58CA1F004386B3CDCEC40462] */}

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-6210/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.