网络安全知识:防止Web应用程序访问控制滥用

开发 前端
ACSC、CISA 和 NSA 强烈鼓励供应商、设计人员、开发人员和最终用户组织实施本通报缓解部分中的建议(包括以下内容),以减少 IDOR 缺陷的流行并保护其系统中的敏感数据。

概括

澳大利亚信号局的澳大利亚网络安全中心 (ACSC)、美国网络安全和基础设施安全局 (CISA) 以及美国国家安全局 (NSA) 联合发布此网络安全公告,以警告 Web 应用程序和组织的供应商、设计人员和开发人员使用有关不安全直接对象引用 (IDOR) 漏洞的 Web 应用程序。IDOR 漏洞是访问控制漏洞,恶意行为者可以通过向网站或 Web 应用程序编程接口 (API) 发出指定其他有效用户的用户标识符的请求来修改或删除数据或访问敏感数据。如果无法执行足够的身份验证和授权检查,这些请求就会成功。

这些漏洞在数据泄露事件中经常被恶意行为者利用,因为它们很常见,在开发过程之外很难预防,并且可能被大规模滥用。IDOR 漏洞已导致数百万用户和消费者的个人、财务和健康信息遭到泄露。

ACSC、CISA 和 NSA 强烈鼓励供应商、设计人员、开发人员和最终用户组织实施本通报缓解部分中的建议(包括以下内容),以减少 IDOR 缺陷的流行并保护其系统中的敏感数据。

  • Web 应用程序框架和 Web 应用程序的供应商、设计者和开发人员:实施设计安全和默认原则,并确保软件对每个修改、删除和访问敏感数据的请求执行身份验证和授权检查。

使用自动化工具进行代码审查来识别和修复 IDOR 和其他漏洞。

使用间接引用映射,确保 ID、名称和键不会在 URL 中公开。将它们替换为加密强度高的随机值 - 特别是使用通用唯一标识符 (UUID) 或全局唯一标识符 (GUID)。

选择要合并到应用程序中的第三方库或框架时要进行尽职调查,并使所有第三方框架和依赖项保持最新。

  • 所有最终用户组织,包括采用软件即服务 (SaaS) 模式的组织:
  • 选择 Web 应用程序时要进行尽职调查。遵循供应链风险管理的最佳实践,并且仅从信誉良好的供应商处采购。

    尽快为Web应用打上软件补丁。

  • 部署本地软件、基础设施即服务 (IaaS) 或私有云模型的最终用户组织:

  • 查看 Web 应用程序中可用的身份验证和授权检查,以允许修改数据、删除数据或访问敏感数据。

    定期进行主动漏洞扫描和渗透测试,以帮助确保面向互联网的 Web 应用程序和网络边界的安全。

技术细节

描述

IDOR 漏洞是 Web 应用程序(以及使用受影响的 Web API 的手机应用程序 [应用程序])中的访问控制漏洞,当应用程序或 API 使用标识符(例如 ID 号、名称或密钥)直接访问对象(例如,数据库记录),但没有正确检查提交请求的用户的身份验证或授权。根据 IDOR 漏洞的类型,恶意行为者可以访问敏感数据、修改或删除对象或访问功能。

  • 当用户可以访问他们不应以相同权限级别访问的数据(例如其他用户的数据)时,就会出现横向 IDOR 漏洞。
  • 当用户可以访问他们不应该访问的数据时,就会出现垂直 IDOR 漏洞,因为这些数据需要更高的权限级别。
  • 当用户可以修改或删除他们不应修改或删除的对象时,就会出现对象级 IDOR 漏洞。
  • 当用户可以访问他们不应该访问的功能或操作时,就会出现功能级 IDOR 漏洞。

通常,这些漏洞的存在是因为对象标识符被公开、在外部传递或容易被猜测,从而允许任何用户使用或修改该标识符。

  • 在正文操作中,参与者修改 POST 请求正文中的 HTML 表单字段数据以影响目标记录。
  • 在URL 篡改中,攻击者修改 URL 中的标识符以影响目标记录。
  • 在Cookie ID 操纵中,攻击者将 Cookie 中的标识符修改为不同用户(包括管理用户)的标识符,以尝试获得对该账户的访问权限。
  • 在HTTP/JSON 请求篡改中,攻击者使用 Web 代理来拦截和更改合法请求的任意部分,包括 JSON 对象内的值。

影响

