OWASP and Its 10 Vulnerabilities - DZone
摘要
在这篇文章中,我们将讨论开放式Web应用程序安全项目(OWASP)的10个漏洞,并分享一些保护措施来防范它们。
OWASP 的全称是开放式Web应用程序安全项目(Open Web Application Security Project)。它是一个非营利组织,帮助各种机构开发、购买和维护可以信任的软件应用程序。OWASP 寻找受过教育的开发人员、设计师、架构师和企业主,以识别与最常见的Web应用程序安全漏洞相关的风险。
OWASP 被称为一个论坛,因为它支持开源和商业安全产品,信息技术专业人员可以在其中互相交流和建立专业知识。组织需要的材料可通过免费和开源软件许可证获得。
OWASP 是公开数据的最佳选择,适用于公司进行安全代码审查、渗透测试等,并且可以匿名发送数据。为了产生每个风险和每个漏洞的频率,数据将被合并并根据其可利用性、普遍性、可检测性和技术影响进行评分和分配。
Injection(注入漏洞)
敏感信息可能会从详细的错误消息中泄露,注入漏洞可能导致重大不良和灾难结果。注入漏洞不仅限于SQL注入、LDAP注入或文件系统注入。自2013年以来,OWASP列表中的注入漏洞发生在应用程序输入到用户提供的数据传递到后端数据库或服务器而未进行适当输入验证检查时。黑客意图是利用应用程序,因此他/她会据此构建一个字符串。
一些预防措施包括:
- 使用参数化查询组合、存储过程、输出转义和白名单来验证服务器端输入。
- 使用LIMIT(数据库控制)以防止在成功注入攻击情况下的大量披露。
Broken Authentication(身份验证缺陷)
自2013年以来,就像注入漏洞一样,身份验证缺陷在OWASP前10漏洞列表中的位置也没有改变。如果系统身份验证配置错误,攻击者可以通过破坏密码会话令牌等来冒充合法用户,这将导致严重的技术影响。如果你像其他人一样登录,你可以潜在地访问网站或应用程序的所有资源。以下是一些预防措施:
- 应实施多因素认证(MFA)。
- 尽量避免使用默认凭据。
- 密码策略应非常强。
- 防止页面出现延迟的登录失败、随机化会话ID、会话超时等。
- 登录所有的登录失败尝试。
Sensitive Data Exposure(敏感数据暴露)
大多数与财务信息、健康记录、用户凭据等相关的数据属于敏感数据,在这种漏洞下,这类数据通常应加密或隐藏,以便不会以明文形式显示。黑客还可以通过执行中间人(MiM)并窃取传输中的数据来访问这些信息。在过去几年的时间里,敏感数据的暴露变得更加普遍。以下是一些预防措施:
- 处理、存储或传输的数据应根据敏感级别对应用程序进行分类,并相应地对其应用一些控制措施。
- 必须强制执行加密。
- 应使用标准算法和合适的密钥管理系统。
- 应禁用包含敏感数据的缓存响应,并停止存储不必要的数据。
XML External Entities (XXE)(XML外部实体)
XXE可以利用Web应用程序中的XML解析器,这些解析器可能处理并执行包含XML文档中外部引用的负载。根据统计数据,此漏洞已被添加到统计列表中,这是由运行静态分析工具的公司返回的统计数据。在过去几年里,该漏洞在XML处理中的受关注度稳步上升,并成为Web应用程序更严重的风险。
如果攻击者在XML文件中添加或修改这些实体,并将其指向恶意源,则可以导致拒绝服务(DoS)攻击或SSRF攻击。以下是一些预防措施:
- 为了防止XML文档中的恶意数据,尝试实施服务器端输入验证、净化检查等。
- 禁用XML外部实体和DTD处理。
- 在使用上传的地方使用超时并进行测试。
- 使用不那么复杂的格式,例如JSON。
- 避免敏感数据的序列化,并且所有XML解析器和库都需要打补丁。
Broken Access Control(访问控制缺陷)
在OWASP漏洞列表中有两个类别,分别是缺失功能级别访问控制和不安全的直接对象引用。在OWASP最新发布的列表中,这两个类别被合并为访问控制缺陷。访问控制系统中的漏洞被称为访问控制缺陷,这将允许攻击者通过绕过授权获得特权用户的访问权限。以下是一些预防措施:
- 除了公共资源外,应默认避免所有其他资源,并应维护访问控制失败的日志并警示管理员。
- 在应用程序中,实现和重用访问控制检查,包括最小化跨域资源共享(CORS)的使用。
Security Misconfigurations(安全配置错误)
在此类别中,有多种不正确的实施方式可以确保应用程序数据的安全。有很多事情,比如安全头配置错误、详细错误消息忽略可能泄漏敏感信息、忽视修补或升级系统等。补救措施如下所述:
- 应实施安全安装过程。
- 使用“分段应用程序架构”,实现零信任模型,只允许所需行为并阻止不必要的行为。
Cross-Site Scripting(跨站点脚本)
跨站点脚本从OWASP前10漏洞列表的第三位下降到第七位。这是因为其他漏洞变得更加优先。尽管如此,它仍然是影响超过三分之二应用程序的常见漏洞之一。以下是一些预防措施:
- 使用设计上过滤XSS的框架,如最新的Ruby on Rails。
- 数据转义技术、上下文敏感编码应用实施和内容安全政策(CSP)应作为缓解措施启用。
Insecure Deserialization(不安全反序列化)
序列化内容是应用程序代码中的一个对象,并将其转换为字节流。反序列化正好相反,是指将序列化的数据转换回应用程序可用的对象。以下是一些预防措施:
- 不应接受来自不受信任源的序列化对象。
- 在反序列化期间应实施检查完整性和严格类型约束。
使用已知漏洞的组件
本节主要指使用各种组件的广泛问题,例如实施库来实现某些功能而不验证其合法性。可利用性的评分是可变的,取决于漏洞的性质和位置。以下是一些预防措施:
- 只能使用官方来源的组件,并维护其当前库存。
- 不断监控CV对组件中的漏洞。
Insufficient Logging and Monitoring(日志记录和监控不足)
组织需要记录事件以检测其应用程序中的数据泄露。在Web应用程序中记录事件或安全事件的发生被称为日志记录。例如,同一IP的重复失败登录尝试。不断查看这些日志并将其升级到事件响应(IR)团队以便及时采取行动被称为监控。以下是一些预防措施:
- 应记录所有怀疑活动,以便识别恶意账户。
- 应为重要事务维护详细的审计追踪。这将防止删除或篡改。
- 建立事件响应和恢复计划。
就是这样!希望这些信息能帮助你建立强大的安全策略。