
CVE-2019-5420용 Python 익스플로잇 스크립트로, Ruby on Rails 서명 세션 AES GCM 키 무차별 대입을 통해 개발/스테이징 환경에서 원격 코드 실행을 달성합니다.
Ruby-on-Rails는 실행할 수 있는 세 가지 환경(개발, 테스트, 프로덕션)을 제공합니다. 개발 또는 테스트 환경의 코드가 인터넷에 노출되어서는 안 되는 것이 당연하지만, (언제나 그렇듯) 실제로는 그런 일이 발생합니다(예: 스테이징 환경).
Ruby-on-Rails는 애플리케이션을 쉽게 확장할 수 있도록 “signed-sessions”을 사용합니다. 시간이 지나면서 세션을 처리하는 방식이 바뀌었습니다. 5.2.2부터 세션은 기본적으로 AES GCM(aes-256-gcm)으로 보호되는 JSON 인코딩 데이터입니다.
CVE-2019–5420은 실제로 매우 단순합니다. 세션을 암호화하는 데 사용되는 키는 애플리케이션 이름을 기반으로 하므로 개발 모드에서 추측(또는 무차별 대입)될 수 있습니다. 권고에 따르면 이 문제는 잠재적으로 코드 실행(RCE)에 사용될 수 있습니다.
간단한 pyton 스크립트가 위 기능을 악용합니다.