CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-92HR-GMR6-H8CP

GHSA-92HR-GMR6-H8CP: Cryptographic Weaknesses, Parameter Pollution, Path Traversal, and Timing Flaws in Etherpad

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 18, 2026·5 min read·4 visits

Executive Summary (TL;DR)

Etherpad deployments prior to version 3.3.0 are subject to token forecasting, login timing attacks, parameter pollution, path traversal via local plugins, and administrative file server error leaks.

A collection of multiple security issues in Etherpad before version 3.3.0, involving weak token generation, timing side channels, API parameter pollution, path traversal, and file-system path disclosure.

Vulnerability Overview

Etherpad (etherpad-lite) versions prior to 3.3.0 contained a group of six distinct architectural weaknesses and security vulnerabilities. These flaws exposed deployments to risk across multiple vectors, including session hijacking, timing-based credential harvesting, and local file access. The affected components span the core token generator, the OAuth2 authentication module, the REST API router, the local plugin manager, and the administration file server.

By chaining these architectural weaknesses, an attacker could potentially execute targeted attacks. For instance, predictable session tokens can compromise authentication boundaries. Meanwhile, unvalidated path parameters in plugins allow local privilege escalation or arbitrary directory traversal. This report provides a detailed examination of the root causes, patch modifications, and defense-in-depth strategies to secure Etherpad installations.

Root Cause Analysis

The root causes of these vulnerabilities stem from standard programming omissions across different modules of the codebase. First, the core token generator in src/static/js/pad_utils.ts relied on the non-cryptographic Math.random() PRNG. Because this engine is mathematically predictable, consecutive outputs allow reconstruction of the internal generator state, facilitating token forecasting.

Second, the OAuth2 provider implemented standard, variable-time string comparisons to validate user passwords. This created an observable timing side channel. The absence of strict verification on configuration lookups also left the application vulnerable to prototype pollution. Finally, the REST API interface automatically merged arbitrary HTTP request headers directly into input parameter dictionaries. This enabled API parameter pollution because incoming headers could override intended parameters.

Code-Level Patch Analysis

The security vulnerabilities were resolved in commit 7ea99706483443239bbbc0f2df9aff8ab5de4805. The patch replaced unsafe random string generation with a cryptographically secure implementation using globalThis.crypto.getRandomValues(). Rejection sampling was added to eliminate modulo bias when mapping raw byte values to the target character set.

Below is the comparison of the vulnerable and patched randomString implementations:

// Vulnerable Implementation
export const randomString = (len?: number) => {
  const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
  let randomstring = '';
  len = len || 20;
  for (let i = 0; i < len; i++) {
    const rnum = Math.floor(Math.random() * chars.length);
    randomstring += chars.substring(rnum, rnum + 1);
  }
  return randomstring;
};
// Patched Implementation with Cryptographic Entropy and Bias Correction
export const randomString = (len?: number) => {
  const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
  len = len || 20;
  const maxUnbiased = 256 - (256 % chars.length); // 248
  let randomstring = '';
  while (randomstring.length < len) {
    const bytes = new Uint8Array(len - randomstring.length);
    globalThis.crypto.getRandomValues(bytes);
    for (const b of bytes) {
      if (b >= maxUnbiased) continue; // Drop biased samples
      randomstring += chars[b % chars.length];
      if (randomstring.length === len) break;
    }
  }
  return randomstring;
};

Additionally, the OAuth2 module was hardened. It now utilizes crypto.timingSafeEqual for constant-time comparisons, enforces configuration lookups via Object.prototype.hasOwnProperty.call, and enforces an explicit 1000ms delay on failed login events.

Attack Vector & Exploitation

An attacker aiming to exploit the token generator must first gather a sequence of generated tokens, such as public author IDs or session keys. By feeding these tokens into a solver designed for the V8 engine's PRNG, the attacker can determine the internal state of the generator. With this state, the attacker predicts subsequently generated admin tokens, session identifiers, or pad IDs.

For the plugin-based path traversal, an attacker with local file system write capabilities or the ability to upload a custom plugin constructs a malicious package.json file. By defining a dependency path that points to a relative target outside the plugin's working directory, the mounting logic creates a symbolic link to critical system configuration files. This results in arbitrary file read capability when the application attempts to load the dependency structure.

Impact Assessment

The security impact of these chained vulnerabilities is substantial. Cryptographic predictability allows unauthenticated attackers to hijack active user or administrative sessions without possessing valid credentials. In environments where Etherpad handles confidential documents, this compromise directly leads to unauthorized data exposure and information disclosure.

Furthermore, API parameter pollution and timing side-channels provide unauthorized actors with mechanisms to brute-force authentication portals and manipulate internal API parameters. The local directory traversal via the plugin framework enables path manipulation, which can lead to system-wide file access under the privileges of the executing Node.js process. Finally, raw filesystem error messages returned by the administrative module disclose full path hierarchies, simplifying secondary exploitation phases.

Remediation & Defense in Depth

The primary remediation path is upgrading the Etherpad deployment to version 3.3.0 or later, which incorporates the comprehensive patch set. For systems where immediate upgrading is not viable, specific defensive controls can mitigate the exposure vectors.

