南京索引科技有限...吧 关注:23贴子:134
  • 0回复贴,共1

安全性测试中贯穿软件生命周期的7个接触点

只看楼主收藏回复

“安全的”开发生命周期能够在每一个开发阶段上尽可能地避免和消除漏洞。微软SDL在整个软件生命周期定义了7个接触点:滥用案例、安全需求、体系结构风险分析、基于风险的安全测试、代码评审、渗透测试和安全运维等。通过这些接触点来呈现在软件开发生命周期中保障软件安全的一套优秀实践,强调在业务应用的开发和部署过程中对应用安全给予充分的关注,通过预防、检测和监控措施相结合的方式,根据应用的风险和影响程度确定在整个软件开发生命周期过程中需要采取的安全控制,从而降低应用安全开发和维护的总成本。
滥用案例描述了系统在受到攻击时的行为表现,明确说明应该保护什么、免受谁的攻击以及保护多长时间。通过设计或构造案例,帮助我们深入攻击者的心理,了解他们的攻击行为方式,如发现风险的例子:易受广为人知的攻击——篡改攻击的影响。
安全需求,明确地在需求级中加入安全考量,描述系统安全性的具体要求,包括系统安全级别数据保护要求、身份验证、加密、权限设置等内容,如对密码设定各种强化规则、128位加密方法、基于用户角色的权限控制机制等。OWASP(Open Web Application Security Project)推荐在需求分析时应该把安全的需求和目标确定下来,客户的需求也应该依据响应的安全标准进行明确,使之符合安全标准。
体系结构风险分析以揭示体系结构在安全性方面存在脆弱性,并进行评估、降低安全性风险。设计人员应该树立良好的安全意识,清楚有哪些安全模型、系统可能面临哪些安全威胁、攻击途径可能有哪些、如何针对这些危险或途径采用对应的策略?在软件生命周期的各个阶段都可能出现风险,因此,应采用持续的风险管理方法,并不断地监控风险。系统体系必须连贯一致,并提供统一地安全防线,应用文档清晰地记录各种前提假设,并确定可能的攻击。例如:对关键数据的区分和保护很糟糕;Web服务未能验证调用代码及其用户。
基于风险的安全性测试,针对单元和系统进行安全性测试,采取如下两种策略。
用标准功能测试技术来进行的安全功能性测试。
以攻击模式、风险分析结果和滥用案例为基础的基于风险的安全测试。
代码评审是一种实现安全的软件的有效方法,一般能够发现大约50%的安全问题,现在可以借助工具对代码进行扫描,发现各种潜在的安全隐患。条件允许的话可以使用多个扫描工具进行,因为不同的工具扫描范围和能力不完全一致。首先需要制定安全代码规范,甚至为每一种编程语言制订代码安全性规范,并对项目中所有的开发人员培训,确保每个开发人员完全明白如何编写安全的代码。其次,建立代码安全审核体系,例如每次提交代码前都由专业安全人员对代码进行安全审查,确保代码的安全性。
标准的质量保障方法可能不能揭示所有严重的安全问题,要像黑客那样思考方式,发现更多、隐藏更深的安全性问题。
渗透测试,借助工具和测试人员的经验,模拟极具侵略性的攻击者的思路和行为方式来测试防御措施并发现真正的风险。通过低层次的渗透测试,只能揭示出一点点软件的真实安全状况的信息,但是未能通过封闭的渗透测试,则说明系统确实处于很糟糕的状况中。
安全运维,在部署过程中应该遵守安全部署,确保环境配置和环境是安全的,不要引入新的安全性问题。例如,Tomcat等容器有相应的安全配置,操作系统、容器以及使用的第三方软件采用最新的版本。部署完成后再使用漏洞扫描工具进行扫描,确保没有漏洞发现。不论设计和实现的力度如何,都会出现攻击,因此,理解导致攻击成功的行为就是一种重要的防御技术。在系统运行过程中,从各方面加强系统的安全性保护措施,包括发现没有足够的日志记录以追踪某个已知的攻击者。在增强系统的安全状况的过程中,身经百战的操作人员认真地设置和监视实际部署的系统,并通过理解攻击和攻击程序而获得的知识应该再应用到软件开发中。


1楼2022-08-30 14:13回复