ghsa-q43x-79jr-cq98
Vulnerability from github
Published
2025-07-03 16:59
Modified
2025-07-03 18:50
Summary
tarteaucitron.js vulnerable to DOM Clobbering via document.currentScript
Details

A vulnerability was identified in tarteaucitron.js where document.currentScript was accessed without verifying that it referenced an actual <script> element. If an attacker injected an HTML element such as:

<img name="currentScript" src="https://malicious.example.com">

it could clobber the document.currentScript property. This causes the script to resolve incorrectly to an element instead of the tag, leading to unexpected behavior or failure to load the script path correctly.

This issue arises because in some browser environments, named DOM elements (e.g., name="currentScript") become properties on the global document object.

Impact

An attacker with control over the HTML could exploit this to change the CDN domain of tarteaucitron.

Fix https://github.com/AmauriC/tarteaucitron.js/commit/230a3b69d363837acfa895823d841e0608826ba3

The issue was resolved by verifying that document.currentScript is an instance of HTMLScriptElement. If not, the script now falls back safely to the last tag on the page.

Show details on source website


{
  "affected": [
    {
      "package": {
        "ecosystem": "npm",
        "name": "tarteaucitronjs"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "1.22.0"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "aliases": [
    "CVE-2025-48939"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-138"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2025-07-03T16:59:09Z",
    "nvd_published_at": "2025-07-03T17:15:39Z",
    "severity": "MODERATE"
  },
  "details": "A vulnerability was identified in tarteaucitron.js where document.currentScript was accessed without verifying that it referenced an actual `\u003cscript\u003e` element. If an attacker injected an HTML element such as:\n\n```\n\u003cimg name=\"currentScript\" src=\"https://malicious.example.com\"\u003e\n```\n\nit could clobber the document.currentScript property. This causes the script to resolve incorrectly to an \u003cimg\u003e element instead of the \u003cscript\u003e tag, leading to unexpected behavior or failure to load the script path correctly.\n\nThis issue arises because in some browser environments, named DOM elements (e.g., name=\"currentScript\") become properties on the global document object.\n\n## Impact\nAn attacker with control over the HTML could exploit this to change the CDN domain of tarteaucitron.\n\n## Fix https://github.com/AmauriC/tarteaucitron.js/commit/230a3b69d363837acfa895823d841e0608826ba3\nThe issue was resolved by verifying that document.currentScript is an instance of HTMLScriptElement. If not, the script now falls back safely to the last \u003cscript\u003e tag on the page.",
  "id": "GHSA-q43x-79jr-cq98",
  "modified": "2025-07-03T18:50:09Z",
  "published": "2025-07-03T16:59:09Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/AmauriC/tarteaucitron.js/security/advisories/GHSA-q43x-79jr-cq98"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2025-48939"
    },
    {
      "type": "WEB",
      "url": "https://github.com/AmauriC/tarteaucitron.js/commit/230a3b69d363837acfa895823d841e0608826ba3"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/AmauriC/tarteaucitron.js"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:L/AC:L/PR:H/UI:R/S:C/C:N/I:L/A:L",
      "type": "CVSS_V3"
    }
  ],
  "summary": "tarteaucitron.js vulnerable to DOM Clobbering via document.currentScript"
}


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.
  • 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…