CheckMarx-银行App安全防护实践

发布时间: 2018-06-22      作者:并擎科技

现今时代,银行已经全面数字化。几乎每个主流银行都同时提供在线访问的业务和移动APP,因为移动APP对于当下人们的出行方式来说更具便捷性。据最近一份PWC调查报告显示,现在有46%的用户使用在线银行,相比于2012年的调查报告来说有巨大涨幅,在上次调查报告里仅仅有27%的用户专门使用在线银行。

从以上数据得知,对银行和其他金融机构来说,提供一个在线APP以允许在线或移动银行访问现已成为一件非常必要的事情。用户渴望移动银行带来的便捷性,但另一个问题同时也出现了:这些在线银行APP到底有多安全?

2017年底发布的调查成果或许能回答这个问题。这次调查,由伯明翰大学完成。调查结果发现银行APP的安全问题可能使这些银行的数百万计的用户暴漏在攻击下。其中一个主要问题是证书绑定方面的缺陷, 如The Rgister所讲:这意味着这些银行的测试未能探测到,“一个能够使攻击者控制受害者在线银行的严重漏洞”。详情参考以下网址:

https://www.theregister.co.uk/2017/12/11/mobile_banking_security_research/

像这样的安全问题显示出开发数字银行APP时覆盖用户的所有基本面是一件极其重要的事情。虽然数字银行能够帮助建立新的客户关系并提供一些创新服务,从而为金融机构带来更多收益,但同时也承担着很多风险。

 

开发银行APP的7个关键步骤

虽然消费者自己本身就承担一部分安全责任。为了保障安全,用户应该使用安全的WIFI来访问他们自己的银行APP,在用户不使用他们的设备时将其锁起来,使用单一的密码,并且不使用公共电脑访问他们的帐户来确保他们账户的安全,但是确保顾客安全的主要责任还是落在银行身上。换句话说,责任应落在共同开发这个应用程序开发者和安全团队身上。

拓展一个SDLC(软件开发生命周期)对持续开发安全应用程序是至关重要的。这个SDLC应该被设置一个策略以确保一个安全措施能够被内置到产品里,但同时不减慢开发进程。

如下是SDLC里的七个关键步骤,开发人员和安全团队应该一起协作确保一个安全的在线或移动银行APP的发布。

1.建立安全需求

步是理解银行APP的安全需求。由于银行APP的敏感性,任命一个安全团队成员与构建团队一起工作是非常重要的。这种合作关系需要在开发前就确立。

在SDLC的这一部分,开发团队和安全团队应该鉴定出软件内部的关键安全风险。例如这个软件应该执行哪些标准(企业内部的或者法律或监管机构)。来自开发团队和安全团队的利益相关者应该被鉴别出来以确保从一开始就通信畅通,另外在这个过程中任何分歧都不能忽略。只有当安全需求被建立并被所有成员认同,软件才可以进行开发。

2.分析攻击面

任何银行软件都会面对风险区域,即攻击面。攻击面,如OWASP所写,由以下组成:

1)所有数据或命令进入和离开系统的路径总和

2)保护这些路径的代码

3)所有该应用程序里使用的有价值的数据,如秘钥,知识产权,关键商业数据,个人数据和个人身份信息(PII)

 4)保护这些数据的代码

各种各样的组织机构已经研究出一些方法以量化攻击面:微软的Michael Howard设计出了”Relative Attack Surface Quotient”,卡耐基梅隆大学的研究员创造了攻击面矩阵“Attack Surface Metric”。当想要创造一种对用户的组织机构适用的方法时,可以尝试使用以上其中的一种方法。

保护一个应用程序,分析攻击面是一个复杂但非常关键的一步,因为它定位到关键并存在潜在脆弱的代码区域,从而确保它们在开发和测试过程中被正确地保护。更多有关于分析攻击面的信息,请参考:

https://www.owasp.org/index.php/Attack_Surface_Analysis_Cheat_Sheet

3.执行威胁建模

在SDLC里下一步是执行威胁建模。威胁建模是帮助开发人员理解哪些安全管制是必要的从而进一步确保从一开始安全措施就被内置在程序里。威胁建模的过程包括:

  • 定义哪些是需要被保护的资产和资源

  • 在哪些入口和访问点能够获得这些资产和资源

  • 当威胁被确立优先级后对每个威胁的迁移策略的发展

威胁建模和攻击面分析两者之间的关系是很紧密的,这意味着攻击面的任何一处改动都将需要威胁建模,威胁建模能够帮助利益相关者更好地理解攻击面。深入了解威胁建模请访问:

https://www.owasp.org/index.php/Threat_Modeling_Cheat_Sheet

4. 执行静态分析安全测试(SAST)

从其基本层面讲,静态分析安全测试(SAST)就是测试一个应用程序的源代码以鉴别出关键的安全漏洞。先进的SAST工具会自动化地做这件事,从源头保护代码,并能够在开发进程的起始阶段执行。SAST测试是SDLC里的一个重要部分,因为它在应用程序进入生产环境前探测出漏洞,这意味着在这个阶段找到和修复缺陷是简单并便宜的。SAST同时也会为开发者指出问题出现的具体代码区域。

