鉴于当前的 Rails 安全警报四处流传,我正在考虑保护一些应用程序的应用程序。他们中的大多数几乎不使用 XML/JSON 解析,当他们这样做时,是将特定页面或挂钩与 3rd 方服务集成。
我已经看到删除默认解析器以完全关闭该功能的能力,但是有没有办法在可能受 http 基本身份验证或其他方式保护的特定路由上启用它/将其列入白名单?这至少需要有人试图利用这些类型的漏洞来了解启用它的具体位置。
鉴于当前的 Rails 安全警报四处流传,我正在考虑保护一些应用程序的应用程序。他们中的大多数几乎不使用 XML/JSON 解析,当他们这样做时,是将特定页面或挂钩与 3rd 方服务集成。
我已经看到删除默认解析器以完全关闭该功能的能力,但是有没有办法在可能受 http 基本身份验证或其他方式保护的特定路由上启用它/将其列入白名单?这至少需要有人试图利用这些类型的漏洞来了解启用它的具体位置。
您正在谈论的行为是作为 Rack 中间件实现的,它在传入请求到达您的控制器之前对其进行处理。
这个中间件作用于为不同的 mime 类型启用的解析器列表。如果您想在给定请求上使用不同的参数解析逻辑时添加自定义规则,您可以通过重新打开它来修补此行为。
当前 XML/YAML 解析漏洞的主要风险与为您提供更丰富的对象重新序列化的回调有关。因此,一种可能的方法是只使用为您提供 XML/YAML 解析树的较低级别的 API,但不要在 Ruby 标量(字符串、数字、哈希等)之外进行任何水合。如果这对您不起作用,使用Yajl 之类的解析器,或者在许多情况下,只需升级到最新版本的 gem,就足以让解析继续进行。
此外,解析的主要风险在于参数解析,而不是响应解析。响应解析(特别是如果您可以信任该服务并通过安全通道进行通信)的风险要低得多,因为您可以控制它发生的时间和地点。