
Python-скрипт эксплойта для CVE-2019-5420, нацеленный на брутфорс ключа AES GCM подписанной сессии Ruby on Rails для достижения удаленного выполнения кода в средах разработки/стейджинга.
Ruby-on-Rails предлагает три различные среды, в которых он может работать: разработка, тестирование и продакшен. Разумеется, код, работающий в среде разработки или тестирования, не должен быть доступен в интернете, но (как всегда) это происходит (например, в staging-средах).
Ruby-on-Rails использует «подписанные сессии» (signed-sessions), чтобы упростить масштабирование приложений. Со временем способ обработки сессий изменился. Начиная с версии 5.2.2, сессии представляют собой данные в формате JSON, защищённые по умолчанию с помощью AES GCM (aes-256-gcm).
CVE-2019–5420 на самом деле очень прост. Ключ, используемый для шифрования сессий, может быть угадан (или подобран перебором) в режиме разработки, поскольку он основан на имени приложения. Согласно бюллетеню, эта проблема потенциально может быть использована для выполнения кода (RCE).
Простой pyton-скрипт эксплуатирует описанную выше функциональность.