p PatchFirst

PatchFirst · Latest vulnerabilities

Node.js stack vulnerabilities · Page 35

Vulnerabilities published for Node.js in the last 30 days: 415. Listed in the KEV catalogue: 0.

Filter vulnerabilities
Node.js

Early warnings

Fresh vulnerability reports from vendor announcements and security news. These warnings do not change the security rating.

  1. node.js

    No fix published

    Node.js: denial of service

    According to GitHub Advisory Database, Node.js has a denial of service vulnerability (CVE-2026-109932). The exact affected versions are unspecified. The report does not name a fixed version.

    What to do now: Check whether a Node.js update with the fix is available and install it.

    CVE-2026-109932

  2. node.js

    No fix published

    Node.js: remote code execution

    According to OpenNet, Node.js has a remote code execution vulnerability (CVE-2026-111497). The exact affected versions are unspecified. The report does not name a fixed version.

    What to do now: Check whether a Node.js update with the fix is available and install it.

    CVE-2026-111497

Vulnerabilities: 7772

  1. CVE-2026-84375

    High · CVSS 7.5EPSS 0.54%Fix available

    js-yaml: maxTotalMergeKeys does not limit CPU use for empty merge sources

    js-yaml is a JavaScript YAML parser and dumper. From 3.0.0 until 3.15.2, 4.3.2, and 5.4.1, maxTotalMergeKeys in lib/js-yaml/loader.js and lib/loader.js does not count empty mapping sources while processing the merge key <<. An attacker can alias a large sequence of empty mappings into many merge targets, causing O(N * K) processing while totalMergeKeys remains unchanged and the configured resource limit is never reached. A relatively small YAML document can therefore cause prolonged CPU consumption in applications that parse untrusted YAML, and merge processing is enabled by default on these release lines. In v3 & v4, merge is enabled by defa

    • Update to 3.15.2
    • Update to 4.3.2
    • Update to 4.3.2+~4.0.9-1
    Published Updated
  2. CVE-2026-84373

    Medium · CVSS 5.9EPSS 0.53%Fix available

    Vitest: Path Traversal / Arbitrary File Read via @vitest/mocker Redirect Mock

    Vitest is a testing framework powered by Vite. From 2.1.0 until 4.1.11 and 5.0.0-rc.2, the public mockerPlugin and standalone interceptorPlugin exports in packages/mocker/src/node/interceptorPlugin.ts register the vitest:interceptor:register handler on Vite's unauthenticated HMR WebSocket without validating redirect targets against the file-serving allowlist. The implementation processes event.redirect without enforcing server.fs.allow and server.fs.deny through isFileLoadingAllowed. A remote client that can reach an exposed development server can submit an opaque URL scheme preserving .. segments, causing join(server.config.root, redirectUrl

    • Update to 4.1.11
    • Update to 5.0.0-rc.2
    Published Updated
  3. CVE-2026-75604

    Critical · CVSS 9EPSS 2.1%Public exploitFix available

    Next.js: Unauthenticated Remote Code Execution on windows-hosted servers

    Next.js is a React framework for building full-stack web applications. From 13.4.0 until 15.5.24 and 16.3.3, Next.js applications using Pages Router or App Router without Cache Components on Windows-hosted servers do not consistently escape backslashes in route segments before constructing incremental-cache paths. In packages/next/src/shared/lib/router/utils/escape-path-delimiters.ts and packages/next/src/server/lib/incremental-cache/file-system-cache.ts, a remote request can supply encoded Windows path separators that traverse outside the intended cache root and expose private build data, including the server-reference-manifest encryption ke

    • Update to 15.5.24
    • Update to 16.3.3
    Published Updated
  4. CVE-2026-84371

    Medium · CVSS 5.4EPSS 0.3%Fix available

    ApostropheCMS: Stored XSS via SVG SMIL URI-list scheme-policy bypass

    ApostropheCMS is an open-source Node.js content management system, and sanitize-html provides a simple HTML sanitizer with a clear API. From version 1.9.0 until version 2.17.7, packages/sanitize-html/index.js validates an animation value attribute as one flat URL and does not recognize that attributeName selecting href or xlink:href gives the sibling values, from, to, or by attribute SVG SMIL URL semantics. In configurations that allow the animate, animateColor, animateMotion, animateTransform, or set elements, a values list can begin with a safe fragment and contain a later executable destination that survives allowedSchemesAppliedToAttribut

    • Update to 2.17.7
    Published Updated
  5. CVE-2026-84370

    High · CVSS 8.2EPSS 0.53%Fix available

    SVGO: removeScripts allows executable links through namespace and control-character bypasses

    SVGO, short for SVG Optimizer, is a Node.js library and command-line application for optimizing SVG files. From version 1.0.0 until versions 2.8.4, 3.3.5, and 4.1.0, the opt-in removeScripts plugin, named removeScriptElement in versions 2 and 3, incompletely filters executable links in plugins/removeScripts.js and lib/svgo/tools.js. The plugin does not recognize namespace-prefixed SVG anchor elements such as svg:a with href or namespaced *:href values, and it does not remove ASCII tab, line-feed, or carriage-return characters before checking URL schemes. Browsers remove those characters before parsing a scheme, allowing an executable link to

    • Update to 2.8.4
    • Update to 3.3.5
    • Update to 3.3.5+ds-1
    • Update to 4.1.0
    Published Updated
  6. CVE-2026-84369

    Medium · CVSS 6.1EPSS 0.43%Fix available

    SVGO: removeScripts incompletely sanitizes executable HTML in SVG foreignObject elements

    SVGO, short for SVG Optimizer, is a Node.js library and command-line application for optimizing SVG files. From version 1.0.0 until versions 2.8.4, 3.3.5, and 4.1.0, the opt-in removeScripts plugin, named removeScriptElement in versions 2 and 3 and implemented in plugins/removeScripts.js, removes SVG and XHTML script elements but does not inspect executable HTML content inside SVG foreignObject elements. Event-handler attributes such as onload and onbeforetoggle, srcdoc documents, and executable URLs in the action, data, formaction, href, and src attributes can remain in attacker-controlled SVG input. When an application uses the plugin as it

    • Update to 2.8.4
    • Update to 3.3.5
    • Update to 3.3.5+ds-1
    • Update to 4.1.0
    Published Updated
  7. CVE-2026-84368

    Low · CVSS 3.7EPSS 0.39%Fix available

    joi: Prototype pollution via a `__proto__` language key in custom messages

    joi is a schema description language and data validator for JavaScript. From 16.0.0 until 17.13.6 and 18.2.5, the @hapi/joi package through 17.1.1 and the successor joi package contain prototype pollution in lib/messages.js, where exports.compile() and exports.merge() reuse inherited objects for attacker-controlled language keys supplied through messages(), message(), prefs({ messages }), Joi.extend({ messages }), or rule({ message }). A language key named __proto__ writes properties onto Object.prototype, and constructor writes to the Object function's static properties. A consuming application that gates on the presence of an inherited prop

    • Update to 17.13.6
    • Update to 18.2.5
    Published Updated
  8. CVE-2026-84367

    Low · CVSS 3.7EPSS 0.39%Fix available

    joi: object().rename() with a template target can set the validated object's prototype

    joi is a schema description language and data validator for JavaScript. From 16.0.0 until 17.13.5 and 18.2.4, joi's lib/types/keys.js internals.rename() implementation used by object().rename() permits a schema that renames keys with a regular-expression source and a Joi.expression() or Joi.x() target that interpolates the pattern's own match data, combined with { multiple: true }, to derive a target from an attacker-controlled input key. An attacker can send x-__proto__ with an object value, causing the target to render as __proto__ and set the prototype of the object returned by validate() instead of creating an own key. The global Object.p

    • Update to 17.13.5
    • Update to 18.2.4
    Published Updated
  9. CVE-2026-84365

    Medium · CVSS 6.5EPSS 0.44%Fix available

    Hono: Incomplete fix for CVE-2026-39408: `toSSG()` still writes files outside the output directory

    Hono is a Web application framework that provides support for any JavaScript runtime. From 4.12.12 until 4.13.5, the fix released for CVE-2026-39408 does not cover every traversal sequence, and toSSG() can still write files outside the configured output directory when a route parameter contains consecutive parent-directory segments. Static site generation builds each output path from the route path and values supplied through ssgParams, then verifies that the result stays inside the output directory using the same normalization routine that built the path. That routine does not fully collapse runs of consecutive parent-directory segments, all

    • Update to 4.13.5
    Published Updated
  10. CVE-2026-84364

    Medium · CVSS 5.3EPSS 0.53%Fix available

    Hono: Unbounded dot-notation nesting in `parseBody()` can cause memory exhaustion

    Hono is a Web application framework that provides support for any JavaScript runtime. Prior to 4.13.5, when parseBody() expands dot-separated form field names into nested objects with dot-notation parsing enabled, it does not limit the nesting depth or the total number of intermediate objects created. Empty segments are preserved, so one deeply dotted field name can encode one nesting level per byte, while a large number of shallowly dotted fields can create the same amplification across a request. A request body within a normal size limit can therefore allocate an object graph far larger than the request after the body has already been accep

    • Update to 4.13.5
    Published Updated
  11. CVE-2026-84363

    Medium · CVSS 5.9EPSS 0.45%Fix available

    Hono: Query parser reads parameters after the URL fragment, causing cache-key and proxy interpretation differentials

    Hono is a Web application framework that provides support for any JavaScript runtime. Prior to 4.13.5, Hono's query helpers treat a question mark after a literal hash fragment as the start of a query string, so the application can read request parameters that browsers, new URL(), reverse proxies, filtering rules, parameter allow and deny lists, access logging, request validation, and other middleware do not observe. The Cache Middleware removes the fragment when building its cache key, allowing a response influenced by parameters inside the fragment to be stored under a key that omits those parameters and later served to other users. This can

    • Update to 4.13.5
    Published Updated
  12. GHSA-2rx9-3g3h-c2jv

    High · CVSS 7.1Fix available

    pnpm: pacquet trust-lockfile install can create dependency symlinks outside the project

    ## Summary A crafted lockfile alias could reach several install-time filesystem joins. With `--trust-lockfile` or a frozen lockfile, traversal segments could create links outside the intended project or `node_modules` boundary. This patch validates dependency names and every virtual-store slot before creating directories, links, bins, or hoisted entries. ## Security boundary - A shared safe-join helper rejects traversal, absolute, platform-specific, and reserved dependency names before filesystem materialization. - Direct and transitive dependency links, package links, bin destinations, and public/private hoist destinations use the same co

    • Update to 12.0.0-alpha.5
    Published Updated
  13. GHSA-3f6p-5ww8-9rcr

    High · CVSS 8.2Fix available

    MySQL2: Auth Plugin Downgrade to mysql_clear_password Leaks Plaintext Credentials

    ## Summary A rogue MySQL server (or MITM) can force mysql2 to send credentials in **plaintext** by requesting an auth switch to `mysql_clear_password`. The driver complies without verifying that TLS is active. ## Details `mysql_clear_password` is registered as a default standard plugin in `lib/commands/auth_switch.js` (line 21). When a server sends an AuthSwitchRequest (0xFE) requesting `mysql_clear_password`, the driver executes it without checking for TLS. The plugin (`lib/auth_plugins/mysql_clear_password.js`) returns `Buffer.from(password + '\0')`. Note: `caching_sha2_password` plugin DOES check for SSL before sending cleartext (line

    • Update to 3.22.0
    Published Updated
  14. CVE-2026-83619

    High · CVSS 8.7EPSS 0.52%Fix available

    xmldom: End-tag Whitespace-Trim Regex ReDoS — quadratic backtracking in the 0.8.x end-tag parser

    xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) DOMParser and XMLSerializer module. From 0.7.0 until 0.8.15, the release-0.8.x parser in lib/sax.js trims captured end-tag names with the unanchored global expression /[ \t\n\r]+$/g. For an end tag containing a long whitespace run followed by a non-whitespace character, the expression retries from each possible starting position and backtracks quadratically before failing its end anchor. DOMParser.parseFromString() reaches the path under default options, allowing a small unauthenticated XML input to stall the Node.js event loop; the 0.9.x and unscoped npm lines do not conta

    • Update to 0.8.15
    • Update to 0.9.5-1
    Published Updated
  15. CVE-2026-83618

    High · CVSS 8.7EPSS 0.57%Fix available

    xmldom: requireWellFormed DocType publicId/systemId validation is bypassable via an embedded line terminator

    xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) DOMParser and XMLSerializer module. From 0.9.10 until 0.9.12, the requireWellFormed: true serializer validates DocumentType.publicId and DocumentType.systemId with PubidLiteral_match and SystemLiteral_match expressions produced by reg() in lib/grammar.js, which inherit the multiline flag. A complete valid literal on the first line can therefore satisfy the matcher while U+000A, U+000D, U+2028, or U+2029 and breakout markup remain in the emitted <!DOCTYPE ...> declaration. This bypasses the strict-serialization mitigation for the earlier DocumentType injection advisory; crea

    • Update to 0.9.12
    • Update to 0.9.12-1
    Published Updated
  16. CVE-2026-83617

    High · CVSS 8.7EPSS 0.57%Fix available

    xmldom: requireWellFormed element/attribute name validation is bypassable via an embedded line terminator

    xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) DOMParser and XMLSerializer module. From 0.9.11 until 0.9.12, the requireWellFormed: true element and attribute name checks use the anchored QName_exact expression produced by reg() in lib/grammar.js, which inherits the multiline flag. A name with a valid first line followed by U+000A, U+000D, U+2028, or U+2029 and breakout markup therefore passes validation and is emitted verbatim in element start and end tags or attribute names. This bypasses the strict-serialization checks introduced for the earlier element-name and attribute-name injection advisories, while the default

    • Update to 0.9.12
    • Update to 0.9.12-1
    Published Updated
  17. CVE-2026-83616

    High · CVSS 8.7EPSS 0.61%Fix available

    xmldom: Processing Instruction Target Injection Bypasses requireWellFormed

    xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) DOMParser and XMLSerializer module. Prior to @xmldom/xmldom versions 0.8.15 and 0.9.12, and in xmldom version 0.6.0 and earlier, Document.createProcessingInstruction(target, data) in lib/dom.js accepts an unvalidated target, while the requireWellFormed: true serializer checks only for a colon and the reserved case-insensitive xml name on 0.9.x and performs no target check on 0.8.x. Because serialization emits <?target data?>, a target containing >, ?, whitespace, or another invalid XML-name character can break the processing-instruction boundary and inject XML structure. Th

    • Update to 0.8.15
    • Update to 0.9.12
    • Update to 0.9.12-1
    Published Updated
  18. CVE-2026-83615

    High · CVSS 8.7EPSS 0.59%Fix available

    xmldom: Quadratic-memory consumption

    xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) DOMParser and XMLSerializer module. Prior to @xmldom/xmldom versions 0.8.15 and 0.9.12, and in xmldom versions 0.1.5 through 0.6.0, appendElement in lib/sax.js uses _copy to clone the complete currentNSMap for each nested element that declares a new namespace prefix. Keeping every ancestor map live on the parse stack creates quadratic peak namespace-map storage, so a small highly compressible XML document can exhaust the process heap before application validation. This issue is fixed in @xmldom/xmldom versions 0.8.15 and 0.9.12; no fixed version is available for xmldom.

    • Update to 0.8.15
    • Update to 0.9.12
    • Update to 0.9.12-1
    Published Updated
  19. CVE-2026-83614

    High · CVSS 8.7EPSS 0.59%Fix available

    xmldom: Quadratic-time parsing via the malformed-input recovery path — `parseElementStartPart` re-scan and `normalize()` adjacent-text merge

    xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) DOMParser and XMLSerializer module. Prior to @xmldom/xmldom versions 0.8.15 and 0.9.12, and in xmldom versions 0.3.0 through 0.6.0, two independent quadratic paths can cause denial of service. In lib/sax.js, parseElementStartPart repeatedly rescans a malformed tag name to the next > during single-character recovery; in lib/dom.js, normalize() repeatedly removes and appends adjacent text nodes, causing quadratic reindexing and string rebuilding. The first path is reachable through default DOMParser.parseFromString() processing, while the second is also reachable through a di

    • Update to 0.8.15
    • Update to 0.9.12
    • Update to 0.9.12-1
    Published Updated
  20. CVE-2026-83613

    High · CVSS 8.7EPSS 0.6%Fix available

    xmldom: Quadratic-time attribute deduplication

    xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) DOMParser and XMLSerializer module. Prior to @xmldom/xmldom versions 0.8.15 and 0.9.12, and in xmldom version 0.6.0 and earlier, DOMHandler.startElement in lib/dom-parser.js inserts every parsed attribute through setAttributeNode, while NamedNodeMap.setNamedItem in lib/dom.js calls the linear getNamedItem or getNamedItemNS lookup for each insertion. A well-formed element with many distinct attributes therefore requires quadratic comparisons during DOMParser.parseFromString() and can stall a Node.js event loop before application validation. This issue is fixed in @xmldom/xml

    • Update to 0.8.15
    • Update to 0.9.12
    • Update to 0.9.12-1
    Published Updated

Check your server

Check your installed stack and versions against the current vulnerability feeds.

Check your server →