CIS关键安全控制措施集(CIS Critical Security Controls,CIS Controls)系列介绍文章,本期介绍控制措施16:应用软件安全。
笔者:国际认证信息系统审计师、软考系统分析师
由于本篇太长,为方便阅读,分为上下两篇。上篇介绍14个细项,下篇介绍控制措施本身。
控制措施16:应用软件安全(上篇)
包含有14个细项,IG1前0项,IG2前11项,IG3全14项。
这14项分别是:
16.1 建立和维护一套安全的应用程序开发过程。在此过程中,要解决以下项目:安全的应用程序设计标准、安全的编码实践、开发人员培训、漏洞管理、第三方代码的安全性和应用程序安全测试过程。每年,或在发生可能影响此安全措施的重大企业变革时,审查和更新文档。
16.2 建立和维护一套接受和处理软件漏洞报告的流程,包括为外部实体提供报告的方法。该过程包括以下项目:用于识别报告流程的漏洞处理策略、处理漏洞报告的责任方,以及进行接收、分配、补救和补救测试的流程。
使用漏洞跟踪系统作为流程的组成部分,系统应包括严重程度评级,以及度量对漏洞进行识别、分析和修复等处理过程的时间指标。每年,或在发生可能影响此安全措施的重大企业变革时,审查和更新文档。
第三方应用程序开发人员需要考虑这是面向外部的策略,它有助于为外部利益相关者设定期望。
16.3 对安全漏洞进行根本原因分析。在审查漏洞时,根本原因分析是评估在代码中产生漏洞的潜在问题的任务,并允许开发团队在漏洞出现时进行超越,即只修复个别漏洞。
16.4 建立和管理在开发中使用的第三方组件的更新清单,以及计划在未来使用的组件的清单。该清单通常被称为“材料清单”。此清单应包括每个第三方组件可能构成的任何风险。至少每月评估清单,以确定对这些组件是否存在任何更改或更新,以及验证组件仍然受其提供商支持。
16.5 使用最新的和受信任的第三方软件组件。如果可能,请选择已完整建立和经过验证的、能够提供足够安全性的框架和库。从可信的来源获取这些组件,或在使用之前评估软件的漏洞。
16.6 为应用程序漏洞建立和维护一套应用程序漏洞严重性评级系统和流程,以便于对修复发现的漏洞的顺序进行优先排序。此流程包括为能发布代码或应用程序而设置最低级别的安全性可接受程度。
通过严重程度评级所带来的系统的漏洞分类方法,能改进风险管理,并帮助确保最严重的漏洞首先得到修复。每年检查和更新系统和流程。
16.7 为应用程序基础结构组件使用标准的、行业推荐的安全硬化的配置模板。这包括底层服务器、数据库和Web服务器,并应用于云容器、平台即服务(PaaS)组件和软件即服务(SaaS)组件。不要允许内部开发的软件削弱安全硬化的配置。
16.8 为生产系统和非生产系统维护相互独立的环境。
16.9 培训开发人员了解应用程序安全概念和安全编码要求。确保所有软件开发人员都接受过针对其特定开发环境和职责编写安全代码的培训。培训可以包括一般的安全原则和应用程序安全标准实践。
至少每年进行一次培训,并设计一种方式去促进开发团队内部对安全性的关注,以及在开发人员之间建立一种安全文化。
16.10 在应用程序架构中应用安全设计原则。安全设计原则包括最小特权的概念和强制介入验证用户所做的每一个操作,从而促进了“永远不要信任用户输入”的概念。
例如,确保对所有输入内容执行显式的错误检查并将之文档化,包括大小、数据类型和可接受的范围或格式等。
安全设计还意味着最小化应用程序基础设施的攻击面,如关闭未受保护的端口和服务,删除不必要的程序和文件,以及重命名或删除默认账户。
16.11 利用经过审查的模块或服务来实现应用程序安全组件,如身份管理、加密、审计和日志记录。在关键的安全功能中使用平台特性将减少开发人员的工作量,并将在设计或实现过程中产生错误的可能性最小化。
现代操作系统为识别、身份验证和授权提供了有效的机制,并为应用程序提供了这些机制。只使用标准化的、目前可接受的和经过广泛审查的加密算法。操作系统还提供了创建和维护安全审计日志的机制。
16.12 实施代码级安全检查。在应用程序生命周期中应用静态和动态分析工具,以验证是否遵循了安全的编码实践。
16.13 进行应用程序的渗透测试。对于关键的应用程序,与代码扫描和自动安全测试相比,经过身份验证的渗透测试更适合于查找业务逻辑漏洞。渗透测试则是依赖于测试人员作为经过身份验证或未经身份验证的用户去手工操作应用程序的技能。
16.14 进行威胁建模。威胁建模是在创建代码之前,在设计中识别和解决设计中的应用程序安全设计缺陷的过程。它是由经专门培训的人员进行的。此类人员能评估应用程序设计和评估每个入口点和访问级别的安全风险。其目标是以一种结构化的方式绘制出应用程序、体系结构和基础设施,以理解其弱点。
本站微信订阅号:
本页网址二维码: