Ruby on Rails 提供三种不同的运行环境:开发、测试和生产。显然,你不应该让开发或测试环境中的代码暴露在互联网上,但这种情况(和往常一样)确实会发生(例如在预发布环境中)。
Ruby on Rails 使用“签名会话”(signed-sessions)来让用户轻松扩展应用。随着时间的推移,会话处理方式发生了变化。到 5.2.2 版本,会话默认使用 AES GCM(aes-256-gcm)保护的 JSON 编码数据。
CVE-2019–5420 实际上非常简单。用于加密会话的密钥在开发模式下可以被猜测(或暴力破解),因为它基于应用的名称。根据公告,此问题可能被利用来获得远程代码执行(RCE)。
简单的 pyton 脚本利用上述功能。