https://spring.io/security/cve-2024-38809
根据上面的链接,我们应该升级版本或应用过滤器。
现在我的问题是我正在使用较旧的 Spring 版本,由于其他依赖项和较长的测试周期,我无法升级。
我想应用过滤器,上面的链接提到了 “旧的、不受支持的版本的用户可以对“If-Match”和“If-None-Match”标头强制执行大小限制,例如通过过滤器。”
“If-Match”和“If-None-Match”标头的适当大小限制应该是多少?
如何通过限制其大小限制来解决问题?
有人如何通过请求中的“If-Match”和“If-None-Match”标头进行攻击?
没有适用于旧版本及其解决方案的文档或 github 链接。
我想应用过滤器,上面的链接中提到“旧的、不受支持的版本的用户可以对“If-Match”和“If-None-Match”标头强制实施大小限制,例如通过过滤器。”
太棒了。
有人如何通过请求中的“If-Match”和“If-None-Match”标头进行攻击?
总而言之,攻击者将通过在 If-Match 或 If-None-Match 标头中提供非常长的值列表来尝试耗尽您的 CPU(导致 DoS)...您可以在 here 阅读更多内容。
如何通过限制其大小限制来解决问题?
好吧,它将充当快速逻辑......而不是解析整个值列表,您将最多读取 X 个值,从而防止 CPU 耗尽。
“If-Match”和“If-None-Match”标头的适当大小限制应该是多少?
这要看情况。没有神奇的数字。您应该根据您的 API 使用或业务案例选择一个数字...
没有适用于旧版本及其解决方案的文档或 github 链接。
你是对的。他们没有提供建议的过滤器的示例。然而,这是 GIT commit,显示了他们如何解决问题...您可以使用它作为实现过滤器(或与之相关的逻辑)的起点...注意:如您所见,他们所做的是将用于解析 Etag 值的 RegEx 的使用替换为更普通(但高效)的解析...
此外,更多资源: