
Script d'exploitation Python pour CVE-2019-5420, ciblant le brute-force de clé AES GCM de session signée dans Ruby on Rails pour atteindre l'exécution de code à distance dans les environnements de développement/staging.
Ruby-on-Rails propose trois environnements différents dans lesquels il peut fonctionner : développement, test et production. Vous ne devriez évidemment pas avoir de code en développement ou en test accessible sur internet, mais cela arrive (comme toujours) (par exemple dans des environnements de staging).
Ruby-on-Rails utilise des « sessions signées » pour permettre aux gens de mettre facilement à l'échelle leurs applications. Au fil du temps, la façon dont les sessions étaient gérées a changé. Avec la version 5.2.2, les sessions sont des données encodées en JSON protégées par défaut avec AES GCM (aes-256-gcm).
CVE-2019–5420 est en fait très simple. La clé utilisée pour chiffrer les sessions peut être devinée (ou forcée par brute force) en mode développement car elle est basée sur le nom de l'application. Selon l'avis, ce problème peut potentiellement être utilisé pour obtenir une exécution de code (RCE).
Un simple script pyton exploite la fonctionnalité ci-dessus.