行业新闻与博客
使用 OWASP 十大列表来保护您的网站安全
了解 OWASP Top 10 如何帮助保护您免受最危险的安全威胁
Web 安全是一个瞬息万变的领域,威胁永无止境。如果阻止了一种威胁,那么其他威胁取代它只是时间问题。对于 Web 应用程序和网站的开发人员而言,目标始终在您需要保护的范围之内。无论您是要创建下一个大创意,还是要维护现有的产品或业务,您都一定要保护劳动成果。
但是随着网络空间中潜伏着大量威胁,您如何知道哪些是最关键和最常见的?如果有一个简单的清单为您列出全部清单,那不是很好吗?好吧,今天是您的幸运日。那是因为开放 Web 应用程序安全性项目(OWASP)就是这样创建的,OWASP 是您网站面临的最大威胁的十大列表。
该列表每隔几年更新一次,是一个广为接受的行业文档,任何运行网站的人都必须阅读。没有它,您可能会面临最危险的漏洞,而不是减轻开发和部署期间的风险。
十大漏洞是什么?您如何适当地保护自己免受攻击?如果您成为其中之一的受害者,那么最好的行动方案是什么?
什么是 OWASP?
在进入 OWASP Top 10 之前,让我们先谈谈 OWASP 本身。OWASP 基金会成立于 2001年12月1日,并于 2004年4月21日在美国成立为非营利组织。在成立以来的近二十年中,它们已发展成为拥有近 32,000 名志愿者的组织全世界。它们是业界公认且值得信赖的名称,在全球拥有超过 275 个本地分会。
自发布以来,OWASP 的任务一直是提高软件的安全性。他们使用“开放社区”模型,这意味着任何人都可以为自己的项目,活动,网络研讨会等做贡献。他们免费提供材料和信息,可以通过其网站进行访问。它们产生各种各样的媒体,包括视频,软件工具,论坛,实时和虚拟事件以及学习资源。
基本上,OWASP 是与 Web 应用程序安全性相关的所有内容的存储库,其开放社区成员的丰富知识和经验为其提供了支持。该小组致力于帮助组织创建,开发,部署,操作和维护安全的网站和应用程序。OWASP 的成员除了提供一系列文章,方法论,文档和技术外,还执行安全评估和研究。
但是,他们最著名的是 OWASP 十佳列表。
OWASP 前十名是什么?
OWASP 十大列表概述了网站和 Web 应用程序的安全性问题。它于 2003年首次发布,通常随着 AppSec 市场的变化和发展每三到四年进行修订。该列表在 2004、2007、2010、2013、2017年有所更新。
OWASP Top 10 列表的重点是最关键的漏洞,检查它们的风险,影响以及与之相对应的最佳对策。该列表由来自世界各地的安全专家小组编制,旨在使人们意识到组织面临的最大威胁。OWASP 建议所有公司将报告的发现内容纳入他们的安全流程和实践中,以便可以最大程度地减少产品中这些漏洞的出现。
至于漏洞本身,则根据四个不同的标准对其进行判断:
- 患病率–此威胁对威胁代理(例如黑客)的知名度是多少?
- 可检测性–威胁代理发现应用程序中的漏洞有多容易?
- 轻松利用-威胁代理发现漏洞后,实际利用漏洞有多容易?
- 业务影响–利用该应用程序的公司将受到多大程度的影响?
最初创建列表时,漏洞按类型分组,以使作者可以覆盖最多的领域。但是,这使得读者更难确定哪些漏洞实际上是最高优先级,因为没有任何统计数据可以量化这些漏洞。因此,由于应用程序类型和威胁模型因组织而异,因此成为受众的主观任务。最终,经过大量辩论,OWASP 决定提供一个更直接的前十名列表,他们认为该列表与最广泛的公司相关(尽管要注意的是,这些条目没有特定的顺序)。
OWASP Top 10 的重要性
OWASP Top 10 列表中最有用的方面是其中提供的可操作信息,可帮助公司将安全性工作重点放在最重要和最有效的领域。这导致该清单被许多世界上最大的公司采纳为标准要求(包括 PCI-DSS 付款处理标准)。组织无法解决 OWASP Top 10 中的项目,这是向审计师的有力指示,表明它们在合规性标准方面存在不足。
根据 2018年Verizon 数据泄露调查报告,Web 应用程序攻击已成为确认数据泄露的最常见原因。不幸的是,许多组织在创建和维护有效的应用程序安全性程序方面仍然遇到困难,因为他们只是不知道从哪里开始。OWASP Top 10 列表可以填补这一空白,是一个很好的起点,因为它涵盖了最可能被利用的漏洞(并可能造成对企业和客户都非常不愉快的数据泄露)。通过补救它们,您将大大降低遭受高额破坏的风险。
研究表明,迫切需要采取某种行动。正如您在下面看到的那样,当涉及到 OWASP Top 10 策略时,应用程序的通过率仍然非常低。也许更令人担忧的是,在进行最初的 OWASP Top 10 漏洞扫描后,合规性仅略有提高,这表明大多数公司并未认真对待扫描结果。
OWASP Top 10 列表中的大多数项目并不是很难找到和修复的,但是在组织内部经常会出现脱节的情况,因为开发人员通常在网络安全或安全编码实践方面没有得到很好的培训。相反,安全团队并不总是对应用程序安全真正需要的内容有最准确的了解。对一些关键应用程序进行一次性扫描或笔测试只是不够好。必须持续进行评估,以代替组织开发或购买的所有产品,并且评估必须在生命周期的所有阶段进行,以使其有效。运行扫描以涵盖 OWASP 十大列表很重要,但这也不是魔术。它必须是更大的公司范围安全策略的一部分。、
OWASP 十大漏洞
#1 –注射
它是什么?
注入攻击可能发生在诸如数据库(SQL,noSQL),操作系统或服务器之类的事物上(通过诸如 LDAP 之类的协议)。当恶意数据作为查询或命令的一部分发送到解释器时,它们就会发生。然后,这些数据将诱使解释器执行命令,否则这些命令将对局外人禁止。如果没有适当的身份验证,它也可以用于访问私有数据。
例
假设您经营一家电子商务商店,而访问特定商品的方法是在浏览器的地址栏中输入以下内容:
- http://www.yourstore.com/catalog/item.asp?itemid=999
“ 999”生成一个 SQL 查询以显示“ 999”对应的任何项目。攻击者可以通过输入以下内容来操纵它:
- http://www.yourstore.com/items/item.asp?itemid=999 或 1 = 1
生成的 SQL 查询为:
但是由于 1 始终等于 1,所以将返回每个产品名称和说明(甚至所有者可能不希望您看到的名称)。
您可以输入以下内容来进一步:
http://www.estore.com/items/iteam.asp?itemid=999; 滴台
现在,SQL 查询为:
最终结果?删除您的表格!
如何保护自己
- 验证和 / 或清理用户提交的数据(验证会拒绝可疑条目,而清理工作会清除其中的可疑部分)
- 设置控件以最小化公开的信息量
- 使用避免使用解释器的安全 API
- 使用 LIMIT 等 SQL 控件来防止大量泄露记录
#2 –身份验证失败
它是什么?
身份验证失败是指身份验证和会话管理功能实现不正确的情况。诸如密码,密钥或会话令牌之类的凭据可能会遭到破坏,并且缺陷也可以用于假定其他用户的身份。攻击甚至可以访问可能损害整个系统的管理员帐户。
例
凭据填充是破坏身份验证攻击的一个示例。这是攻击者使用已知密码列表(如在数据泄露中获得的那些密码)尝试并获得访问权限时,应用程序充当每次密码尝试的验证机制的情况。
如何保护自己
- 使用多因素身份验证
- 实施速率限制以限制失败的登录尝试次数
- 不要使用系统默认凭据
- 根据 NIST 800-63B 第 5.1.1 节标准选择密码
- 使用内置的服务器端会话管理器
#3 –敏感数据暴露
它是什么?
当 Web 应用程序和 API 无法正确保护敏感数据(如财务或医疗保健信息)时,就会发生敏感数据泄露。攻击者可以很容易地窃取这些受保护程度不高的数据,以进行欺诈,身份盗用和其他犯罪。
例
如果网站未在所有页面上都使用 SSL / TLS,则攻击者可能会监视流量,将连接从 HTTPS 更改为 HTTP,然后窃取会话 Cookie 以获得访问权限。
另一个例子是无盐哈希。如果使用简单的哈希来存储密码,并且攻击者可以访问数据库,则哈希很容易被破解。
如何保护自己
- 识别敏感数据并应用适当的控制
- 加密所有敏感数据,无论是运输途中还是静止时
- 禁用任何敏感信息的缓存,不要不必要地存储任何敏感信息
- 使用强大的盐化哈希函数(例如 scrypt,bcrypt 和 Argon2)存储密码
#4 – xml 外部实体(XXE)
它是什么?
这种攻击针对的是解析 xml 输入的 Web 应用程序。较旧的或配置不当的 xml 处理器最终可能会评估 xml 文档中的外部实体引用(例如硬盘驱动器)。这可能使 xml 解析器欺骗将数据发送到未经授权的外部实体,该实体随后可以将敏感数据直接发送给黑客。
例
以下 xml 代码可用于从服务器提取数据:
但是,攻击者可以通过将 ENTITY 行更改为以下内容来获取有关专用网络的信息:
如何保护自己
- 修补所有旧的 xml 解析器
- 禁止在 xml 应用程序中使用外部实体
- 仅允许 Web 应用程序接受不太复杂的数据类型(如 JSON)
- 避免序列化
- 使用 XSD 或其他验证工具验证 xml
- 将服务器端 xml 输入列入白名单并进行清理
#5 –损坏的访问控制
它是什么?
在这种情况下,对允许 / 不允许进行身份验证的用户的限制执行不当。然后,攻击者可以利用攻击获得未经授权的功能,包括访问和修改用户帐户,敏感文件,用户数据,访问权限等。
例
假设您有一个 Web 应用程序,它可以接受 SQL 调用来获取帐户信息而无需验证:
然后可以更改“ acct”参数以允许访问他们选择的任何帐户:
如何保护自己
- 默认情况下,拒绝访问除公共资源以外的所有内容
- 创建强大的访问控制机制,并在各处使用它们
- 不允许用户创建,读取或删除任何记录
- 禁用服务器目录列表,并且不将元数据存储在文件夹根目录中
- 记录失败的访问尝试并创建警报
- 速率限制 API 访问
#6 –安全配置错误
它是什么?
这是 OWASP Top 10 列表中最常见的漏洞,通常是使用默认配置 / 凭据或显示不必要的冗长错误消息的结果。这些消息可能会揭示应用程序中的漏洞。
例
一个示例是使用供应商默认用户凭据部署的数据库。您不能通过使用用户名“ admin”和密码“ password”来使攻击者更轻松。
另一个示例将显示一条错误消息,如下所示:
如您所见,其中显示了应用程序代码的详细信息,可能被恶意的第三方利用。使用简单的英语错误消息就足够了。
如何保护自己
- 删除代码中所有未使用的功能
- 只显示不会显示太多信息的常规错误消息
- 使用静态应用程序安全测试(SAST)程序来确定错误消息中的信息暴露风险
#7 –跨站脚本(XXS)
它是什么?
此类漏洞最终是会话管理薄弱的结果,并在 Web 应用程序允许用户将自定义代码添加到将显示给他人的 URL 或站点时发生。然后,可以在他们的浏览器上运行恶意的 JavaScript 代码。
例
黑客可以通过电子邮件向假装来自受信任银行的人发送电子邮件,其中包括指向该银行网站的链接。但是,该链接可能会将恶意代码附加到 URL 的末尾。如果银行的站点没有得到适当的保护,则恶意代码将在受害者单击后在受害者的浏览器中运行。
如何保护自己
- 使用 Web 应用程序防火墙(WAF),它将使用基于签名的筛选来识别和阻止攻击者的请求
- 使用通过设计逃避 XSS 的框架并了解其 XSS 保护的局限性,以便您处理未涵盖的情况
- 在执行客户端浏览器文档修改时应用上下文相关编码
#8 –不安全的反序列化
它是什么?
序列化是指将来自应用程序代码的对象转换为可用于其他目的(例如流式传输)的格式。反序列化是相反的,它允许黑客在服务器上执行恶意代码。即使该漏洞不会导致远程执行代码,攻击者仍然可以使用它们来执行诸如重播攻击,注入攻击和特权升级攻击之类的操作。
例
打个比方是当您移动时。序列化是当您将所有物品打包好后再打包。反序列化是指在新的地方拆包时的情况。如果搬运工在拆箱之前添加,移除和重新排列了物品,则反序列化将不安全。
对于一个真实的例子,假设一个 PHP 论坛使用序列化来保存包含用户 ID,密码和帐户级别的 cookie:
黑客可以更改序列化对象以使其自己成为管理员:
如何保护自己
- 监控反序列化
- 实施类型检查
- 禁止反序列化来自不受信任来源的数据
#9 –使用具有已知漏洞的组件
它是什么?
Web 开发人员通常使用应用程序中的现有组件来避免多余的工作,同时提供所需的功能。攻击者将在这些组件中寻找漏洞,他们可以利用这些漏洞对应用程序本身进行攻击。流行的组件可以在成千上万的站点上使用,而单个漏洞可能会使所有组件处于危险之中。
例
2017年的 Equifax 漏洞就是此类漏洞的完美例证。这是由于使用 Apache Struts 版本导致的,该版本具有在攻击前六个月发现的现有漏洞。如果他们能首先阅读 OWASP Top 10 榜单,那就可以为他们节省 7 亿美元!
如何保护自己
- 始终确保您的组件具有最新的安全补丁程序和更新
- 从项目中删除未使用的组件
- 仅从可信来源获取组件
- 使用软件组成分析(SCA)工具来识别过时或不安全的组件
#10 –记录和监控不足
它是什么?
应该定期进行日志记录和监视,以帮助确保网站的安全。否则,可能会增加攻击发生的风险,并会阻碍您的反应时间。一次漏洞的平均发现时间约为 200 天。反过来,这又使攻击者有大量时间来篡改,提取或破坏数据,转移到其他系统上,并且通常可以正常运行。
例
我们之前讨论过凭证填充,攻击者在其中反复尝试使用泄漏的用户名和密码对。假设经过 100 次尝试,他们终于达到了特定帐户的正确组合。由于没有日志记录或监视,因此没有人收到有关该帐户登录尝试数量惊人的警报。否则,该活动将被标记为可疑,并且可以很容易地防止违反行为。
如何保护自己
- 对 Web 应用程序的各个方面实施日志记录和监视
- 创建包含警报的事件响应计划,以便您立即了解任何攻击
- 确保您的日志采用集中式日志管理解决方案可以轻松使用的格式
- 设置您的日志,使其包含足够的上下文以识别可疑帐户
针对 OWASP Top 10 进行编码
首先,您的团队需要完全了解 OWASP Top 10 列表中的漏洞,并避免使用可能使您暴露于外界的编码工具和技术。使开发人员能够在编码时发现并修复漏洞的编码框架是您最好的选择。
最佳的编码实践和工具虽然不能总是防止人为错误,所以最好有其他措施,例如使用 WAF 进行自动网站保护。理想情况下,它应该是应用程序层技术和服务混合的一部分,其中还应包括动态和静态分析。静态分析是在非运行时环境中执行的,它通过源代码从内到外查看应用程序。动态分析则相反,它涉及在运行时操纵应用程序以查找漏洞。
在拥有正确的编码实践,工具和安全软件之后,所有这些都可以归结为组织的最佳实践。
抵御 OWASP 前 10 名的组织策略
许多公司仍然采用瀑布式开发方法的各个方面,这导致了等待直到周期结束才能执行安全检查的陷阱。这通常会导致在最后一分钟向开发团队提供一长串漏洞。需要时间来修复它们,这会延迟发布,在开发人员和安全团队之间造成摩擦,并损害企业的底线。
对此,许多公司从一开始就一直在寻找各种方法来确保其代码的安全(他们不仅要防止网络攻击,还希望从根本上防止安全性和开发团队互相攻击)。实现这一目标的一种流行而有效的方法是在产品开发的早期阶段就包括安全人员。这种交叉授粉使双方都可以提供意见并相互学习。例如,OWASP Top 10 的问题可以在压力较低的时期提出,在此期间,风险不如释放前那么高。
如果利用 OWASP 十大漏洞该怎么办?
我们讨论的所有保护措施和策略在理论上听起来都很不错,但是在实践中,它们并非总是最容易实现的。无论您多么谨慎,安全事件当然仍然可能发生。那么,如果发生违规,您该怎么办?时间就是金钱,而网站宕机的每一秒钟都将使您损失。更不用说任何形式的中断都会给客户信任带来负面影响。
使用网站备份服务是您尽可能快地恢复运行的最佳选择,而对它影响最小。拥有方便的网站备份使您可以轻松撤消所有黑客攻击,崩溃,恶意软件感染,不良更新等。
自动备份是最好的,因为它容易忘记执行手动备份。您还将需要不在您身边的服务。如果黑客进入您的系统,他们很有可能也可以删除您的本地备份。Web 主机通常提供备份服务,但是它们的功能通常很笨拙且受限制,因为它专注于服务器级备份,而不是网站级备份。您必须提交票证,等待他们响应,并且不能从特定日期或文件中选择。
Sectigo 的 CodeGuard 是网站备份解决方案的一个示例,该解决方案在上述所有框内打勾。它跟踪您的所有网站更改,并每天自动备份您网站的文件和数据库,如下所示:
然后,如果确实发生了什么,那么它实际上就是一键还原过程。您所需要做的就是登录并选择最新的备份(或您要使用的备份),然后立即备份并运行。
像 CodeGuard 这样的服务的另一个好处是,它不仅仅是一个备份程序。您还会得到:
- MalwareGone 扫描,可在出现问题之前自动检测并删除恶意软件
- 电子邮件备份服务
- WordPress 插件,用于创建 WordPress 网站的自动备份
- 网站迁移工具可快速轻松地移动您的网站
- 登台服务器以测试旧备份
- 功能齐全的 API 可为您或您的客户定制 CodeGuard 体验
它可与任何主要网站平台一起使用,其易于使用的界面使您可以在不到 5 分钟的时间内完成所有配置。首先,您设置站点的根目录(或者,如果您使用的是 WordPress 插件,则只需安装它并输入一次性密钥):
然后,您设置备份首选项:
剩下的由 CodeGuard 完成。然后,如果您以后需要还原,这是一个快速而直接的过程:
在几秒钟内,您的网站将恢复到之前的状态。
OWASP Top 10 –安全工具库中的宝贵工具
如我们所见,OWASP Top 10 是您安全措施的极佳基准。抵御 OWASP Top 10 上的项目实际上应该是最低限度的选择,并且理想情况下,这是为公司建立更全面的安全框架的第一步。通过保护自己免受最常见的漏洞的侵害,您可以立即大幅度降低风险。
然后,将其与适当的 AppSec 和组织的最佳实践相结合,以建立长期的自己。无论您在过程中处于什么位置,都有可能发生违规行为。您将需要一个应急计划,例如 CodeGuard,该计划将使您尽快恢复在线。
非常感谢您对亚洲注册的支持与信任!
禁止转载
最近新闻
2024年11月12日
2024年11月12日
2024年11月12日
2024年11月12日
2024年10月28日
2024年10月28日
2024年10月28日
2024年10月28日
需要帮助吗?联系我们的支持团队 在线客服