2008年10月19日,星期日

响应拆分风险

由 michael 发布

Rails 使用的 Ruby HTTP 库不会对 HTTP 标头的值进行任何净化处理。在某些情况下,如果用户提供的值被写入响应标头,这可能导致响应拆分标头注入攻击。这些格式错误的值可用于设置自定义 cookie,并在您的应用程序使用任何用户提交的参数构建 HTTP 标头而不进行净化的情况下,伪造发送给用户的虚假响应。

一种常见的可能被利用的场景是,您的应用程序从查询字符串中获取一个 URL 并将其重定向给用户。为了缓解这种常见场景,Rails 的新版本将发布,其中将对传递给 redirect_to 的值进行净化。但是,您仍然需要在将其他值写入响应标头时多加注意。

包含修复的新版本将是

  • 2.0.5
  • 2.1.2
  • 2.2.0

这些发布版本并非立即可用,因此,如果您的应用程序难以或不方便净化传递给 redirect_to 的用户提供的值,可以在以下位置获取补丁。

Edge Rails 用户在 ba80ff74a962 之前的版本应更新到最新版本,cherry pick ba80ff74a962 的更改,或应用此补丁

感谢 ACROS Security 的 Luka Treiber 和 Mitja Kolsek 向我们报告此问题,以及 Ruby 安全团队提供的建议。