云安全联盟顶级威胁研究工作组的永久和官方网址是: https://cloudsecurityalliance.org/working-groups/top-threats/#_overview @2022云安全联盟大中华区-保留所有权利。本文档英文版本发布在云安全联盟官网 (https://cloudsecurityalliance.org),中文版本发布在云安全联盟大中华区官网(http://www.c-csa.cn)。您可在满足如下要求的情况下在您本人计算机上下载、存储、展示、查看、打印此文档:(a)本文只可作个人信息获取,不可用作商业用途;(b)本文内容不得篡改;(c)不得对本文进行转发散布;(d)不得删除文中商标、版权声明或其他声明。在遵循美国版权法相关条款情况下合理使用本文内容,使用时请注明引用于云安全联盟。 ©2022云安全联盟大中华区版权所有2 序言 李克强总理在《2022年政府工作报告》中指出2022年将强化网络安全、数据安全和个人信息保护,促进数字经济发展,加强数字中国建设整体布局。云计算已经成为企业数字化转型和数字经济发展的重要基础设施。 在当下日益复杂的网络环境中,评价公有云环境的安全性不能再采用单一的面向云基础设施的安全管控标准,为了充分识别云环境中的安全弱点和系统健壮性,对公有云上运行的系统和服务的渗透测试也成为保障云安全的重要技术手段。 此次发布的《云渗透测试指南》由CSA顶级威胁研究工作组专家编写,对当前全球化形势下针对公有云网络空间安全形势、安全风险的实质及特点,提出了应对的渗透测试方法和策略,并且对其中的要点进行了深入分析和阐述。 指南基于公有云场景已经达成广泛共识的共享责任模型,从云客户和云服务提供商两个视角对云渗透测试的范围(或边界)、测试目标、测试用例和关注点、合规性、测试相关培训和资源(如渗透测试工具)等进行了详尽地阐述。可以指导公有云客户系统全面地逐项评估其云应用、云服务的安全性。指南适用于从决策者到一线渗透测试人员的所有安全从业人员,尤其是云安全从业人员。可以让决策者充分理解云渗透测试的复杂性和重要性,同时为渗透测试人员提供了详尽的用例清单。 云是数字经济发展的基石,因此云安全在很大程度上将影响数据经济的发展。本指南是第一个云安全领域的渗透测试指南,相信它一定会为云渗透测试的发展起到引领的作用,同时为云安全乃至数字经济安全发展发挥应有的促进和推动作用。 李雨航YaleLiCSA大中华区主席兼研究院院长 ©2022云安全联盟大中华区版权所有3 致谢 《云渗透测试指南》(CloudPenetrationTestingPlaybook)由CSA顶级威胁研究工作组专家编写,CSA大中华区秘书处组织翻译并审校。 中文版翻译专家组(排名不分先后): 组长:郭鹏程 翻译组:侯俊朱梦婷薛琨审校组:郭鹏程姚凯 研究协调员:江瞿天 感谢以下单位对本文档的支持与贡献: 深圳市魔方安全科技有限公司网宿科技股份有限公司 英文版本编写专家 主要作者:AlexanderGetsin 贡献者:AsafHechtMichaelRozaJon-MichaelBrookShlomiOhayonChrisFarrisGregJensenVictorChin CSA全球员工:VictorChin 特别致谢:CSA顶级威胁研究工作组感谢CyberInt在本文档的开发过程中提供的支持。 在此感谢以上专家。如译文有不妥当之处,敬请读者联系CSAGCR秘书处给与雅正!联系邮箱:research@c-csa.cn;国际云安全联盟CSA公众号。 ©2022云安全联盟大中华区版权所有4 目录 序言3 致谢4 前言6 本文范围7 云渗透测试范围7 上下文中的云渗透测试10 云渗透测试的目标11 云渗透测试用例和关注点12 1.准备工作12 2.威胁模型13 3.侦察和研究13 4.测试15 5.报告20 法规20 培训和资源21 结论22 参考23 ©2022云安全联盟大中华区版权所有5 前言 安全测试是云环境、系统和服务实现安全保障的关键。在本文中,我们探讨在云环境渗透测试中最具主导性的安全测试模式。 根据NIST(美国国家标准与技术研究院)的定义,渗透测试是针对信息系统或独立系统模块执行专业性的技术评估,识别可能被对手利用的漏洞。这些测试能被用于识别漏洞或用于在一系列约束条件下,决定企业信息系统投入对抗的程度(如时间、资源和技能)1,ENISA(欧洲网络及信息安全局)针对渗透测试的定义与NIST2类似。 传统上,渗透测试的主要目标是识别技术上的安全弱点和系统健壮性。然而,安全测试更广泛地应用在评估企业的安全策略实现、合规要求的落实,员工安全意识的有效性,以及对安全事件的识别与响应能力。3因此,渗透测试对于任何全面的网络防御都是必选项,为系统安全提供可见性,并为系统和相关环境的安全提供高度可操作的缓解措施。 随着云服务持续在新技术领域的应用,大量商业组织大量将云作为基础设施。因此需要将渗透测试的范围扩展到公有云。 本文旨在为公有云渗透测试提供基础方法论,以及设计适用于公有云环境和服务的当前和未来技术的测试方法。此外,本文聚焦于对在云环境运行的应用和服务执行渗透测试,弥补了对公有云环境内的信息系统和应用程序进行安全测试的方法与认知差距。 目标受众 本文目标受众是渗透测试人员、云或基于云系统的安全从业人员。不过最初几页主要面向CIO、CISO和高级管理人员,帮助他们理解云端渗透测试的定义、范围、上下文、目标,以及如何在网络安全战略中落实。此外本文对开发人员和架构师设计云中系统的安全性也会有帮助。 本文目标: 提升读者对云渗透测试在网络安全战略中的重要性和云渗透测试方法的认识 为读者介绍云渗透测试的原则和注意事项 为渗透测试人员在公有云环境中更好地交付详尽全面的安全测试提供指导 1https://nvd.nist.gov/800-53/Rev4/control/CA-8#Rev4Statements 2https://www.enisa.europa.eu/topics/csirts-in-europe/glossary/vulnerabilities-and-exploits 3https://www.fedramp.gov/assets/resources/documents/CSP_Penetration_Test_Guidance.pdf ©2022云安全联盟大中华区版权所有6 本文范围 本文聚焦公有云环境上系统和服务的安全测试,即由云客户管理控制的系统与服务。例如,IaaS环境中云客户所管理与控制的虚拟主机就属于本文探讨范围,然而由云服务提供商控制的虚拟化管理程序(hypervisor)则不在本文范围内。另外对于混合云测试场景,混合接口和本地环境(内部部署,又叫遗留基础设施)也不在本文范围内。 本文涉及的云渗透测试方法与以下内容是互补的 主题范围-对如何测试云端应用和系统的部署/实现有指导,但不涉及应用程序本身的安全测试。那是OWASP(开放Web应用程序安全项目)所覆盖的。 现有测试和保障框架-虽然其中概述了测试程序和交付阶段,以及一些并非云独有的测试用例,但这纯粹是为了上下文和尽职调查而做的,并不全面。云特有的测试用例和注意事项是对现有安全测试框架的有力补充,这样更简单也更方便与现有测试框架集成。 本文还提供关于公有云安全测试、培训机会和资源的范围界定,以及法律方面的思考与见解。 云渗透测试范围 基于云的系统、环境和服务的安全测试对于公有云来说是微妙且独特的。 共享责任模型的测试范围 由云服务提供商(CSP)全权负责的安全控制措施通常不在云用户委托的渗透测试范围内。例如,在软件即服务(SaaS)环境中,渗透测试人员被授权允许用特定用户的权限发起业务级攻击(即批准测试)。然而,测试人员不应在SaaS应用程序中测试访问控制 (会话校验)或SaaS应用程序的输入过滤(即SQL注入)。这是因为测试会涉及破坏底层基础设施,超出了渗透测试人员所获得的权限范围。因此,除非获得CSP的明确许可,底层基础设施通常不在渗透测试的范围内。 云渗透测试不会挑战,而是考虑并利用底层技术的设计和代码完整性。例如: ©2022云安全联盟大中华区版权所有7 在云服务、技术和服务提供中利用缺陷、常见错误配置和已知漏洞,属于基于云应用/资产测试的范围之内,但是针对云服务的取证、逆向工程和研究则不是。 共享责任模型 云渗透测试测的是云消费者权限范围内的安全性,而不是云本身的安全性。例如,在IaaS环境中,如图1所示,用户访问/身份、数据、应用程序和操作系统层都在范围内。而红线以下的所有其他组件,均由CSP控制和管理,因此不在范围内。同样的逻辑也适用于PaaS和SaaS环境的渗透测试范围,取决于云服务模型。 测试的程度和范围取决于云服务提供商提供的各种服务。尽管如此,云服务中意外发现的任何缺陷和漏洞也应给予通报。 IaaS(基础设施即服务) PaaS(平台即服务) SaaS(软件即服务) 用户身份/权限 用户身份//权限 用户身份/权限 数据 数据 数据应用 操作系统 虚拟化网络 应用操作系统 应用操作系统 虚拟化 虚拟化 网络 网络 基础设施 基础设施 基础设施 物理环境 物理环境 物理环境 蓝色–云用户/消费者安全责任灰色–云服务提供商安全责任 图1.共享安全责任模型 安全测试的范围和测试用例也因不同服务模型而异(图1)。在SaaS应用程序中范围较小:仅包括数据和用户访问/身份控制。在PaaS模式中,应用层(和一些平台配置)囊括在安全测试范围之内,所有较低的层都被排除在外。 ©2022云安全联盟大中华区版权所有8 同样的原则也适用于IaaS,随着客户的责任边界扩大,潜在安全测试范围也会随之扩大。实施或移动工作负载都可能会改变潜在安全测试(和漏洞)的范围。会引入额外的测试范围(例如,云管理平面),但一些测试仍然由CSP负责(如虚拟化、硬件,有时还有操作系统)。 如果云客户从云服务提供商获得授权,在云服务提供商的控制和管理下测试云组件,那么云测试服务边界的划分将会变得更加复杂和模糊。 公有云渗透测试范围 虽然客户端应用程序在IaaS和PaaS环境的测试范围内,但本文并未详细介绍应用层 (如SQL注入、XSS)和操作系统层(如虚拟机)测试方法,因为这些在OWASP和其他资料中均有详细介绍。因此,本文仅涉及以下方面: 与用户身份和权限相关的账户安全(如身份认证和鉴权、日志、账号加固、云身份联合和单点登录界面等) 与云租户可以配置的数据结构和云基础设施相关的云安全性(如S3存储桶策略、 VPC网络访问控制、CloudFormation风险模板等) 受终端用户控制的应用程序/业务逻辑安全(如应用程序设计缺陷、业务逻辑缺陷、代码脚本缺陷、数据泄露防护等) 应用程序、数据、业务逻辑 应用程序设计缺陷业务逻辑缺陷 数据泄露防护 …… 服务 VPC配置安全组 S3存储桶策略 EC2开通和IAM接口访问cloudformation风险模板 账号 IAM 加固 组织治理 跨账户/子账户信任列表 即使其中任何一个被排除在渗透测试范围之外,渗透测试的范围也可以并且应该考虑这三个方面,因为这三个方面是互相影响的。 ©2022云安全联盟大中华区版权所有9 例如: 错误配置的用户账户(忽略了账户级的授权及访问控制机制)可能并将最终提高应用程序出现漏洞的可能性和漏洞的严重性 AWS中的应用程序可能设计、应用或配置不当,导致其具备较高的云权限(例如拥有管理员权限),这被视为最高威胁。 忽视了账户级别的额度管控和预算控制可能会导致拒绝服务、资源不足或过度消费 上下文中的云渗透测试 渗透测试,也称动态测试,通常在代码开发和部署后运行,即便不在生产环境中。重要的是要记住,渗透测试不一定是最好或最有效的测试形式,它的适用