Rails 所使用 Ruby HTTP 库未对其 HTTP 标头值执行任何消毒处理。这可能会导致当用户提供的值写入到响应标头中时出现 响应拆分 和 标头注入 攻击。如果您的应用程序在未经消毒的情况下使用任何用户提交的参数来构造 HTTP 标头,则这些格式错误的值可用于设置自定义 Cookie,并为用户伪造虚假响应。
可被利用的一个常见场景是您的应用程序从查询字符串中获取 URL,然后将用户重定向到该 URL。为了减轻此常见场景的影响,将发布新版本的 Rails,对传递给 redirect_to 的值进行消毒。但是您仍然需要在向响应标头写入其他值时小心谨慎。
将包含修复程序的新版本是
这些版本尚未立即提供,因此如果您的应用程序消毒传递给 redirect_to 的用户提供的值不可行或不方便,则可以在以下位置获取补丁。
ba80ff74a962 之前的 Edge Rails 用户应更新到最新版本,在 ba80ff74a962 采纳更改或应用 此补丁
感谢 ACROS 安全团队的 Luka Treiber 和 Mitja Kolsek 通知我们此问题,以及 Ruby 安全团队的建议。