Deploying a reverse proxy or Web Application Firewall to sanitize incoming request headers prevents API parameter pollution at the network boundary. Additionally, the administrative interface must be restricted to trusted, internal IP addresses using strict network access control lists. Access permissions on the Node.js process must also be audited to prevent unauthorized file system modifications, thereby neutralizing local directory traversal vectors.

Official Patches

EtherpadOfficial Security Hardening Commit
EtherpadEtherpad 3.3.0 Release Notes

Fix Analysis (1)

Technical Appendix

CVSS Score
7.5/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
1,500
via Censys

Affected Systems

Etherpad Lite instances running versions prior to 3.3.0

Affected Versions Detail

Product
Affected Versions
Fixed Version
etherpad-lite
Etherpad
< 3.3.03.3.0
AttributeDetail
Primary CWE IDCWE-330
Secondary CWE IDsCWE-208, CWE-307, CWE-235, CWE-22, CWE-209
Attack VectorNetwork / Local (varies by component)
CVSS ScoreN/A
Exploit StatusNone (No active public exploits)
KEV StatusNot Listed
Patched Version3.3.0

MITRE ATT&CK Mapping

T1110.002Brute Force: Password Cracking
Credential Access
T1592Gather Victim Host Information
Reconnaissance
CWE-330
Use of Insufficiently Random Values

The use of insufficiently random values can allow an attacker to guess or predict values that are expected to be secure, such as session IDs, tokens, or cryptographic keys.

Vulnerability Timeline

Vulnerability published and advisory created
2026-06-07
Official fix commit merged and Etherpad 3.3.0 released
2026-06-07

References & Sources

  • [1]GitHub Security Advisory GHSA-92HR-GMR6-H8CP
  • [2]Etherpad Pull Request #7906

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•18 minutes ago•CVE-2026-61634
0.0

CVE-2026-61634: Heap Memory Exhaustion in RabbitMQ Java Client

An improper input validation vulnerability (CWE-20) in the RabbitMQ Java Client prior to version 5.33.0 allows a compromised or malicious AMQP broker to trigger heap memory exhaustion and Denial of Service in client applications during the connection handshake.

Alon Barad
Alon Barad
0 views•7 min read
•about 1 hour ago•CVE-2026-70657
4.3

CVE-2026-70657: Logical Authorization Bypass in Copyparty Directory and File Key Handling

A logical authorization bypass vulnerability in copyparty allows an attacker possessing a restricted file-level key to escalate privileges to directory-level access, exposing directory listings and adjacent files.

Alon Barad
Alon Barad
1 views•7 min read
•about 5 hours ago•CVE-2026-54284
8.7

CVE-2026-54284: Algorithmic Complexity Exhaustion in sqlparse Engine

An algorithmic complexity vulnerability in the python-sqlparse library allows remote, unauthenticated attackers to cause a Denial of Service (DoS) via resource exhaustion. By transmitting a carefully constructed SQL statement containing deeply nested structures, an attacker can trigger quadratic CPU consumption within the parsing engine. This behavior bypasses the built-in depth limits because the performance degradation occurs during the initial recursive tree construction, causing the application process to hang.

Alon Barad
Alon Barad
3 views•6 min read
•about 6 hours ago•GHSA-XHCR-CQFR-M3HV
8.7

GHSA-XHCR-CQFR-M3HV: Remote Code Execution via Insecure HTTP MCP Server Registry in atomic-agents-stack

A critical vulnerability exists in the atomic-agents-stack package up to version 1.0.0. The HTTP Model Context Protocol (MCP) server-registry backend factory retrieves catalog metadata over cleartext HTTP by default. Because these catalogs define execution parameters ('command' and 'args') for local stdio subprocesses, a network-positioned attacker can intercept the cleartext traffic and inject arbitrary commands. This results in arbitrary remote code execution on the agent host system without requiring user interaction.

Alon Barad
Alon Barad
4 views•6 min read
•about 7 hours ago•GHSA-J659-8XH6-5PQ5
8.7

GHSA-J659-8XH6-5PQ5: Financial Guardrail Bypass in atomic-agents-stack via Parallel Execution of Unlisted Models

A high-severity vulnerability in the atomic-agents-stack framework allows complete bypass of cost-cap guardrails during parallel model execution when utilizing unlisted, local, or self-hosted models.

Amit Schendel
Amit Schendel
7 views•7 min read
•about 11 hours ago•GHSA-MPWR-8VM7-H73F
7.4

GHSA-mpwr-8vm7-h73f: Key Space Collapse and Authentication Bypass in go-pkcs12 PBMAC1 Decoding

A security vulnerability in the Go library software.sslmate.com/src/go-pkcs12 allows remote attackers to bypass password-based integrity verification. By crafting a PKCS#12 file with an excessively short KeyLength parameter in the PBMAC1 configuration, the derived MAC key space collapses, allowing an attacker to forge arbitrary certificate structures and private keys that are incorrectly verified as valid.

Amit Schendel
Amit Schendel
4 views•7 min read