PHP2Shell: Read our blog on the critical RCE vulnerabilities affecting 70% of the Internet
Vulnerability DatabaseCVE-2026-110871

CVE-2026-110871: 
Grafana vulnerability analysis and mitigation

Overview

CVE-2026-110871 is a denial-of-service vulnerability in Nodemailer caused by quadratic (O(n²)) CPU complexity during DKIM header unfolding in MessageParser.parseHeaders. It affects Nodemailer versions 3.0.0 through 10.0.9 (fixed in 10.0.10) and was disclosed on October 14–15, 2026. An authenticated (low-privilege) network attacker can supply large recipient lists or long folded headers to exhaust CPU and block the Node.js event loop during DKIM signing. It carries a CVSS v3.1 score of 6.5 (Medium) and a CVSS v4.0 score of 7.1 (High) (GitHub Advisory, Red Hat Bugzilla).

Technical details

The root cause is an inefficient header-unfolding algorithm in src/dkim/message-parser.ts (CWE-400: Uncontrolled Resource Consumption; CWE-1322: Use of Blocking Code in Single-threaded, Non-blocking Context). The parseHeaders() function iterates backward over split header lines and, for each RFC 5322 continuation line matching /^[ \t]/, appends it to the preceding line via += and then re-tests the anchored regex against the ever-growing merged string on the next iteration. This forces a full string flatten proportional to the accumulated length on each pass, yielding O(n²) CPU cost relative to the number of continuation lines. No header-block size or line-count cap exists between input and the sink — the signer's MAX_MESSAGE_SIZE and cacheTreshold knobs apply only to the body stream, not the header block — so an attacker-controlled header (e.g., a large To: recipient list that Nodemailer's MIME composer folds at column 76) can drive tens of thousands of continuation lines (GitHub Advisory).

Impact

Successful exploitation blocks the single-threaded Node.js event loop synchronously during DKIM signing, halting all other work in the process for an attacker-scaled duration — measured at approximately 2.8 seconds at 20,000 continuation lines, 11.5 seconds at 40,000, and 6.6 seconds with a 60,000-recipient To: header. The attack is repeatable on every such message, making it a sustained denial-of-service primitive against any application that DKIM-signs outbound mail and accepts user-influenced header content. There is no confidentiality or integrity impact; the sole consequence is availability loss to the affected Node.js process (GitHub Advisory).

Exploitability

No public proof-of-concept exploit code or in-the-wild exploitation has been reported as of the disclosure date; the Feedly data shows no exploited-at entries and no PoC listings. The EPSS score is 0.0, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog. Exploitation requires only low privileges (e.g., the ability to submit an email with a large recipient list or long header to a DKIM-signing application), making it accessible to any authenticated user of a vulnerable bulk-mail, notification, or multi-tenant email API (GitHub Advisory, Red Hat Bugzilla).

Exploitation steps

  1. Identify a target: Locate an application that uses Nodemailer 3.0.0–10.0.9 with DKIM signing enabled (a common deliverability configuration) and accepts user-supplied recipient lists or custom headers.
  2. Craft a large folded header: Construct an email with a very large To: or Cc: recipient list (e.g., tens of thousands of addresses), or a long Subject, References, or custom header value. Nodemailer's MIME composer automatically folds these at column 76 into space-prefixed RFC 5322 continuation lines.
  3. Submit the message: Send the crafted message through the application's email submission interface (API endpoint, form, etc.) with any valid low-privilege account.
  4. Trigger the quadratic loop: When Nodemailer DKIM-signs the message, MessageParser.parseHeaders() processes the folded header block, re-testing the growing merged line against /^[ \t]/ on each iteration, causing O(n²) CPU consumption.
  5. Achieve event-loop starvation: The synchronous unfold loop blocks the Node.js event loop for seconds to tens of seconds (scaling quadratically with continuation-line count), denying service to all other requests handled by the process. Repeat per message for sustained impact (GitHub Advisory).

Indicators of compromise

  • Logs: Node.js application logs showing unusually long request processing times or timeouts during email send operations; event loop lag metrics spiking to seconds during DKIM signing.
  • Process: Node.js process CPU usage pegged at 100% on a single core for multi-second intervals correlated with email submission events; absence of other process activity during the stall.
  • Application Behavior: Email API endpoints becoming unresponsive or timing out repeatedly; queued email jobs stalling without error during the signing phase.
  • Network: Repeated submissions of emails with abnormally large To:, Cc:, or other header fields from the same source IP or authenticated user account (GitHub Advisory).

Mitigation and workarounds

Upgrade Nodemailer to version 10.0.10 or later, which addresses the quadratic unfolding behavior. As an interim workaround, applications should enforce strict caps on recipient counts and header-value sizes for any messages that will be DKIM-signed, preventing the continuation-line count from reaching problematic levels. Additionally, rate-limiting email submission endpoints and validating input header sizes at the application layer can reduce exposure until patching is complete (GitHub Advisory, Red Hat Bugzilla).

Community reactions

The vulnerability was reported by researcher @manus-pi (GitHub) and published as a moderate-severity advisory by Nodemailer maintainer andris9 on September 30, 2026. Red Hat tracked it via their Security Response process (Bugzilla bug 2552965) with medium priority and severity. No significant broader media coverage or notable social media discussion has been identified beyond standard vulnerability database aggregation (GitHub Advisory, Red Hat Bugzilla).

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

bookworm

node-nodemailer

Affected

sid

node-nodemailer: 10.0.10+~8.0.1-1

Fixed

trixie

node-nodemailer

Affected

Ubuntu

Unknown

devel

node-nodemailer

Unknown

focal (esm-apps)

node-nodemailer

Unknown

jammy

node-nodemailer

Unknown

jammy (esm-apps)

node-nodemailer

Unknown

noble

node-nodemailer

Unknown

noble (esm-apps)

node-nodemailer

Unknown

resolute

node-nodemailer

Unknown

resolute (esm-apps)

node-nodemailer

Unknown

RHEL / CentOS

Affected

RHEL 10

grafana.src

Affected

Source: This report was generated using AI

Related Grafana vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-114125CRITICAL9.4
  • JavaScript logoJavaScript
  • grafana-selinux
NoYesOct 21, 2026
CVE-2026-114126HIGH8.8
  • JavaScript logoJavaScript
  • storybook
NoYesOct 21, 2026
CVE-2026-111767HIGH8.6
  • Grafana logoGrafana
  • commercial-gitlab-rails-ee-fips-19.1
NoYesOct 20, 2026
CVE-2026-111943HIGH6.8
  • Docker logoDocker
  • terraform-1.15
NoYesOct 21, 2026
CVE-2026-92539MEDIUM6.7
  • Grafana logoGrafana
  • grafana-elasticsearch
NoYesOct 20, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management