C5:安全默认配置
描述
“默认安全”意味着产品开箱即用,无需额外费用即可抵御普遍的攻击技术。软件应以安全状态启动,无需大量用户配置,确保默认设置始终是最安全的选项。
从一开始就确保应用程序安全的好处是,它减轻了开发人员锁定系统的负担,为他们提供了一个已经安全的产品。这减少了以安全方式部署产品所需的工作量,并增加了它们将随着时间推移保持安全的信心。
威胁
- 攻击者可以利用未从开箱即用状态更改的默认、弱或众所周知的凭据来获取未经授权的访问。
- 攻击者可以利用过于宽松的默认设置来访问敏感资源或执行未经授权的操作。
- 攻击者可以通过探测默认激活的、不必要的启用功能或服务来收集敏感信息。
- 攻击者可以利用宽松的默认安全标头(未能提供充分保护以抵御此类威胁)来执行跨站脚本 (XSS) 攻击。
实施
在现代云应用程序中,开发人员在构建应用程序时,也在构建其应用程序的基础设施,并在编写代码时做出基础设施决策,包括安全关键配置。这些部署在通过代码创建和配置的基础设施上,即基础设施即代码 (IaC),使用在应用程序级别(包括 Web 服务器和数据库)、容器、函数即服务或基础设施级别应用的配置。例如,对于 Web 应用程序,文件夹权限需要遵循最小权限原则,以限制资源访问权限。当 Web 和移动应用程序部署到生产环境时,应禁用调试功能。
开发人员在组装其基础设施组件时,重要的是他们要:
- 实施基于最小权限原则的配置——例如:确保您的云存储(S3 或其他)配置为私有,并仅在最短时间内被访问。
- 默认拒绝访问,并通过允许列表进行授权
- 使用已扫描包和组件漏洞并从私有容器注册中心拉取的容器镜像
- 优先选择声明式基础设施配置,而非手动配置活动。在低级别,利用基础设施即代码 (Infrastructure-as-Code) 模板自动配置和管理您的云和本地基础设施。在高级别,利用策略即代码 (Policy-as-Code) 来强制执行包括权限分配在内的策略。
使用声明式格式可以使这些策略像源代码一样进行管理:签入到源代码管理系统、版本控制、访问控制、受变更管理等。 - 流量加密——默认启用,或从一开始就不实现未加密的通信通道
持续配置验证
作为软件开发的一部分,开发人员需要确保软件在应用程序级别默认配置安全。例如:
- 定义基础设施的代码应遵循最小权限原则。
- 不需要的配置和功能,例如账户、软件和演示功能,应被禁用。
防止的漏洞
参考资料
- OWASP 速查表:基础设施即代码安全速查表
- OWASP ASVS:应用程序安全验证标准 V14 配置
- 云安全指南 - NCSC.GOV.UK
工具
- Tfsec —— 针对 Terraform 模板的开源静态分析工具
- Terrascan —— 扫描基础设施即代码漏洞
- Checkov —— 扫描开源和基础设施即代码漏洞
- Scout Suite 是一个开源多云安全审计工具,目前支持:Amazon Web Services、Microsoft Azure、Google Cloud Platform
- prowler
- Cloudmapper
- Snyk —— 扫描开源、代码、容器和基础设施即代码漏洞
- Trivy —— 扫描开源、代码、容器和基础设施即代码漏洞
- KICS —— 扫描基础设施即代码漏洞
- Kubescape —— 扫描 Kubernetes 漏洞
- Kyverno —— 使用策略保护 Kubernetes