这些漏洞很常见[1],并且在开发过程之外很难预防,因为每个用例都是独特的,无法通过简单的库或安全功能来缓解。此外,恶意行为者可以使用自动化工具大规模检测和利用它们。这些因素使最终用户组织面临数据泄露(信息无意暴露)或大规模数据泄露(恶意行为者获取暴露的敏感信息)的风险。IDOR 漏洞导致的数据泄露或破坏包括:

  • 2021 年 10 月发生的全球数据泄露事件,不安全的“跟踪软件”应用程序泄露了数十万台设备的手机数据,包括短信、通话记录、照片和地理位置。[2] 这些应用程序收集并转发来自手机的据到相同的外国服务器基础设施,其中包含 IDOR 漏洞CVE-2022-0732。[ 3] 这导致所收集的应用程序数据暴露。[ 4]
  • 2019 年的一次数据泄露事件,来自美国金融服务部门组织的超过 8 亿份个人财务文件被泄露,包括银行对账单、银行账号和抵押付款文件。[ 5],[ 6]
  • 2012 年的一次数据泄露事件中,恶意网络攻击者从美国通信部门组织的公开访问网站获取了超过 100,000 名移动设备所有者的个人数据。[ 7]

缓解措施

供应商和开发商

ACSC、CISA 和 NSA 建议 Web 应用程序的供应商、设计者和实施者(包括构建和部署供内部使用的软件(例如 HR 工具)的组织以及创建开源项目的组织)实施以下缓解措施。这些缓解措施可能会减少软件中 IDOR 漏洞的流行,并有助于确保产品在设计上和默认情况下都是安全的。

  • 在软件开发生命周期 (SDLC) 的每个阶段实施并注入安全设计和默认原则和最佳实践。美国国家安全技术研究所 (NIST) 的安全软件开发框架 (SSDF) SP 800-218中定义了具体推荐的做法。特别注意:

在预期用途的背景下审查和评估第三方组件。

通过哈希或签名验证来验证产品的完整性。

如果提供,请在使用组件之前检查其软件物料清单 (SBOM)是否有过时、易受攻击或未经授权的应用程序。

使所有第三方框架和依赖项保持最新,以限制漏洞继承。注意:组织应维护第三方框架和依赖项的清单或目录,以协助主动更新。考虑使用工具来识别项目依赖性和第三方代码中的已知漏洞。有关更多信息,请参阅 OWASP 2018 年十大主动控制,C2:利用安全框架和库有关更多信息,请参阅联合持久安全框架的《保护软件供应链:开发人员推荐实践指南》、CISA 的供应链风险管理要点和 ACSC 的网络供应链风险管理

使用间接引用映射,这样 ID、名称和键就不会在 URL 中公开。将它们替换为加密强度高的随机值 - 特别是使用 UUID 或 GUID。注意: UUID 和 GUID 不应用于安全功能。有关详细信息,请参阅征求意见 (RFC) 4122 。将应用程序配置为默认拒绝访问,并确保应用程序对每个修改数据、删除数据和访问敏感数据的请求执行身份验证和授权检查。例如:

  • 在可行的情况下,使用验证码来限制自动无效的用户请求。

  • 尽可能使用内存安全的编程语言。
  • 语法验证验证每个输入的传入值是否满足应用程序的期望。进行语法验证时,请验证字符串是否在所需的最小和最大长度内、字符串不包含不可接受的字符、数值是否在最小和最大边界内以及输入的数据类型是否正确。

  • 逻辑验证添加了检查,以查看输入值是否有意义并且与设计意图一致。进行逻辑验证时,验证授权检查是否在正确的位置执行、具有不同的血统,并且对失败的身份验证和授权请求进行错误处理。

  • 规范化请求。有多种方法可以对网络输入进行编码和解码。在创建访问控制检查点之前对输入进行解码和标准化。确保访问控制系统和 Web 应用程序的其他部分执行相同的标准化。

  • 利用语法和逻辑验证实施参数验证,以便 Web 应用程序验证每个 HTTP/S 请求收到的所有输入。拒绝无效请求可以减轻访问控制系统的负担。

  • ACSC、CISA 和 NSA 建议对所有受支持的版本使用自动代码分析工具来识别和修复漏洞。

  • 根据同行编码标准进行代码审查[ SSDF PW 7.2、RV 1.2 ],检查后门、恶意内容或逻辑缺陷。

  • 遵循Web 和移动应用程序的 安全编码实践[ SSDF PW 5.1 ],以确保它们正确验证用户输入并生成强大的用户 ID。
  • 测试代码以识别漏洞并验证是否符合安全要求 [ SSDF PW 8.2 ]。

  • 使用自动化测试工具来促进测试,使用模糊测试具来查找输入处理问题,[ 8]并使用渗透测试来模拟威胁行为者如何利用软件。考虑使用动态应用程序安全测试 (DAST) 工具来识别 Web 应用程序中的 IDOR 漏洞。

  • 对负责安全软件开发的人员进行基于角色的培训[ SSDF PO 2.2 ]。
  • 在选择要合并到您的应用程序中的第三方库或框架时进行尽职调查[ SSDF PW 4.1 ]。

  • 建立漏洞披露计划,验证和解决组织内部或外部人员披露的安全漏洞。

