
Python-Exploit-Skript für CVE-2019-5420, das auf das Brute-Forcing von AES-GCM-Schlüsseln für signierte Sitzungen in Ruby on Rails abzielt, um eine Remote-Code-Ausführung in Entwicklungs- und Staging-Umgebungen zu erreichen.
Ruby-on-Rails bietet drei verschiedene Umgebungen, in denen es ausgeführt werden kann: Entwicklung, Test und Produktion. Offensichtlich sollte kein Code in der Entwicklungs- oder Testumgebung im Internet verfügbar sein, aber es passiert (wie immer) (z. B. in Staging-Umgebungen).
Ruby-on-Rails verwendet „signierte Sitzungen“ (signed-sessions), um das Skalieren von Anwendungen zu erleichtern. Im Laufe der Zeit änderte sich die Art und Weise, wie die Sitzungen gehandhabt wurden. Mit Version 5.2.2 werden Sitzungen als JSON-codierte Daten gespeichert, die standardmäßig mit AES GCM (aes-256-gcm) geschützt sind.
CVE-2019–5420 ist eigentlich sehr einfach. Der Schlüssel, der zur Verschlüsselung von Sitzungen verwendet wird, kann im Entwicklungsmodus erraten (oder per Brute-Force ermittelt) werden, da er auf dem Namen der Anwendung basiert. Dieses Problem kann laut Advisory potenziell genutzt werden, um Codeausführung (RCE) zu erlangen.
Ein einfaches pyton-Skript nutzt die obige Funktionalität aus.