Skip to content
Heist/ feed
Back to feed
Medium

crawl4ai before 0.9.3 DOM-based XSS via Playground UI

Type: advisorySources: OSV

crawl4ai versions before 0.9.3 contain a DOM-based cross-site scripting vulnerability in the Playground UI where the forceHighlightElement() function assigns textContent back to innerHTML, re-parsing JSON responses as HTML. Attackers can inject malicious scripts through crawled page content like the page title to steal the operator's API token from sessionStorage and gain full server control.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-91944
Confirmed fixed CVEs
Not specified
Updated in this feed
2 Nov 2026, 20:11 UTC · Revision 1

Source evidence

crawl4ai before 0.9.3 DOM-based XSS via Playground UI

core-osv · Original source

Published 15 Sept 2026, 15:18 UTC

crawl4ai versions before 0.9.3 contain a DOM-based cross-site scripting vulnerability in the Playground UI where the forceHighlightElement() function assigns textContent back to innerHTML, re-parsing JSON responses as HTML. Attackers can inject malicious scripts through crawled page content like the page title to steal the operator's API token from sessionStorage and gain full server control.

osv:CVE-2026-91944
Complete source record
{
  "id": "61a8c7b1638ea2cc50b2f7d3f0f43852c666c582b0105c6753a58f4ceec8377f",
  "url": "https://osv.dev/vulnerability/CVE-2026-91944",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "crawl4ai before 0.9.3 DOM-based XSS via Playground UI",
    "summary": "crawl4ai versions before 0.9.3 contain a DOM-based cross-site scripting vulnerability in the Playground UI where the forceHighlightElement() function assigns textContent back to innerHTML, re-parsing JSON responses as HTML. Attackers can inject malicious scripts through crawled page content like the page title to steal the operator's API token from sessionStorage and gain full server control.",
    "evidence": "osv:CVE-2026-91944",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-91944",
      "aliases": [
        "CVE-2026-91944",
        "GHSA-m446-hp3q-qfxp"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/unclecode/crawl4ai",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "4bcd5fa8a56000ce103dd499e8ecdff2439f3e9c"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "0.9.3"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StandardRange"
                  },
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "0.9.3"
                      }
                    ],
                    "source": "DESCRIPTION"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v0.9.2",
            "docker-rebuild-v0.9.2",
            "v0.9.1",
            "docker-rebuild-v0.9.1",
            "v0.9.0",
            "docker-rebuild-v0.9.0",
            "v0.8.9",
            "docker-rebuild-v0.8.9",
            "v0.8.8",
            "docker-rebuild-v0.8.8",
            "v0.8.7",
            "docker-rebuild-v0.8.7",
            "docker-rebuild-v0.8.6",
            "v0.8.6",
            "v0.7.4",
            "v0.7.3",
            "v0.7.2",
            "v0.7.1",
            "v0.7.0",
            "vr0.6.3",
            "v0.6.3",
            "vr0.6.0",
            "vr0.6.0rc1",
            "v0.5.0.post1",
            "v0.4.243",
            "v0.4.24",
            "v0.3.745",
            "v.3.72",
            "v0.3.6",
            "0.3.4",
            "v0.3.3",
            "v0.3.0",
            "v0.2.77",
            "v0.0.75",
            "v0.2.74",
            "v0.2.73",
            "v0.2.72",
            "v0.2.71",
            "v0.2.7",
            "v0.2.6",
            "v0.2.4",
            "v0.2.1",
            "v0.2.0",
            "v0.1.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-91944.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:23.355808971Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/91xxx/CVE-2026-91944.json",
        "https://github.com/unclecode/crawl4ai/security/advisories/GHSA-m446-hp3q-qfxp",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-91944",
        "https://www.vulncheck.com/advisories/crawl4ai-before-0.9.3-dom-based-xss-via-playground-ui"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-79"
        ],
        "cna_assigner": "VulnCheck",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/91xxx/CVE-2026-91944.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-91944",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 489653,
  "published_at": "2026-09-15T15:18:03.786+00:00"
}