CVE-2026-9499 (GCVE-0-2026-9499)

Vulnerability from cvelistv5 – Published: 2026-07-21 13:25 – Updated: 2026-07-21 13:25
VLAI
Title
Out-of-bounds read in QTextCodec::codecForName() in Qt
Summary
An out-of-bounds read (buffer over-read) vulnerability exists in QTextCodec::codecForName() in Qt. When the function is called with a QByteArray that is not NUL-terminated (for example, one created with QByteArray::fromRawData()), the codec-name matching routine reads past the end of the supplied buffer. In most cases this results in an incorrect text codec being selected; in the worst case, if the over-read reaches unmapped memory, the process crashes (denial of service). The over-read is bounded by the length of the longest codec-name candidate, and the out-of-bounds bytes are only compared internally against Qt's fixed list of codec names, so no data is disclosed to an attacker. Applications that do not pass non-NUL-terminated QByteArrays to QTextCodec::codecForName() are not exposed. The affected code resides in the Qt5Compat module from Qt 6.0.0 onward, and in Qt Core (qtbase) in Qt 4.x and Qt 5.x.
CWE
Assigner
Impacted products
Vendor Product Version
Qt Qt Affected: 6.0.0 , < 6.8.8 (python)
Affected: 6.9.0 , < 6.11.1 (python)
    cpe:2.3:a:qt:qt:*:*:*:*:*:*:*:*
Create a notification for this product.
Qt Qt Affected: 4.0.0 , < 6.0.0 (python)
    cpe:2.3:a:qt:qt:*:*:*:*:*:*:*:*
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "cpes": [
            "cpe:2.3:a:qt:qt:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "Qt5Compat (Core5Compat)"
          ],
          "product": "Qt",
          "vendor": "Qt",
          "versions": [
            {
              "lessThan": "6.8.8",
              "status": "affected",
              "version": "6.0.0",
              "versionType": "python"
            },
            {
              "lessThan": "6.11.1",
              "status": "affected",
              "version": "6.9.0",
              "versionType": "python"
            }
          ]
        },
        {
          "cpes": [
            "cpe:2.3:a:qt:qt:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "qtbase"
          ],
          "product": "Qt",
          "vendor": "Qt",
          "versions": [
            {
              "lessThan": "6.0.0",
              "status": "affected",
              "version": "4.0.0",
              "versionType": "python"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:a:qt:qt:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.8.8",
                  "versionStartIncluding": "6.0.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:qt:qt:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.11.1",
                  "versionStartIncluding": "6.9.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            },
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:a:qt:qt:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.0.0",
                  "versionStartIncluding": "4.0.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ],
          "operator": "OR"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "An out-of-bounds read (buffer over-read) vulnerability exists in \u003ccode\u003eQTextCodec::codecForName()\u003c/code\u003e in Qt. When the function is called with a \u003ccode\u003eQByteArray\u003c/code\u003e that is not NUL-terminated (for example, one created with \u003ccode\u003eQByteArray::fromRawData()\u003c/code\u003e), the codec-name matching routine reads past the end of the supplied buffer. In most cases this results in an incorrect text codec being selected; in the worst case, if the over-read reaches unmapped memory, the process crashes (denial of service). The over-read is bounded by the length of the longest codec-name candidate, and the out-of-bounds bytes are only compared internally against Qt\u0027s fixed list of codec names, so no data is disclosed to an attacker. Applications that do not pass non-NUL-terminated \u003ccode\u003eQByteArray\u003c/code\u003es to \u003ccode\u003eQTextCodec::codecForName()\u003c/code\u003e are not exposed. The affected code resides in the Qt5Compat module from Qt 6.0.0 onward, and in Qt Core (qtbase) in Qt 4.x and Qt 5.x."
            }
          ],
          "value": "An out-of-bounds read (buffer over-read) vulnerability exists in QTextCodec::codecForName() in Qt. When the function is called with a QByteArray that is not NUL-terminated (for example, one created with QByteArray::fromRawData()), the codec-name matching routine reads past the end of the supplied buffer. In most cases this results in an incorrect text codec being selected; in the worst case, if the over-read reaches unmapped memory, the process crashes (denial of service). The over-read is bounded by the length of the longest codec-name candidate, and the out-of-bounds bytes are only compared internally against Qt\u0027s fixed list of codec names, so no data is disclosed to an attacker. Applications that do not pass non-NUL-terminated QByteArrays to QTextCodec::codecForName() are not exposed. The affected code resides in the Qt5Compat module from Qt 6.0.0 onward, and in Qt Core (qtbase) in Qt 4.x and Qt 5.x."
        }
      ],
      "impacts": [
        {
          "capecId": "CAPEC-540",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-540 Overread Buffers"
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "Automatable": "NOT_DEFINED",
            "Recovery": "NOT_DEFINED",
            "Safety": "NOT_DEFINED",
            "attackComplexity": "LOW",
            "attackRequirements": "PRESENT",
            "attackVector": "NETWORK",
            "baseScore": 6.3,
            "baseSeverity": "MEDIUM",
            "exploitMaturity": "NOT_DEFINED",
            "privilegesRequired": "NONE",
            "providerUrgency": "NOT_DEFINED",
            "subAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "NONE",
            "subIntegrityImpact": "NONE",
            "userInteraction": "NONE",
            "valueDensity": "NOT_DEFINED",
            "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N",
            "version": "4.0",
            "vulnAvailabilityImpact": "LOW",
            "vulnConfidentialityImpact": "NONE",
            "vulnIntegrityImpact": "LOW",
            "vulnerabilityResponseEffort": "NOT_DEFINED"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-125",
              "description": "CWE-125 Out-of-bounds Read",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-07-21T13:25:27.477Z",
        "orgId": "a59d8014-47c4-4630-ab43-e1b13cbe58e3",
        "shortName": "TQtC"
      },
      "references": [
        {
          "name": "Fix (dev, released in Qt 6.12.0)",
          "tags": [
            "patch"
          ],
          "url": "https://codereview.qt-project.org/c/qt/qt5compat/+/723911"
        },
        {
          "name": "Fix (6.11 branch, released in Qt 6.11.1)",
          "tags": [
            "patch"
          ],
          "url": "https://codereview.qt-project.org/c/qt/qt5compat/+/724348"
        },
        {
          "name": "Fix (6.10 branch)",
          "tags": [
            "patch"
          ],
          "url": "https://codereview.qt-project.org/c/qt/qt5compat/+/724995"
        },
        {
          "name": "Fix (6.8 LTS branch, released in Qt 6.8.8)",
          "tags": [
            "patch"
          ],
          "url": "https://codereview.qt-project.org/c/qt/tqtc-qt5compat/+/725112"
        }
      ],
      "solutions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eUpdate to Qt 6.8.8, Qt 6.11.1, Qt 6.12.0, or later, or apply the referenced patch.\u003c/p\u003e"
            }
          ],
          "value": "Update to Qt 6.8.8, Qt 6.11.1, Qt 6.12.0, or later, or apply the referenced patch."
        }
      ],
      "source": {
        "discovery": "INTERNAL"
      },
      "title": "Out-of-bounds read in QTextCodec::codecForName() in Qt",
      "x_generator": {
        "engine": "Vulnogram 1.0.4"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "a59d8014-47c4-4630-ab43-e1b13cbe58e3",
    "assignerShortName": "TQtC",
    "cveId": "CVE-2026-9499",
    "datePublished": "2026-07-21T13:25:27.477Z",
    "dateReserved": "2026-05-25T09:55:56.600Z",
    "dateUpdated": "2026-07-21T13:25:27.477Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-9499\",\"sourceIdentifier\":\"a59d8014-47c4-4630-ab43-e1b13cbe58e3\",\"published\":\"2026-07-21T14:16:35.843\",\"lastModified\":\"2026-07-21T14:16:35.843\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"An out-of-bounds read (buffer over-read) vulnerability exists in QTextCodec::codecForName() in Qt. When the function is called with a QByteArray that is not NUL-terminated (for example, one created with QByteArray::fromRawData()), the codec-name matching routine reads past the end of the supplied buffer. In most cases this results in an incorrect text codec being selected; in the worst case, if the over-read reaches unmapped memory, the process crashes (denial of service). The over-read is bounded by the length of the longest codec-name candidate, and the out-of-bounds bytes are only compared internally against Qt\u0027s fixed list of codec names, so no data is disclosed to an attacker. Applications that do not pass non-NUL-terminated QByteArrays to QTextCodec::codecForName() are not exposed. The affected code resides in the Qt5Compat module from Qt 6.0.0 onward, and in Qt Core (qtbase) in Qt 4.x and Qt 5.x.\"}],\"affected\":[{\"source\":\"a59d8014-47c4-4630-ab43-e1b13cbe58e3\",\"affectedData\":[{\"vendor\":\"Qt\",\"product\":\"Qt\",\"defaultStatus\":\"unaffected\",\"cpes\":[\"cpe:2.3:a:qt:qt:*:*:*:*:*:*:*:*\"],\"modules\":[\"Qt5Compat (Core5Compat)\"],\"versions\":[{\"version\":\"6.0.0\",\"lessThan\":\"6.8.8\",\"versionType\":\"python\",\"status\":\"affected\"},{\"version\":\"6.9.0\",\"lessThan\":\"6.11.1\",\"versionType\":\"python\",\"status\":\"affected\"}]},{\"vendor\":\"Qt\",\"product\":\"Qt\",\"defaultStatus\":\"unaffected\",\"cpes\":[\"cpe:2.3:a:qt:qt:*:*:*:*:*:*:*:*\"],\"modules\":[\"qtbase\"],\"versions\":[{\"version\":\"4.0.0\",\"lessThan\":\"6.0.0\",\"versionType\":\"python\",\"status\":\"affected\"}]}]}],\"metrics\":{\"cvssMetricV40\":[{\"source\":\"a59d8014-47c4-4630-ab43-e1b13cbe58e3\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"4.0\",\"vectorString\":\"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:L/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\",\"baseScore\":6.3,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"attackRequirements\":\"PRESENT\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"vulnConfidentialityImpact\":\"NONE\",\"vulnIntegrityImpact\":\"LOW\",\"vulnAvailabilityImpact\":\"LOW\",\"subConfidentialityImpact\":\"NONE\",\"subIntegrityImpact\":\"NONE\",\"subAvailabilityImpact\":\"NONE\",\"exploitMaturity\":\"NOT_DEFINED\",\"confidentialityRequirement\":\"NOT_DEFINED\",\"integrityRequirement\":\"NOT_DEFINED\",\"availabilityRequirement\":\"NOT_DEFINED\",\"modifiedAttackVector\":\"NOT_DEFINED\",\"modifiedAttackComplexity\":\"NOT_DEFINED\",\"modifiedAttackRequirements\":\"NOT_DEFINED\",\"modifiedPrivilegesRequired\":\"NOT_DEFINED\",\"modifiedUserInteraction\":\"NOT_DEFINED\",\"modifiedVulnConfidentialityImpact\":\"NOT_DEFINED\",\"modifiedVulnIntegrityImpact\":\"NOT_DEFINED\",\"modifiedVulnAvailabilityImpact\":\"NOT_DEFINED\",\"modifiedSubConfidentialityImpact\":\"NOT_DEFINED\",\"modifiedSubIntegrityImpact\":\"NOT_DEFINED\",\"modifiedSubAvailabilityImpact\":\"NOT_DEFINED\",\"Safety\":\"NOT_DEFINED\",\"Automatable\":\"NOT_DEFINED\",\"Recovery\":\"NOT_DEFINED\",\"valueDensity\":\"NOT_DEFINED\",\"vulnerabilityResponseEffort\":\"NOT_DEFINED\",\"providerUrgency\":\"NOT_DEFINED\"}}]},\"weaknesses\":[{\"source\":\"a59d8014-47c4-4630-ab43-e1b13cbe58e3\",\"type\":\"Secondary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-125\"}]}],\"references\":[{\"url\":\"https://codereview.qt-project.org/c/qt/qt5compat/+/723911\",\"source\":\"a59d8014-47c4-4630-ab43-e1b13cbe58e3\"},{\"url\":\"https://codereview.qt-project.org/c/qt/qt5compat/+/724348\",\"source\":\"a59d8014-47c4-4630-ab43-e1b13cbe58e3\"},{\"url\":\"https://codereview.qt-project.org/c/qt/qt5compat/+/724995\",\"source\":\"a59d8014-47c4-4630-ab43-e1b13cbe58e3\"},{\"url\":\"https://codereview.qt-project.org/c/qt/tqtc-qt5compat/+/725112\",\"source\":\"a59d8014-47c4-4630-ab43-e1b13cbe58e3\"}]}}"
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…