CVE-2026-54701 (GCVE-0-2026-54701)
Vulnerability from cvelistv5
Published
2026-10-14 19:11
Modified
2026-10-20 02:01
CWE
  • CWE-79 - Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
Summary
Markdown Preview Enhanced is a Markdown preview extension for Visual Studio Code. Prior to 0.8.30, Markdown Preview Enhanced reads repository-controlled .crossnote/head.html content and passes it through resolvePathsInHeader before inserting it into the head of the preview webview document without removing executable content. Script-capable markup executes while the document loads, before the React application and DOMPurify initialize, and can access acquireVsCodeApi to send messages from the webview to the extension host. Opening a Markdown preview in a malicious repository is sufficient to trigger the injected content, and no additional click within the notification or preview is required. This issue is fixed in version 0.8.30.
Impacted products
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-54701",
                "options": [
                  {
                    "Exploitation": "poc"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-10-20T02:00:52.506160Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-10-20T02:01:15.836Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "references": [
          {
            "tags": [
              "exploit"
            ],
            "url": "https://github.com/shd101wyy/vscode-markdown-preview-enhanced/security/advisories/GHSA-mcwg-4j78-qwv3"
          }
        ],
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "product": "vscode-markdown-preview-enhanced",
          "vendor": "shd101wyy",
          "versions": [
            {
              "status": "affected",
              "version": "\u003c 0.8.30"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "Markdown Preview Enhanced is a Markdown preview extension for Visual Studio Code. Prior to 0.8.30, Markdown Preview Enhanced reads repository-controlled .crossnote/head.html content and passes it through resolvePathsInHeader before inserting it into the head of the preview webview document without removing executable content. Script-capable markup executes while the document loads, before the React application and DOMPurify initialize, and can access acquireVsCodeApi to send messages from the webview to the extension host. Opening a Markdown preview in a malicious repository is sufficient to trigger the injected content, and no additional click within the notification or preview is required. This issue is fixed in version 0.8.30."
        }
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "attackComplexity": "LOW",
            "attackRequirements": "NONE",
            "attackVector": "LOCAL",
            "baseScore": 6.9,
            "baseSeverity": "MEDIUM",
            "privilegesRequired": "NONE",
            "subAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "NONE",
            "subIntegrityImpact": "NONE",
            "userInteraction": "PASSIVE",
            "vectorString": "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:H/VA:L/SC:N/SI:N/SA:N",
            "version": "4.0",
            "vulnAvailabilityImpact": "LOW",
            "vulnConfidentialityImpact": "LOW",
            "vulnIntegrityImpact": "HIGH"
          }
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-79",
              "description": "CWE-79: Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-14T19:11:51.712Z",
        "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
        "shortName": "GitHub_M"
      },
      "references": [
        {
          "name": "https://github.com/shd101wyy/vscode-markdown-preview-enhanced/security/advisories/GHSA-mcwg-4j78-qwv3",
          "tags": [
            "x_refsource_CONFIRM"
          ],
          "url": "https://github.com/shd101wyy/vscode-markdown-preview-enhanced/security/advisories/GHSA-mcwg-4j78-qwv3"
        },
        {
          "name": "https://github.com/shd101wyy/crossnote/pull/444",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/shd101wyy/crossnote/pull/444"
        },
        {
          "name": "https://github.com/shd101wyy/vscode-markdown-preview-enhanced/pull/2323",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/shd101wyy/vscode-markdown-preview-enhanced/pull/2323"
        },
        {
          "name": "https://github.com/shd101wyy/crossnote/commit/8c55a2ba3365712a1caa4abeece0383bc2994d48",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/shd101wyy/crossnote/commit/8c55a2ba3365712a1caa4abeece0383bc2994d48"
        },
        {
          "name": "https://github.com/shd101wyy/vscode-markdown-preview-enhanced/commit/8bc848b6cbb42b9f35a0f95f7c3bf29b8302970e",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/shd101wyy/vscode-markdown-preview-enhanced/commit/8bc848b6cbb42b9f35a0f95f7c3bf29b8302970e"
        },
        {
          "name": "https://github.com/shd101wyy/crossnote/releases/tag/0.9.31",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/shd101wyy/crossnote/releases/tag/0.9.31"
        },
        {
          "name": "https://github.com/shd101wyy/vscode-markdown-preview-enhanced/releases/tag/0.8.30",
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://github.com/shd101wyy/vscode-markdown-preview-enhanced/releases/tag/0.8.30"
        }
      ],
      "source": {
        "advisory": "GHSA-mcwg-4j78-qwv3",
        "discovery": "UNKNOWN"
      },
      "title": "Markdown Preview Enhanced: Stored XSS via Unsanitized `.crossnote/head.html` Injection in Webview"
    }
  },
  "cveMetadata": {
    "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
    "assignerShortName": "GitHub_M",
    "cveId": "CVE-2026-54701",
    "datePublished": "2026-10-14T19:11:51.712Z",
    "dateReserved": "2026-06-15T22:58:06.563Z",
    "dateUpdated": "2026-10-20T02:01:15.836Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-54701\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"poc\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-10-20T02:00:52.506160Z\"}}}], \"references\": [{\"url\": \"https://github.com/shd101wyy/vscode-markdown-preview-enhanced/security/advisories/GHSA-mcwg-4j78-qwv3\", \"tags\": [\"exploit\"]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-10-20T02:01:10.301Z\"}}], \"cna\": {\"title\": \"Markdown Preview Enhanced: Stored XSS via Unsanitized `.crossnote/head.html` Injection in Webview\", \"source\": {\"advisory\": \"GHSA-mcwg-4j78-qwv3\", \"discovery\": \"UNKNOWN\"}, \"metrics\": [{\"cvssV4_0\": {\"version\": \"4.0\", \"baseScore\": 6.9, \"attackVector\": \"LOCAL\", \"baseSeverity\": \"MEDIUM\", \"vectorString\": \"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:H/VA:L/SC:N/SI:N/SA:N\", \"userInteraction\": \"PASSIVE\", \"attackComplexity\": \"LOW\", \"attackRequirements\": \"NONE\", \"privilegesRequired\": \"NONE\", \"subIntegrityImpact\": \"NONE\", \"vulnIntegrityImpact\": \"HIGH\", \"subAvailabilityImpact\": \"NONE\", \"vulnAvailabilityImpact\": \"LOW\", \"subConfidentialityImpact\": \"NONE\", \"vulnConfidentialityImpact\": \"LOW\"}}], \"affected\": [{\"vendor\": \"shd101wyy\", \"product\": \"vscode-markdown-preview-enhanced\", \"versions\": [{\"status\": \"affected\", \"version\": \"\u003c 0.8.30\"}]}], \"references\": [{\"url\": \"https://github.com/shd101wyy/vscode-markdown-preview-enhanced/security/advisories/GHSA-mcwg-4j78-qwv3\", \"name\": \"https://github.com/shd101wyy/vscode-markdown-preview-enhanced/security/advisories/GHSA-mcwg-4j78-qwv3\", \"tags\": [\"x_refsource_CONFIRM\"]}, {\"url\": \"https://github.com/shd101wyy/crossnote/pull/444\", \"name\": \"https://github.com/shd101wyy/crossnote/pull/444\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/shd101wyy/vscode-markdown-preview-enhanced/pull/2323\", \"name\": \"https://github.com/shd101wyy/vscode-markdown-preview-enhanced/pull/2323\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/shd101wyy/crossnote/commit/8c55a2ba3365712a1caa4abeece0383bc2994d48\", \"name\": \"https://github.com/shd101wyy/crossnote/commit/8c55a2ba3365712a1caa4abeece0383bc2994d48\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/shd101wyy/vscode-markdown-preview-enhanced/commit/8bc848b6cbb42b9f35a0f95f7c3bf29b8302970e\", \"name\": \"https://github.com/shd101wyy/vscode-markdown-preview-enhanced/commit/8bc848b6cbb42b9f35a0f95f7c3bf29b8302970e\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/shd101wyy/crossnote/releases/tag/0.9.31\", \"name\": \"https://github.com/shd101wyy/crossnote/releases/tag/0.9.31\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/shd101wyy/vscode-markdown-preview-enhanced/releases/tag/0.8.30\", \"name\": \"https://github.com/shd101wyy/vscode-markdown-preview-enhanced/releases/tag/0.8.30\", \"tags\": [\"x_refsource_MISC\"]}], \"descriptions\": [{\"lang\": \"en\", \"value\": \"Markdown Preview Enhanced is a Markdown preview extension for Visual Studio Code. Prior to 0.8.30, Markdown Preview Enhanced reads repository-controlled .crossnote/head.html content and passes it through resolvePathsInHeader before inserting it into the head of the preview webview document without removing executable content. Script-capable markup executes while the document loads, before the React application and DOMPurify initialize, and can access acquireVsCodeApi to send messages from the webview to the extension host. Opening a Markdown preview in a malicious repository is sufficient to trigger the injected content, and no additional click within the notification or preview is required. This issue is fixed in version 0.8.30.\"}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-79\", \"description\": \"CWE-79: Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)\"}]}], \"providerMetadata\": {\"orgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"shortName\": \"GitHub_M\", \"dateUpdated\": \"2026-10-14T19:11:51.712Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2026-54701\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-10-20T02:01:15.836Z\", \"dateReserved\": \"2026-06-15T22:58:06.563Z\", \"assignerOrgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"datePublished\": \"2026-10-14T19:11:51.712Z\", \"assignerShortName\": \"GitHub_M\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…