此外,ACSC、CISA 和 NSA 建议在生产和企业环境中遵循网络安全最佳实践。软件开发人员是高价值目标,因为他们的客户在自己的可信网络上部署软件。有关最佳实践,请参阅:

  • ACSC 的八项基本要素八项基本策略是帮助网络安全专业人员减轻各种网络威胁引起的网络安全事件的优先策略。
  • CISA 的跨部门网络安全绩效目标(CPG)。CPG 由 CISA 和 NIST 开发,是 IT 和 OT 安全实践的优先子集,可以有效降低已知网络风险以及常见策略、技术和程序的可能性和影响。由于 CPG 是最佳实践的子集,ACSC、CISA 和 NSA 还建议软件制造商基于公认的框架(例如 NIST网络安全框架 (CSF))实施全面的信息安全计划。
  • NSA 的十大网络安全缓解措施。十大组织为企业活动设定了优先事项,以应对广泛的利用技术并最大限度地减少任务影响。

所有最终用户组织

ACSC、CISA 和 NSA 建议所有最终用户组织(包括拥有本地软件、SaaS、IaaS 和私有云模型的组织)实施以下缓解措施,以改善其网络安全状况。

  • 选择网络应用程序时要进行尽职调查。遵循供应链风险管理的最佳实践,并从信誉良好的供应商处采购,这些供应商表现出对设计安全和默认原则的承诺。

通过哈希或签名验证来验证产品的完整性。

如果提供,请在使用产品之前 查看SBOM是否有过时、易受攻击或未经授权的应用程序。

有关详细信息,请参阅持久安全框架的《保护软件供应链:客户推荐实践指南》、CISA 的供应链风险管理要点和 ACSC 的网络供应链风险管理

  • 尽快为Web应用打上软件补丁。
  • 配置应用程序以记录篡改尝试并生成警报- 网络防御者可以利用此信息进行调查并采取适当的后续行动。
  • 建立基线以有效识别异常行为。注意: Web 应用程序错误代码(例如HTTP 404和 )HTTP 403与常见枚举技术相关。

  • 将日志聚合到集中式解决方案(例如安全信息和事件管理 [SIEM] 工具)中,以促进主动监控和威胁搜寻。

  • 创建、维护和实施基本的网络事件响应计划 (IRP) 和相关的通信计划。计划应包括数据泄露和网络事件的响应和通知程序。有关更多信息,请参阅:
  • ACSC:准备和应对网络事件

  • ACSC:网络事件响应计划 - 指南

  • ACSC:网络事件响应准备清单澳大利亚信息专员办公室 (OAIC):数据泄露准备和响应

  • OIAC:数据泄露响应计划

  • CISA:事件响应计划基础知识

  • CISA:联邦政府网络安全事件和漏洞响应手册(虽然是为美国联邦民事部门 (FCEB) 机构量身定制的,但这些手册提供了规划和开展网络安全事件和漏洞响应活动的操作程序,以及事件和漏洞响应的详细步骤。)

  • CISA:保护敏感信息和个人信息免遭勒索软件导致的数据泄露

此外,ACSC、CISA 和 NSA 建议遵循网络安全实践。有关最佳实践,请参阅 ACSC 的八项基本策略

CISA 的CPG和 NSA 的十大网络安全缓解策略。

具有本地软件、IaaS 或私有云模型的最终用户组织

