我有一个受{Spring}保护的Spring MVC
Web应用程序。生活似乎很平静,直到我被迫做Static Application Security Testing (SAST)
并且该工具引发了一系列安全问题。看看这里:
我已经浏览了所有CVE,并对漏洞进行了粗略描述。我有几个疑问:
当(Spring Security)等安全框架与它集成时,Web应用程序如何容易受到此类攻击?
我可以忽略所有这些漏洞,因为Spring Security可能会针对所有这些漏洞采取某种解决方法吗?
答案 0 :(得分:7)
Spring Security是一种功能强大且可高度自定义的身份验证 和访问控制框架。它是事实上的保障标准 基于Spring的应用程序。
将spring security视为一种身份验证框架,它涵盖了一个安全难题。
举个例子,让我们来看看OWASP十大应用安全风险的第一名: A1 - 注入
假设您使用jar来访问SQL数据库(例如hibernate)并且它有一个注入漏洞,那么您的应用程序也可能容易受到攻击。但是,即使hibernate没有任何安全漏洞,如果程序员将SQL查询连接在一起而没有正确地转移用户输入,则应用程序很容易受到注入攻击。
Spring安全性并不能保护您的应用程序免受这些注入攻击。
如果一个jar有漏洞并且你正在调用易受攻击的方法/功能,那么你的应用程序也可能有这个漏洞,它在很大程度上取决于漏洞是什么以及它的执行方式以及你的应用程序如何配置为使用jar
快速查看其他OWASP Top 10 Application Security Risks:
A1-Injection - 无法保护Spring Security
A2-Broken身份验证和会话管理 - Spring Security可以帮助管理其中的一些,但是配置错过弹簧安全性会暴露这些。
A3-跨站点脚本(XSS) - 无法保护Spring Security
A4-Insecure Direct Object References - Spring Security没有额外的保护(Spring Security为您提供了管理此功能的工具)
A5-Security配置错误 - 无法保护Spring Security
A6敏感数据暴露 - Spring Security可以为此提供帮助,但它也很大程度上取决于您如何存储和管理数据(例如日志文件)
A7缺少功能级别访问控制 - 如果错过了访问控制,Spring Security无法帮助您,但弹簧安全性可以轻松添加这些内容
A8-跨站点请求伪造(CSRF) - Spring Security(取决于您的应用程序的配置方式)将帮助您甚至为您管理此风险。
A9-使用具有已知漏洞的组件 - 这是您在问题中列出的CVE - 无法保护Spring Security
A10-未经验证的重定向和转发 - 可以使用Spring Security来管理此功能,但它并不能保护您的应用程序免受开箱即用
在您的应用程序的STAT期间找到的CVE列表是 A9 - 使用具有已知漏洞的组件的示例,请查看OWASP wiki for more information。
示例攻击情景
组件漏洞几乎可以导致任何类型的风险 可以想象,从琐碎到复杂的恶意软件设计 针对特定组织。组件几乎总是运行 应用程序的完全特权,因此任何组件的缺陷都可以 要认真,下载了以下两个易受攻击的组件 2011年2200万次。
- Apache CXF身份验证绕过 - 由于未能提供身份令牌,攻击者可以调用任何已满的Web服务 允许。 (Apache CXF是一个服务框架,不要混淆 使用Apache Application Server。)
- Spring远程执行代码 - 在Spring中滥用表达式语言实现允许攻击者执行任意代码, 有效接管服务器。
使用这些易受攻击库的每个应用程序都是 易受攻击,因为这两个组件都是直接的 应用程序用户可访问。使用其他易受攻击的库 在应用程序中更深入,可能更难以利用。
从上面的最后一段开始注意,组件(jar)越深入,它就越难以利用,但这并不意味着一个被确定的实体无法利用它们。
总之,Spring Security是一个很好的工具,用于管理应用程序中的身份验证和访问控制,但它并不是修复所有安全问题的灵丹妙药。