CVE-2026-61500: Rejetto HFS Session Forgery Leads to RCE as Scanning Begins

Rejetto HFS CVE-2026-61500 session forgery vulnerability

In short: CVE-2026-61500 is a critical (CVSS 9.3) authentication bypass in Rejetto HTTP File Server (HFS) 3.x. Because the server’s session-signing key comes from a predictable random number generator that also leaks its output during login, an attacker can rebuild the key, forge an administrator cookie and then run code on the server. A fix has been available since July 2026 (HFS 3.2.1), but VulnCheck honeypots started seeing probes in early October, shortly after a public proof of concept was released.

Affected and fixed versions

ProductAffectedFixed
Rejetto HFS 3.x3.0.0 – 3.2.03.2.1 (latest stable recommended)

Root cause: Math.random() used for a secret

HFS is written in JavaScript (Node.js). The vulnerable versions derive the session-cookie signing key from Math.random(), which in V8 uses the xorshift128+ algorithm. That generator is fast but not cryptographically secure: if you observe enough consecutive outputs, you can recover its internal state and predict every past and future value.

The second mistake made it practical. During login, HFS sent raw values from that same generator to unauthenticated clients. The full attack looks like this:

  1. Send a small number of login requests and collect the generator outputs leaked in the responses.
  2. Reconstruct the xorshift128+ state from those values.
  3. Recover the session-cookie signing key.
  4. Forge a valid cookie for an administrator account.
  5. Abuse the documented server_code configuration feature, which runs custom server-side JavaScript, to execute commands on the host.
Terminal output of a CVE-2026-61500 proof of concept recovering the HFS signing key and forging an admin session

From there an attacker can read, steal or delete files, install malware, or use the server as a pivot into the internal network.

Discovered with an AI model

Horizon3.ai researchers found the issue in June 2026 using Anthropic’s Mythos model, which reasoned that the leaked Math.random() values could be reversed to obtain the signing key. Rejetto shipped HFS 3.2.1 on July 13, 2026, and Horizon3 published technical details and a proof of concept on September 30.

Exploitation status

In early October, VulnCheck reported probes against its canary systems in Japan and the United States, coming from a single China Telecom IP address. The activity looked like small-scale reconnaissance, and no successful compromise or post-exploitation activity had been reported at the time. With a public PoC available, wider exploitation is a realistic next step.

What to do now

  • Upgrade to HFS 3.2.1 at minimum, ideally the latest stable release.
  • Do not expose HFS directly to the internet unless you need to; put it behind a VPN or an authenticating reverse proxy.
  • Review admin activity and the server_code setting for changes you did not make.
  • Hunt in logs for bursts of login requests from one IP followed by an admin session from that same address.

Lesson for developers

Never use Math.random() for tokens, keys or session identifiers. In Node.js, use the crypto module instead:

const crypto = require('crypto');
// 32 random bytes from a CSPRNG, hex-encoded
const signingKey = crypto.randomBytes(32).toString('hex');

And never return internal random values to clients. Weak session handling is a classic web security failure; our OWASP Top 10 guide covers the related categories, and our Burp Suite tutorial shows how to inspect cookies and session tokens during an authorized test.

References

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top