CIS关键安全控制 第8.1版 8.1
控制项模式一套优先顺序的行动,用于保护组织和数据免受已知的网络攻击方式的影响。
在应用架构中应用安全设计原则。安全设计原则包括最小特权的概念,以及强制中介以验证用户执行的每个操作,倡导“永远不要信任用户输入”的理念。实例包括确保对所有输入都进行明确的错误检查并记录,包括输入的大小、数据类型以及可接受的范围或格式。安全设计还意味着最小化应用程序基础设施的攻击面,例如关闭未受保护的端口和服务、删除不必要的程序和文件,以及重命名或删除默认账户。
进行应用程序渗透测试。对于关键应用程序,认证渗透测试比代码扫描和自动化安全测试更适合发现业务逻辑漏洞。渗透测试依赖测试人员的技能,以认证或未认证用户的身份手动操作应用程序。
进行威胁建模。威胁建模是在编码之前识别和解决应用程序安全设计缺陷的过程。它由经过专门培训的人员进行,这些人员评估应用程序设计并衡量每个入口点和访问级别的安全风险。目标是以结构化的方式描绘应用、架构和基础设施,以便了解其弱点。
建立并维护一个处理软件漏洞报告的流程,包括为外部实体提供报告途径。该流程应包括以下内容:识别报告流程的漏洞处理政策、负责处理漏洞报告的相关方,以及漏洞接收、分配、修复及修复测试的流程。作为流程的一部分,使用包含严重性评级的漏洞跟踪系统,以及用于衡量漏洞识别、分析和修复时间的指标。每年审查和更新文档,或者在可能影响该防护措施的重大企业变更发生时进行更新。第三方应用程序开发者需要将此视为面向外部的政策,有助于为外部利益相关者设定预期。
建立并维护安全的应用程序开发流程。在此过程中,应涉及以下内容:安全的应用程序设计标准、安全编码规范、开发人员培训、漏洞管理、第三方代码的安全性以及应用程序安全测试程序。每年或在可能影响此安全措施的重要企业变更发生时,审查并更新相关文档。
建立并维护一个应用程序漏洞的严重性评级系统和流程,以便优先安排修复已发现漏洞的顺序。该流程包括设定发布代码或应用程序的最低安全可接受水平。严重性评级提供了一种系统的方法来分类漏洞,这有助于改进风险管理,并确保最严重的漏洞优先修复。每年审查并更新系统和流程。
建立并管理一个用于开发的第三方组件的最新清单,这通常被称为“物料清单”,以及计划将来使用的组件。该清单应包括每个第三方组件可能带来的任何风险。至少每月评估一次该清单,以识别这些组件的任何变化或更新,并验证组件仍然受到支持。
在应用程序生命周期中使用静态和动态分析工具,以验证是否遵循了安全编码规范。
利用经过验证的模块或服务来实现应用程序安全组件,例如身份管理、加密以及审计和日志记录。在关键安全功能中使用平台特性可以减轻开发人员的工作量,并降低设计或实现错误的可能性。现代操作系统提供了有效的身份识别、认证和授权机制,并将这些机制提供给应用程序使用。仅使用标准化、当前公认且经过广泛审查的加密算法。操作系统还提供了创建和维护安全审计日志的机制。
对安全漏洞进行根本原因分析。在审查漏洞时,根本原因分析是评估导致代码中出现漏洞的潜在问题的任务,它使开发团队能够不仅仅是修复出现的个别漏洞,而是从根本上解决问题。
为生产系统和非生产系统保持独立的环境。
确保所有软件开发人员接受针对其特定开发环境和职责的安全编码培训。培训可以包括一般的安全原则和应用安全标准实践。至少每年进行一次培训,并以促进开发团队安全为目标进行设计,在开发人员中建立安全文化。
对应用程序基础设施组件使用标准的、行业推荐的加固配置模板。这包括底层服务器、数据库和Web服务器,并适用于云容器、平台即服务(PaaS)组件以及软件即服务(SaaS)组件。不要允许内部开发的软件削弱配置加固。
使用最新且值得信赖的第三方软件组件。在可能的情况下,选择已建立并经过验证的框架和库,以提供足够的安全性。从可信来源获取这些组件,或在使用前评估软件的漏洞。