ACSC、CISA 和 NSA 建议组织:

  • 定期进行主动渗透测试,以确保网络边界以及 Web 应用程序的安全。优先考虑面向互联网并包含用户登录功能的 Web 应用程序。此类测试可能超出某些组织的技术或财务能力。考虑使用受信任的第三方进行渗透测试,以发现新的攻击媒介(特别是在部署新的或更改的面向互联网的服务之前)。注意:组织应酌情咨询其法律顾问,以确定哪些系统和应用程序可以包含在渗透测试范围内。
  • 使用 Web 应用程序渗透测试工具捕获在请求包含敏感数据的网页时发送到 Web 服务器的用户标识符,并映射用户输入用于直接引用对象的所有位置。使用不同权限级别的用户(例如普通用户和管理员用户)进行测试。
  • 使用 DAST 和其他漏洞扫描器来检测 IDOR 漏洞。DAST 工具通过渗透测试识别 Web 应用程序中的漏洞并生成自动警报。注意:选择 DAST 工具时要进行尽职调查。并非所有 DAST 工具都可以检测 IDOR 漏洞 - 具有这种能力的工具可能需要以特定方式配置的环境,并且还可能需要适当的自定义规则。足够的 DAST 工具通常会摄取应用程序 API 文档来构建应用程序的模型。虽然这些工具可用于检测 IDOR 漏洞,但它们并非万无一失,应与其他安全测试方法结合使用以确保全面覆盖。
  • 立即向供应商或开发人员报告检测到的漏洞。或者(或者如果供应商或开发人员未能做出响应),向 CISA 报告该漏洞。
  • 考虑建立漏洞披露计划验证、解决和报告组织内部或外部人员披露的安全漏洞。
  • 使用 Web 应用程序防火墙 (WAF)来过滤、监控和阻止流向 Web 应用程序的恶意 HTTP/S 流量。
  • 使用数据丢失防护 (DLP) 工具来防止未经授权的数据离开应用程序。

ACSC、CISA 和 NSA 建议拥有本地软件或 IaaS 的组织考虑将 SaaS 模型用于其面向互联网的网站。

采用 SaaS 模式的最终用户组织

拥有足够资源的利用 SaaS 的组织可以考虑进行渗透测试并使用漏洞扫描器。然而,此类测试可能会干扰服务提供商的运营。组织应酌情咨询其法律顾问,以确定渗透测试范围内可以包含哪些内容。

事件响应

如果您或您的组织是数据泄露或网络事件的受害者,请酌情遵循相关的网络事件响应和沟通计划。

  • 澳大利亚:受到网络安全事件影响或需要帮助的澳大利亚组织可以通过 1300 CYBER1 (1300 292 371) 联系 ACSC,或向cyber.gov.au交报告。
  • 美国:美国组织可以通过Report@cisa.dhs.gov
  • cisa.gov/report或 (888) 282-0870向 CISA 的 24/7 运营中心报告网络安全事件。如果有的话,请提供有关事件的信息:事件的日期、时间和地点;活动类型;受影响人数;用于活动的设备类型;提交公司或组织的名称;以及指定的联络点。

资源

  • 有关设计安全设计和默认产品的更多指导,请参阅联合指南《改变网络安全风险的平衡:设计安全和默认安全的原则和方法》。
  • 有关防止数据泄露的更多指导,请参阅 ACSC 有关数据泄露的页。

参考

[1] A01 访问控制损坏 - OWASP Top 10:2021

[2]大规模“跟踪软件”泄露使数千人的手机数据面临风险

[3]移动设备监控服务不对 API 请求进行身份验证

[4]跟踪软件网络泄露数十万私人电话数据的背后

[5]第一美国金融公司泄露数亿份产权保险记录

[6]美国历史上最大的数据泄露事件 [2023 年更新]

[7] AT&T 黑客“Weev”被判处 3.5 年监禁

[8]模糊测试 | OWASP基金会

后记:我们会发现,美西方国家对网络安全体系化的控制,一直以来本公众号在整理过程中,都是希望大家能够以“拿来主义”精神,借鉴吸收提升自身网络安全能力,同时看到差距后能够自省我们的网络安全工作。

责任编辑:武晓燕 来源: 祺印说信安
相关推荐

2023-08-01 08:00:00

SQLWeb应用安全

2016-03-07 13:16:15

2019-12-27 11:25:29

WEB应用网络安全web安全

2021-12-20 10:26:04

身份盗用网络安全信息安全

2009-02-27 17:00:25

2015-11-05 10:16:33

2013-11-19 15:35:01

2012-03-20 10:28:43

2013-02-18 16:12:55

2011-02-13 14:36:35

2024-04-03 10:58:08

2014-02-19 15:38:42

2012-08-17 17:56:15

2023-06-03 00:12:43

2021-12-28 00:11:40

网络安全攻击

2022-02-24 23:56:45

Web应用程序工具

2020-06-02 14:27:48

物联网访问控制网络安全

2023-09-06 00:13:17

2021-12-10 00:02:50

网络安全Web

2024-01-31 10:16:57

点赞
收藏

51CTO技术栈公众号