发布于:2021-01-27 14:55:11
0
407
0
在本文中,您将了解什么是应用程序安全,与应用程序安全相关的最常见威胁是什么,以及如何分析应用程序的风险及其后果。
什么是应用程序安全性,为什么很难定义?
您可能想知道应用程序安全实际上意味着什么。每个人都认为移动/web应用程序的安全性是必不可少的,在开发过程中您需要注意它—没有人会不同意这种说法。
但应用程序安全意味着什么?
事实证明,如果不确定我们想要保护自己的风险和威胁,就很难找到/想出一个有用的定义。
如果我们不定义风险,就无法准确定义应用程序安全性。
安全基本上是防范威胁。我们以汽车为例。如果我们谈论一辆安全的车,那就意味着这辆车会在可能发生的事故中保护我们(在某种程度上)。就汽车安全而言,风险是交通事故。
因此,当我们在软件开发环境中谈论安全性时,我们需要定义我们想要保护自己的潜在威胁。这使我们能够形成一个共同的观点,我们在谈论什么。
应用程序安全的定义
我们可以将应用程序安全定义为查找和修复安全漏洞并确保针对可能的威胁提供充分保护的过程。
这个定义并没有澄清问题,但我们可以从中推断出一件重要的事情:应用程序安全是一个过程,而不是一次性的操作。
为了达到所需的安全级别,我们必须准备创建应用程序安全过程,并确保在应用程序的整个生命周期(设计、开发和维护)中遵循该过程。
这个定义缺少什么?我们说过应用程序安全性是一个过程,但我们还没有真正确定它到底关注什么以及它提供了什么。
这里的关键问题是我们想要保护自己的威胁和风险。如果我们不确定或不知道风险是什么,我们将无法正确评估我们希望实现的安全级别。
安全是对潜在威胁和风险的反应
在安全方面,最关键的是要意识到我们要消除或减轻潜在的威胁以及由此产生的风险。当我们开始考虑安全性时,我们不应该立刻把注意力集中在那些能保证我们安全的方法和技术上。首先,我们应该分析我们要防范的风险和威胁。如果我们没有意识到风险,我们就不能开始适当地调整技术和安全方法。
6种最常见的应用程序安全威胁
与移动和web应用程序安全相关的最常见威胁是:
未经授权提取信息–例如,在聊天应用程序中获取私人消息。
未经授权使用应用程序功能–例如,未经授权的用户访问管理功能。
拒绝服务—一种旨在使系统过载从而用户无法使用应用程序的攻击—定义:https://en.wikipedia.org/wiki/Denial-of-service_attack。
未经授权的远程访问控制(侵入服务器)–未经授权的人员访问应用程序服务器。
数据泄漏–未经授权的人员获取机密数据,通常通过未经授权的远程访问控制攻击。
在用户设备上安装恶意软件–导致应用程序用户下载恶意软件。
此列表不完整。这些只是我们在web或移动应用程序中可能遇到的最常见威胁的几个例子。
正如你所看到的,应用程序拥有者面临着不同层面的威胁。为了准确地评估和设计安全解决方案,我们需要对我们的应用程序进行准确的分析。
应用程序类型和相关威胁
让我们仔细看看在不同类型的应用程序(按行业划分)中等待我们的安全威胁。
电子商务/移动商务应用威胁
敏感数据泄漏
拒绝服务和财务损失
社交应用威胁
个人数据泄露
身份盗窃
金融科技应用威胁
勒索用户资金
进行未经授权的交易
财务数据泄漏
不符合财务规定
MedTech&Healthcare应用威胁
非常敏感和机密的医疗数据
不符合规定(如美国的HIPAA)
拒绝服务和中断对医疗数据的访问
需要个人数据的应用程序的威胁
个人数据泄露
不符合规定,如GDPR
应用程序原型的威胁
风险很小,安全性话题可能会被边缘化
前端应用程序威胁(无后端)
没有信息交流
大多数安全风险不存在
请注意,许多因素都会影响到目前为止我们提到的风险:
应用目的
用户存储的数据,
我们与他们共享的数据,
以及我们通过该应用程序提供的服务。
了解这些问题的答案可以提高整个团队对可能发生的风险的认识。考虑到您的答案,开发团队和您可以更准确地设计安全流程和解决方案。
安全漏洞示例
在应用程序开发的历史中,我们已经看到许多网络犯罪分子利用的安全漏洞示例。
Whatsapp –一个安全漏洞,使一家以色列公司可以在人权活动家的设备上安装间谍软件(来源)。
以Armor为例-泄漏了1.5亿个标识数据(电子邮件,密码),然后出现在黑市上(来源)。
这些示例表明,即使是拥有大量资源的大型公司也容易受到此类威胁的威胁,并且会遇到可能被利用的安全漏洞。
规模很重要。附加安全系数
上述例子也向我们展示了影响威胁规模的额外因素。不同的威胁等待着一个被一百万用户使用的应用程序和一个规模较小的应用程序。后果也不同,迅速弥补安全漏洞的压力也不同。它们之间的安全过程也有很大的不同。应用程序的规模是在安全上下文中分析风险和威胁时应考虑的另一个因素。
另一个重要因素是目标受众。安全性方面的一个重要方面是我们如何获取用户—应用程序是公开的还是针对有限数量的用户(例如,一家公司的员工)。例如,如果我们创建一个内部应用程序,我们就可以更好地控制谁将使用它以及在什么情况下使用它。然后我们可以介绍其他安全解决方案和流程。
在开始开发应用程序之前要做些什么来保护应用程序的安全性?
在开发开始提高应用程序的安全性之前,您可以做以下几件事:
准确定义应用程序将在其中运行的行业,
找出给定行业中是否有必须满足的法规(例如HIPAA、GDPR、PSD2),
定义应用程序的主要用户(谁将使用应用程序),
确定应用程序中可用的数据(个人数据、医疗数据、消息、付款等),
根据前面问题的答案,对安全漏洞可能造成的威胁和后果进行简短分析。
以上是启动应用程序安全过程的良好开端。
如何以及何时对威胁、风险和可能的后果进行分析?
我们应该在应用程序开发过程的一开始就提出安全性问题。开发团队中的每个人、涉众、创始人或所有者都应该意识到这些风险。
安全的关键是对威胁、风险和可能的后果进行单独分析。我们应该在收集需求的阶段进行。
安全级别应与执行的分析相适应。
分析并不总是需要一个生成大量文档的漫长过程。相反,最好从简单的事情开始。
1.调查风险
在分析风险时,考虑过失的可能后果是明智的。当然,每个应用程序的含义将有所不同。但是,回答以下问题,您将有一个主意:
如果用户数据泄露了怎么办?
我们存储什么数据?
当应用程序停止工作时会发生什么?(拒绝服务攻击)
如果应用程序数据泄漏,该怎么办?
我们是否存储付款数据?
当攻击者未经授权访问应用程序的某些功能时,会发生什么?
应用程序行业是否强制其遵守任何法规(HIPAA,GDPR)?
了解这些问题的答案可以提高整个团队对可能发生的风险的意识。考虑到您的答案,开发团队和您可以更准确地设计安全流程和解决方案。
2.定义存储在应用程序中的数据和交换的数据(在用户之间,以及用户与系统之间)。
3.对于应用程序的每个主要功能,请回答以下问题
如果某个功能停止工作一段时间会怎样?
给定功能不能使用多长时间?
在应用开发过程中如何照顾安全性?
您还应该在应用程序开发过程中注意安全性做法。关于谁将有权访问通信渠道,开发工具,应用程序服务器和各种第三方,有意识地做出决定是值得的。
以下几个问题将有助于验证我们在开发过程中是否关心正确的安全级别:
是否应用了最小特权原则?
我们是否避免在电子邮件,私人消息中交换密码?
我们是否在网站上要求适当的安全规则(2FA,强密码等)?
我们是否使用安全可靠的工具?
应用程序安全–总结和要点
我希望在读完这篇文章之后,应用程序安全的话题对你来说更加清晰。以下是关键要点:
确保应用程序安全是一个过程,而不是一次性操作。
您应该从应用程序的一开始就考虑安全性。
要有效地确保安全性,您需要了解安全风险。
分析特定应用程序的应用程序和威胁非常重要。
分析威胁的风险、威胁和可能后果(损害控制)是关键。
在我们的移动和web应用程序安全系列的下一篇文章中,您将了解有助于确保应用程序安全的最佳实践和工具,并了解如何测试应用程序是否安全。
作者介绍