金融行业最基本的要求是风险控制。银行、证券等金融机构对安全的需求一直都很迫切,尤其是在大数据时代。一旦金融机构或其客户的数据被泄露,损失往往是不可估量的。
新思科技软件质量与安全部门管理顾问Olli Jarva指出:“金融服务机构经常部署复杂的应用程序,与采用不同语言的分布式地理信息系统连接。它们通过多种协议进行通信,其中一些使用的是多个平台提供的免费开源软件。”
这种复杂性使金融服务机构的网络面临更多漏洞。更糟糕的是,市场压力迫使软件行业要更快交付产品。在急于完成一个软件时,安全流程极有可能就被忽视了。
金融行业是黑客的重点攻击对象之一,从ATM攻击、DDoS攻击、勒索软件到APT攻击等,犯罪手段层出不穷。
为了防患于未然,我们可以探讨一下哪种防范方式更有效,能保护金融服务机构、应用程序及客户资产。
1. 软件安全架构
软件完整性是衡量一款软件是否卓越的关键。完整性是指软件质量与安全。在每款应用开发之初,安全专家和软件架构师应该紧密合作,以开发高度整合的、简化的软件安全架构。风险分析应该在软件开发早期阶段进行 —— 这通常被称为“左移”。
当所有安全决策都通过一个小型、集中式内核运行时,它不太可能会省略某个安全决策(例如授权)。开发团队可以放心地去构建一个安全的应用程序,因为代码在默认情况下从一开始就是安全的。
2. 威胁建模
威胁建模流程可以支持识别漏洞和潜在攻击路径,降低风险。进行威胁建模是持续风险评估过程的一部分,可以帮助开发团队保持高度的安全警惕性。不断提醒攻击的可能性,并从攻击者的角度考虑应用程序安全,有助于开发团队从不同角度进行思考,并在开发过程中进行防御。
3. 自动安全测试
过去,应用程序安全测试通常在软件开发过程结束时或接近结束时才进行。这就会导致如果有安全漏洞的话,开发人员要到后期才能发现,补救成本往往要更高。
早期发现漏洞不仅可以降低修复成本,还可以减少在后期阶段修复漏洞的时间。这对于像金融等行业的快节奏开发环境尤其重要。除了自动连续测试之外,在整个软件开发过程中采取安全措施,可以在软件投产之前就解决安全问题,避免昂贵的补救成本。
现在市面上有许多自动测试工具,每种工具都有优缺点。动态应用安全测试(DAST)工具(也称为黑盒测试)可识别正在运行的应用程序中的漏洞。 DAST可快速有效地查找到不同类型的应用程序漏洞,包括身份验证和授权问题。而且,即使是不熟悉编码语言的人也能使用这类工具。
静态应用安全测试(SAST)工具(也称为白盒测试)可供有权访问应用程序的源代码、字节代码或二进制文件的人使用。它能识别应用程序中的潜在漏洞,例如程序正在使用不受信任的数据,并在没有任何形式的验证和/或编码的情况下将其视为可信。黑盒测试用于正在运行的应用程序,在这个过程中不易发现的漏洞可以被 SAST工具检测出来。
4. 手动安全测试
自动化工具有一定的局限性,这就是为什么需要补充手动安全测试的原因。例如,自动化工具可能无法检测到逻辑和设计缺陷,这时候就需要手动代码审查和渗透测试,用来识别和解决这些问题。
5. 专业人员与培训计划
软件是一个团队协作开发的结果。开发过程中的所有参与者都应在安全方面获得充分的信息和培训,从而在整个软件开发生命周期(SDLC)中推动安全计划进展。推行安全计划不能只靠软件开发人员,还需要了解常见漏洞和核心安全概念的质量保证(QA)团队和项目经理。 QA团队应该能够进行基本的安全测试工作。
创造具有安全意识的环境和培养这样的团队意味着在SDLC早期就能发现安全问题,并且在其成为沉重负担前解决掉。
总结
金融服务机构受到高度的监管,应用程序运行环境复杂。市场日新月异,维持应用程序安全是一项有挑战的任务。但部署安全系统及在SDLC早期(即“左移”)采取安全举措可以为金融服务机构提供坚实的软件安全保障。