CVE-2026-33129
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-33129 is a timing side-channel vulnerability in the h3 Node.js HTTP framework's requireBasicAuth function, allowing remote attackers to recover passwords character-by-character by measuring server response time differences. It affects h3 versions >= 2.0.0-beta.0 through <= 2.0.0-rc.8 (npm package). The vulnerability was reported by researcher simonkoeck, published to the GitHub Advisory Database on March 17–18, 2026, and added to the NVD on March 20, 2026. It carries a CVSS v3.1 base score of 5.9 (Medium) (GitHub Advisory, Red Hat Bugzilla).

Technical details

The root cause is classified as CWE-208 (Observable Timing Discrepancy). The vulnerable code in requireBasicAuth uses a standard JavaScript strict inequality operator (!==) to compare the user-supplied password against the expected password: if (opts.password && password !== opts.password). In V8 and most JavaScript runtimes, this operator is optimized to "fail fast" — it returns false immediately upon encountering the first mismatched byte, meaning a password with a correct first character takes measurably longer to reject than one with an incorrect first character. By statistically analyzing these minute timing differences across many requests, an attacker can determine the correct password one character at a time, reducing cracking complexity from exponential to linear. The fix (PR #1283) replaced the unsafe comparison with a constant-time timingSafeEqual function and added a random jitter delay (0–99ms) on authentication failures (GitHub Advisory, Fix PR).

Impact

Successful exploitation allows an unauthenticated remote attacker to recover plaintext passwords protected by HTTP Basic Authentication in h3-based applications, resulting in a high confidentiality impact with no integrity or availability impact. The attack is most effective in low-latency environments such as local networks or co-located cloud instances where network jitter is minimal, making it practical for attackers sharing the same cloud infrastructure. Credential recovery could enable unauthorized access to protected application resources and potential lateral movement depending on how the recovered credentials are reused (GitHub Advisory, Feedly).

Exploitability

A proof-of-concept (PoC) methodology is publicly documented in the GitHub Security Advisory, describing a concrete, reproducible attack using concurrent packet timing measurement. There is no evidence of active in-the-wild exploitation at this time, and no threat actor attribution has been reported. The EPSS score is approximately 0.029% (0.055% per GitHub Advisory), placing it in the 17th percentile for exploitation likelihood. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog (GitHub Advisory, Feedly).

Exploitation steps

  1. Reconnaissance: Identify h3-based Node.js applications using HTTP Basic Authentication (versions >= 2.0.0-beta.0 and <= 2.0.0-rc.8), particularly those accessible from a co-located cloud environment or local network to minimize timing noise.
  2. Establish baseline: Send a burst of concurrent requests with a password known to be incorrect at the first character (e.g., AAAA...) and record the average response time (TTFB) as a baseline reference.
  3. Character guessing — first position: Send two simultaneous bursts: Packet A with the known-wrong first character (e.g., AAAA...) and Packet B with a candidate first character (e.g., BAAA...). Measure and compare TTFB for both.
  4. Confirm correct character: If Packet B consistently returns a higher TTFB than Packet A across many trials, the guessed first character is correct. The concurrent sending technique filters out network jitter by using Packet A as a real-time control.
  5. Iterate for each character: Fix the confirmed character and repeat the process for the next character position, sending Packet A (wrong at the new position) and Packet B (candidate for the new position), until all characters are recovered.
  6. Authenticate: Use the fully recovered password to authenticate to the application as the targeted user (GitHub Advisory).

Indicators of compromise

  • Network: High volume of HTTP requests to Basic Auth-protected endpoints from a single source IP, particularly in rapid bursts of concurrent pairs; unusual patterns of repeated 401 Unauthorized responses followed by a successful 200 response.
  • Logs: Application or web server access logs showing hundreds to thousands of failed Basic Auth attempts (HTTP 401) against the same endpoint from the same IP or IP range, with incrementally varying Authorization header values; successful authentication following a long sequence of failures.
  • Behavioral: Requests arriving in tightly timed concurrent pairs (same millisecond or sub-millisecond intervals) targeting the same authenticated endpoint, which may be visible in high-resolution access logs or network captures (GitHub Advisory).

Mitigation and workarounds

Upgrade h3 to version 2.0.1-rc.9 or later, which replaces the unsafe !== string comparison with a constant-time timingSafeEqual function and adds a random jitter delay (0–99ms) on authentication failures (h3 Release v2.0.1-rc.9, Fix PR). For environments where immediate patching is not possible, implement network segmentation to restrict access to h3 applications from untrusted local network segments, and avoid co-locating untrusted workloads in the same cloud environment as the vulnerable application. Rate-limiting authentication endpoints can also reduce the feasibility of the statistical timing analysis required for exploitation (Feedly).

Community reactions

The vulnerability was published by h3 maintainer pi0 via a GitHub Security Advisory on March 17, 2026, and the fix was merged promptly via PR #1283. Red Hat tracked the issue in Bugzilla (Bug 2449583) and published a CVE entry, indicating awareness across the broader ecosystem. Social media activity was limited, with a Bluesky post noted in tracking data. No significant independent researcher commentary or major media coverage has been identified beyond standard vulnerability database aggregation (Red Hat Bugzilla, GitHub Advisory).

Additional resources


SourceThis report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-61568CRITICAL9.6
  • JavaScript logoJavaScript
  • @zereight/mcp-gitlab
NoYesSep 15, 2026
CVE-2026-61559CRITICAL9.6
  • JavaScript logoJavaScript
  • @zereight/mcp-gitlab
NoYesSep 15, 2026
GHSA-5648-rgj9-v224HIGH8.1
  • JavaScript logoJavaScript
  • @zereight/mcp-gitlab
NoYesSep 15, 2026
CVE-2026-58483HIGH7.5
  • JavaScript logoJavaScript
  • mcp-searxng
NoYesSep 15, 2026
CVE-2026-58485HIGH7.1
  • JavaScript logoJavaScript
  • mcp-searxng
NoYesSep 15, 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