FlawOpen

flawopen.com/Teardowns/cve-2026-61500-rejetto-hfs-predictable-session-key

● CVE-2026-61500 · CVSS 9.3[1] · Kritisch
Sicherheitsforschung · FlawOpen

CVE-2026-61500: Vorhersagbarer Sitzungssignaturschlüssel in Rejetto HFS

Rejetto HFS 3.0.0–3.2.0 verwendete von Math.random() abgeleitete Werte für Sitzungssignaturen und beim Login. Laut Horizon3 ermöglichte die Offenlegung Sitzungsfälschungen; VulnCheck zufolge wurde ab dem 1. Oktober Ausnutzungsaktivität beobachtet. Aktualisieren Sie auf 3.2.1 oder neuer; eine konkrete Opferkompromittierung ist nicht bestätigt.[1], [4], [5]

💡 Einfache Erklärung (ELI5)

Eine Cookie-Signatur ist wie ein Wachssiegel auf einem Administrationsausweis. HFS erzeugte das Geheimnis für das Siegel aus einer vorhersagbaren Zahlenfolge, während die Anmeldung weitere Zahlen aus derselben Folge preisgab. Wer das Geheimnis ableitet, kann das Siegel fälschen. Der Patch verwendet kryptografische Zufallswerte von Node.js.[1], [3]

Kernkonzepte & Begriffe

Sitzungssignaturschlüssel
Ein Geheimnis, mit dem Koa Sitzungscookies signiert, damit Manipulationen erkannt werden.[1], [3]
Math.random()
Eine allgemeine Pseudozufalls-API, die sich nicht zur Erzeugung kryptografischer Geheimnisse eignet.[6], [4]
CWE-338
Verwendung eines kryptografisch schwachen Pseudozufallszahlengenerators; diese Schwäche ist dem CVE-Eintrag zugeordnet.[1], [6]
PRNG-Zustand
Interner Zustand, der die nächsten Pseudozufallswerte bestimmt. Wird derselbe Generator für ein Geheimnis und beobachtbare Werte genutzt, können Zusammenhänge sichtbar werden.[4]
Entdeckungskontext
Horizon3 zufolge identifizierte und validierte ein Mythos-gestütztes Multi-Agenten-Forschungssystem diese HFS-Schwachstellenkette. Das beschreibt die Entdeckung durch Forschende; es ist weder eine Schwachstelle in Mythos noch ein Beleg für einen autonomen KI-Angriff auf eine reale HFS-Installation.[4]

Framework-Zuordnungen

  • CWE-Referenz für die in diesem Leitfaden beschriebene Schwachstelle: CWE-338

Ursachenanalyse

Der CVE-Eintrag nennt HFS 3.0.0 bis 3.2.0 und CWE-338. Im Upstream-Commit 59472e5 übergab der verwundbare Code Koa [randomId(30)]; randomId() verwendete Math.random(). Der Fix ersetzt dies durch [randomBytes(32).toString('base64url')] aus node:crypto. Derselbe Commit ersetzt außerdem Math.random() durch randomUUID() für die öffentliche Anmelde-Handshake-ID. Horizon3 berichtet, dass unauthentifiziert erreichbare Anmeldeantworten genügend zusammenhängende Ausgaben offenlegten, um den V8-PRNG-Zustand wiederherzustellen und den Cookie-Signaturschlüssel abzuleiten. Mit einer gefälschten Administratorsitzung konnten integrierte Verwaltungsfunktionen zur serverseitigen Codeausführung führen. Dieser Artikel beschreibt die Kette auf hoher Ebene, ohne Solver, Anfragen oder Payloads wiederzugeben. VulnCheck zufolge beobachtete Canary Intelligence ab dem 1. Oktober 2026 Ausnutzungsaktivität; berichtet wurde dies am 2. Oktober. Die Telemetrie benennt keine kompromittierte HFS-Installation.[1], [3], [4], [5]

Schritt-für-Schritt Angriffsablauf

Schritt 1

Eine verwundbare HFS-Version ist erreichbar

Betroffen sind HFS 3.0.0 bis 3.2.0. Die CVSS-Metriken weisen auf Netzwerkzugriff ohne vorherige Berechtigungen hin.[1], [2]

Schritt 2

Dieselbe schwache Zufallsfolge erfüllt zwei Aufgaben

HFS leitete den Signaturschlüssel aus Math.random() ab, und die Anmeldung gab verwandte Werte preis. Kryptografische Geheimnisse dürfen nicht aus einem vorhersagbaren oder beobachtbaren allgemeinen PRNG stammen.[1], [3]

Schritt 3

Die Schwäche überwindet die Sitzungsschranke

Laut Horizon3 ermöglichten die Ausgaben eine Wiederherstellung des PRNG-Zustands und damit das Fälschen einer Sitzungssignatur für Administratorzugriff. Die genaue Wiederherstellungsmethode wird ausgelassen.[4]

Schritt 4

Administrationszugriff kann Codeausführung erreichen

Horizon3 beschreibt die Kette bis zur HFS-Funktion server_code. VulnCheck zufolge beobachtete Canary Intelligence ab dem 1. Oktober 2026 Ausnutzungsaktivität, wie der Bericht vom 2. Oktober festhält; diese Telemetrie belegt keine Kompromittierung einer bestimmten Installation.[4], [5]

Quellcode: Verwundbar vs. Sicher

Diese Auszüge entsprechen dem tatsächlichen Upstream-Commit. randomBytes(32) liefert 256 Bit aus dem Kryptografiemodul von Node.js für den Schlüssel; randomUUID() ersetzt die Quelle der öffentlichen Anmelde-ID. Geheimnisse zur Sitzungsauthentifizierung müssen aus einer kryptografischen Quelle stammen und unabhängig von beobachtbaren Ausgaben des Anwendungs-PRNG sein. Aktualisieren Sie auf HFS 3.2.1 oder eine neuere unterstützte Version; der Auszug erläutert die Änderung und ist kein eigenständiger Patch. Dies sichert nur den generierten Standardwert ab: Ist COOKIE_SIGN_KEYS konfiguriert, muss jeder vorgegebene Schlüssel ebenfalls unabhängig mit kryptografischer Zufälligkeit erzeugt, geheim gehalten und bei Offenlegung rotiert werden.[3], [1]

Quelltextauszug: src/index.ts (Cookie-Signaturschlüssel) und src/api.auth.ts (ID des Login-Handshakes, Upstream-Commit 59472e5)

VERWUNDBARE IMPLEMENTIERUNG
import { httpStream, randomId } from './misc'

const keys = process.env.COOKIE_SIGN_KEYS?.split(',')
  || [randomId(30)]
export const app = new Koa({ keys })

const sid = Math.random()
GEHÄRTETER SICHERHEITS-PATCH
import { randomBytes, randomUUID } from 'node:crypto'

const keys = process.env.COOKIE_SIGN_KEYS?.split(',')
  || [randomBytes(32).toString('base64url')]
export const app = new Koa({ keys })

const sid = randomUUID()

Checkliste für Engineering & Systemsicherheit

Quellen