2026-08-23 13:34CVE-2026-77088VulnCheck
PUBLISHED5.2CWE-79

justhtml 0.9.0 through 1.21.0 Cross-Site Scripting via code-span

justhtml versions 0.9.0 through 1.21.0 contain a cross-site scripting vulnerability in to_markdown() where inline code spans fail to account for blank lines as block boundaries. Attackers can inject blank lines into code or pre element text to break the inline span, causing sanitized HTML to be emitted unescaped and re-parsed as live Markdown by compliant renderers.

Problem type

Affected products

EmilStenstrom

justhtml

< 0.9.0 - UNAFFECTED

References

GitHub Security Advisories

GHSA-3r4x-v5v7-fm2r

justhtml versions 0.9.0 through 1.21.0 contain a cross-site scripting vulnerability in...

https://github.com/advisories/GHSA-3r4x-v5v7-fm2r

justhtml versions 0.9.0 through 1.21.0 contain a cross-site scripting vulnerability in to_markdown() where inline code spans fail to account for blank lines as block boundaries. Attackers can inject blank lines into code or pre element text to break the inline span, causing sanitized HTML to be emitted unescaped and re-parsed as live Markdown by compliant renderers.

JSON source

https://cveawg.mitre.org/api/cve/CVE-2026-77088
Click to expand
{
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "cveMetadata": {
    "cveId": "CVE-2026-77088",
    "assignerOrgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
    "assignerShortName": "VulnCheck",
    "dateUpdated": "2026-08-23T13:34:12.574Z",
    "dateReserved": "2026-08-20T10:55:09.093Z",
    "datePublished": "2026-08-23T13:34:12.574Z",
    "state": "PUBLISHED"
  },
  "containers": {
    "cna": {
      "providerMetadata": {
        "orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
        "shortName": "VulnCheck",
        "dateUpdated": "2026-08-23T13:34:12.574Z"
      },
      "datePublic": "2026-05-22T00:00:00.000Z",
      "title": "justhtml 0.9.0 through 1.21.0 Cross-Site Scripting via code-span",
      "descriptions": [
        {
          "lang": "en",
          "value": "justhtml versions 0.9.0 through 1.21.0 contain a cross-site scripting vulnerability in to_markdown() where inline code spans fail to account for blank lines as block boundaries. Attackers can inject blank lines into code or pre element text to break the inline span, causing sanitized HTML to be emitted unescaped and re-parsed as live Markdown by compliant renderers."
        }
      ],
      "affected": [
        {
          "vendor": "EmilStenstrom",
          "product": "justhtml",
          "defaultStatus": "affected",
          "versions": [
            {
              "version": "0",
              "status": "unaffected",
              "versionType": "semver",
              "lessThan": "0.9.0"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "lang": "en",
              "description": "Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')",
              "cweId": "CWE-79",
              "type": "CWE"
            }
          ]
        }
      ],
      "references": [
        {
          "url": "https://github.com/EmilStenstrom/justhtml/security/advisories/GHSA-jf6w-2mvx-633j",
          "name": "GitHub Security Advisory (GHSA-jf6w-2mvx-633j)",
          "tags": [
            "vendor-advisory"
          ]
        },
        {
          "url": "https://www.vulncheck.com/advisories/justhtml-through-cross-site-scripting-via-code-span",
          "name": "VulnCheck Advisory: justhtml 0.9.0 through 1.21.0 Cross-Site Scripting via code-span",
          "tags": [
            "third-party-advisory"
          ]
        }
      ],
      "metrics": [
        {
          "format": "CVSS"
        },
        {
          "format": "CVSS",
          "cvssV3_1": {
            "version": "3.1",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
            "attackVector": "NETWORK",
            "attackComplexity": "LOW",
            "privilegesRequired": "NONE",
            "userInteraction": "REQUIRED",
            "scope": "CHANGED",
            "confidentialityImpact": "LOW",
            "integrityImpact": "LOW",
            "availabilityImpact": "NONE",
            "baseScore": 6.1,
            "baseSeverity": "MEDIUM"
          }
        }
      ],
      "credits": [
        {
          "lang": "en",
          "value": "seankohjs",
          "type": "reporter"
        },
        {
          "lang": "en",
          "value": "yueyueL",
          "type": "reporter"
        }
      ]
    }
  }
}