除了探测出包含在OWASP TOP 10及之外的漏洞,SAST也检查代码的合规性问题,这些问题与法律和监管标准相关,包括PCI-DSS,许多银行都必需服从这个标准。

进一步阅读 Checkmarx提供的”初学者SDLC安全测试指导“,请参考以下网址:

https://www.checkmarx.com/2016/02/26/security-testing-sdlc-beginners-guide/

5.互动应用程序安全测试(IAST)

鉴于SAST与代码互动,IAST,安全SDLC的下一步,测试软件的一个运行版本。它们之间的联系是SAST是一个安全人员确保安全的代码,IAST是一个黑客,努力访问它本不该访问的APP里的区域。IAST不需要深入了解一个应用程序,只是去查看这个程序是否是有漏洞的,这个漏洞可能如何被利用。

使用混合静态和动态安全测试是确保产品上线前漏洞被清除出代码和应用程序的一种很好的方式。特别是对于更敏感的应用程序,例如银行软件,这种结合对于将漏洞和攻击风险减小至尽可能低的程度来说是至关重要的。

有兴趣学习更多关于IAST吗?请参考:

Checkmarx的webinar “What About IAST?”

https://info.checkmarx.com/resources/webinars/what-about-iast?hsCtaTracking=76638ddb-ce7a-4b1c-9fa7-c2df437d5bac%7Cea737bd0-e4d0-4904-8044-5fb2a0930159

6.创建安全门

可能SDLC里重要的一步是确保软件里的高危和中危缺陷不进入生产环境。微软公司用同样的一个理念将SDLC过程将安全门比作缺陷闸。安全门建立了一个很小级别安全和检查代码里的高危漏洞。任何被标记为高危的代码都应该返回给开发者进行修复。这些检查最好在开发过程中用静态分析测试来执行。作为一个平台,例如CxSAST这样能够自动探测这些漏洞,并在开发人员仍在编写代码时帮助他们在源头修复漏洞。

其中一件至关重要的事情是,当安全门被创建起来就不能被破坏,无论发布一个APP多紧急。一个中危或高危漏洞绝不该被允许进入生产环境,这个安全门有助于定义哪些是漏洞并且这些漏洞被发现时该如何处理。

7.引入持续安全开发教育

虽然不是传统SDLC里的一个部分,开发者的安全教育却仍旧是SDLC的一个部分。开发者培训将在应用了安全开发的机构里快速取得进展,它可以将一个对安全一无所知或知之甚少的开发人员转变为一个处处将安全考虑在内的安全开发人员。特别在一个高度敏感的环境里,例如银行APP,拥有理解安全进程的开发人员将使发布一个安全软件更快速。

阅读更多关于培养开发人员安全认知,请查看

https://www.checkmarx.com/2015/07/17/5-steps-that-will-raise-your-developers-information-security-awareness/。

任何现代应用程序现在都比以前更需要一个更高级别的安全意识。客户想要能够在他们自己的手机和电脑上做任何事情,这就需要我们对该如何保护我们组织机构自己和客户这一问题投入更多思考。当面对数字银行时,这些考虑将更重要,需要强有力地计划和执行以达到保持一个高等级安全水平。使用安全SDLC引路,银行APP将能够被安全地发布,给予客户对你的组织机构和软件一个高级别信任。

来源:Checkmarx博客

翻译:并擎科技 杨欢乐

编辑:并擎科技 周文姣

关于Checkmarx

Checkmarx作为世界上知名的代码安全扫描软件生产商,拥有应用安全测试的前沿解决方案,可以解决当前软件开发阶段漏洞的扫描问题,从而加速软件系统的安全交付,降低系统上线的失败风险。

Checkmarx SAST帮助企业将静态源代码安全测试整合到其SDLC中,提供丰富的插件和简单易用的API,即使不与某个SDLC组件完全兼容,也可以通过API轻松完成特殊定制,完整的支持并实现安全的软件开发生命周期,实现检测修复的“左移“,自动批量扫描代码从而降低漏报、误报并快速定位到修复点,极大降低修复成本。

关于 Binqsoft(并擎科技)

上海并擎软件科技有限公司 (简称“并擎科技”)是一家深耕于信息安全领域,提供相关解决方案及技术服务的高新技术企业。并擎科技凭借丰富的解决方案、专业的服务团队、众多的行业案例、深入的厂商合作以及全国范围内的服务支持能力等综合优势,已向国内外众多知名企业提供了优质解决方案和专业技术服务。

我们的客户包括百度、京东、德勤、中国银联、新开发银行、中国航油、中国商飞、中国东方航空、上海浦发集团、上海浦开集团、江苏电力、吉利汽车、汇众汽车、南京银行、苏州银行、交银租赁、中交三航院、通联支付、汽车之家、饿了么、美特斯邦威、德邦物流、益学堂、普洛斯等。

我们的合作伙伴包括Microsoft、Fortinet、Forcepoint、Rapid7、Barracuda、Imperva、CyberArk、Checkmarx、Radware等业界品牌。