大部分针对企业的软件攻击之所以能够得逞,都是利用了软件漏洞和后门。所幸的是,企业不再把软件漏洞扫描视为一种非主流的行为。相反,软件漏洞扫描已经成为企业信息安全基础设施的一个核心元素。对于小规模的开发,可以进行手动扫描。对于大规模的代码,则需要自动化扫描。那么该谁来管理这些事情?该由谁来决定多久检查一次?比如,版本发布、漏洞检查、拒绝发布版本、漏洞代码修复,甚至是回答其他与安全相关的问题?这个时候,该应用安全经理上场了。
但该如何找到这样的人选?或者该怎样在组织内部培养这样的人?这篇文章将基于企业软件开发实践来讲讲对应用安全经理的需求。
什么是应用安全经理?
企业迟早都会认识到,他们需要雇佣这样的一个角色,特别是如果他们内部缺少这样的专家。可以让开发人员承担这样的角色吗?尽管他们在软件开发方面很有经验,但却很难将软件漏洞与信息安全和业务风险挂钩。负责安全的人员呢?对于他们来说,深入理解开发细节是一个巨大的挑战。不管怎样,要检查软件漏洞,需要理解使用不同编程语言编写的代码,所以需要具备开发经验。
我们来看一下应用安全经理在开发流程中需要解决哪些问题。
你可能会想,应用安全经理就是检查一下代码是否符合安全规范,但是,安全问题可能会在系统的各个阶段(从设计阶段到生产发布阶段)出现。构建安全的软件开发什么周期有很多种模型(如软件安全开发切入点、SDLC 等)和不同的方法(如瀑布模型、敏捷等)。但不管怎样,它们都有一个共同的关键点:在软件开发的各个阶段都要把安全问题牢记在心。
显然,在一个规模相对较大的项目中,一个人很难承担所有的重任。很少有人能够单枪匹马处理所有的问题,包括应用程序安全系统的构建、评审应用架构、严重分析工作和评估代码安全质量。除了这些,还要确保应用程序经过了所有必需的安全测试,系统的部署和配置都是安全正确的。
另外,这些事情一般是由不同的团队和部门共同完成的。为了完成这些工作,应用安全经理应该成为整个流程的推动者。应用安全经理可以基于已有的经验或者将特定的任务委托给部分专家来确保开发流程的安全合规性。但经验告诉我们,应用安全经理不能只是简单地把任务委托给其他相关人员,然后等着事情完成。
应用安全经理应该知道以及做些什么?
首先,应用安全经理需要知道什么是可控的项目。在采用敏捷开发方法时,这个尤为重要,因为敏捷开发与瀑布开发不同,你不可能有两个月时间用在项目预发布评审上。应用安全经理需要确保团队正确理解在设计阶段所设定的需求,确保架构可以满足这些需求,确保它们是可行的,并且不会在未来造成技术债务。应用安全经理是查看、解释和评估自动化报告和第三方审计结果的主要角色。应用安全经理还要负责过滤掉不相干、错误的结果,评估风险,并参与处理异常情况和制定事故处理指标。
这是一个真实的例子:一家公司在一次代码扫描中扫到了一个不安全的哈希函数(MD5)。这家公司的策略是禁止使用 MD5,供应商在三个月内将其替换成一个更加安全的函数,但代价太大了。对于这种情况,哈希函数冲突完全不会影响到系统安全,因为这个函数并没有被用于保护数据完整性。他们这么做不仅影响了交付速度,而且代价高昂,却并没有带来安全方面的好处。
其次,应用安全经理需要了解各个领域的知识,包括开发流程和信息安全准则。技术能力也很重要,因为如果看不懂代码或者不知道该怎样发现漏洞,那就很难评估由专家和自动化工具所提供的报告。通常情况下,开发人员(他们也参与构建安全系统)难以接受使用代码分析器或在渗透测试中发现的漏洞,他们会说这些工具或测试人员搞错了。那么究竟谁对谁错?事实上,要想公正客观地处理好这个问题,需要有一定的技术能力。如果软件开发外包给了其他供应商,那么有谁能够确保他们的“技术”是没问题的?
另一个真实的例子:一家公司引入了一个新的开发工具,并在一个生产环境的参考项目中对其进行了测试。最后,这些项目连通了,但在绿色的仪表盘上出现了安全事故警报。显然,被利用的漏洞应该早在漏洞分析阶段被应该被扫描出来,但实际上并没有,因为没有人知道该如何用这个高级的漏洞扫描工具(具备优秀的扫描能力)来扫描 SPA 应用程序(使用了新的 JavaScript 框架)。扫描工具没有看到这个动态出现的表单认证漏洞,并执行必要的检查。但不管怎样,没有人注意到这些,因为一切看起来都正常。开发人员没有深入了解扫描工具的特性,无法发现漏洞,而安全工作人员也不了解 Web 开发框架之间的不同。
去哪里找这样的专家?
研究过市场的人都应该知道,市场很缺这样的应用安全专家。情况通常是这样的:客户提出候选人需求,然后把它们交给 HR。如果要求很严格,普通的搜索就很难找到简历,因为有经验的专家不会随便公开他们的简历。如果他们要换工作,他们会从已有的联系人那里寻找机会。那么,应该怎样才能找到这些专家?
你可以试着从其他公司聘请,但因为一些原因,这样通常难以被接受。市场上出现了越来越多的应用安全经理外聘竞争,你可以从服务提供商那里获得专家,从而成功地解决这个问题。
不过,你还有另外一种选择。你可以试着培养自己的应用安全经理:
对安全问题感兴趣的开发人员;
安全极客,他们对软件开发和安全问题很熟悉,并且愿意在这方面深耕。
以上两种候选人都需要在他们薄弱的领域掌握更多的知识。有开发背景的候选人对之前工作的团队的文化和流程有更好的了解,但需要花很长时间掌握与安全领域相关的知识。经验表明,我们可以在开发人员、测试人员、分析师和架构师这些角色当中找到对安全问题感兴趣并且已经具备一定层度应用安全知识的人。所以,他们是理想的应用安全经理候选人。
另一方面,安全工作人员需要改变他们传统的工作方式,逐渐融入开发团队的文化。当然,如果安全专家有丰富的编码经验,并且熟悉开发流程,他们应该能够快速且顺利地融入团队。
总结
开发安全是一个业务流程,需要所有团队成员密切合作。一个合格的应用安全经理是整个流程的关键推动者,同时也是激励者、领导者、执行者和监督者——本质上是一个多面手。尽管找到或者培养这样的专家不容易,但确保找到或培养出理想的候选人,其带来的业务好处是非常深远的。
作者简介:
Daniil Chernov,DerScanner CTO、MSIS、CISSP、CISA,拥有 15 年以上网络安全经验。2005 年至 2007 年,他在 Informzaschita 担任信息安全分析师,直到 2015 年,他在 Jet Infosystems 系统集成商担任不同职位。2015 年,他担任 DerScanner 项目的 CTO,该项目为二进制 SAST 解决方案。他定期举办 appsec 网络研讨会,并为行业媒体撰写有关安全开发的文章。
原文链接:Application Security Manager: Developer or Security Officer?
评论