移动应用安全谈:这份完整的App安全体系图谱请马上收藏!| 技术帖

区块链App安全体系图谱、收藏这份就够了。

区块链技术已经成为今年最受大众关注的技术,告别单纯的加密资产炒作的热潮,这一技术正在逐步落地或者寻求各个场景下的落地方向。正所谓“润物细无声”,在各行各业对区块链的尝试过程中,我们相信它将逐步深入到大量的应用场景,或者作为底层技术,或者作为效率提升的中间件,或者成为前端技术的组成部分,甚至充分发挥该技术体现的信用传递和价值重塑特征,改变一些商业模式的运转方式。

 移动应用安全谈:这份完整的App安全体系图谱请马上收藏!| 技术帖

而伴随这个技术逐步落地的过程,直接或者间接的,区块链技术最终要通过终端产品实现用户价值,在移动互联网时代,其中的一种重要形式正是移动应用,即我们常说的手机App。 

从纯技术角度,区块链技术应用场景下的手机App有其通用性的技术特征,但是也有结合区块链场景下的特别之处,这与具体的应用场景密切相关。比如在数字资产领域,相关移动应用就涉及到诸如密钥、助记词、加密资产转账的场景,需要特别的安全防护。而在未来诸如金融、征信、政务的区块链技术应用中,都可能涉及移动应用与相关节点,甚至自身直接参与区块链网络运转的过程,期间涉及的敏感信息保护更是重要的安全问题。 

与区块链行业相比,移动互联网的发展显然更加成熟,“前人栽树,后人乘凉”在移动互联网初期很多“雷”早已被但在区块链领域,移动安全问题尚处于 “幼年”,整个行业的需要进一步的交流和提升。在北京链安对行业整体移动应用的安全监测中,我们发现区块链场景下的移动应用很多都没有采取充分的安全措施,特别在带有金融属性的数字资产相关移动应用中,可以说问题颇多。 

在今年5月北京链安发布的《区块链移动端安全调查报告》中就曾经披露了行业内移动应用体现的主要安全问题。

 移动应用安全谈:这份完整的App安全体系图谱请马上收藏!| 技术帖

哪怕在诸如运行环境安全性检测,自我保护防破解和篡改这样的基本安全防护上,业内移动应用都有很大的提升空间。 

而由于系统的开放性,安卓系统可谓移动安全问题的多发地带,那么,一个完善的安卓系统移动应用安全体系是怎样的呢?让我们先看一张脑图,它体现了北京链安眼中的区块链行业移动应用的安全观。

 移动应用安全谈:这份完整的App安全体系图谱请马上收藏!| 技术帖

温馨提示:各位朋友可以将这张图下载到电脑或者平板更清楚的查看。

从这张脑图,我们可以对北京链安的C端安全体系主张首先有一个概括的了解,接下来就让我们了解其中的一些细节。

我们将移动应用安全从B端开发者视角分为三个阶段,即研发阶段、运行阶段和应用分发阶段。

就研发阶段而言,我们需要重点关注在一些逻辑实现和组件使用的安全问题,比如下面几个环节:

1. 不安全的组件使用:在开发过程中,我们都会用到一些系统或者第三方的组件,它们可以大大提升我们的开发效率,但是对它们的使用不当也是安全问题屡发的原因,例如:

ActivityService、BroadcastReceiverContentProvider的导出,没有做访问权限的控制,都可能导致DDOS攻击风险。

WebView的使用上,配置策略不当导致相关代码的代码执行漏洞、密码明文存储漏洞、跨域访问漏洞和XSS攻击,可能引入诸如代码注入攻击等严重的安全问题。由于目前很多App都通过WebView加载H5页面实现一些功能,这类安全问题的威胁就非常突出了。

2. 密码学误用:对于现在的开发者来说,大部分已经具有了对数据加密的意识,但是我们发现很多时候在实际操作中,开发者常常自定义一些弱加密算法,或者使用一些已经被证明不安全的算法,或者使用就其使用场景而言加密等级不够的算法,都可能造成用户敏感数据的泄露。由于在区块链应用中,常常有诸如密钥、助记词这样事关用户财产的数据操作,这方面的安全问题造成的损失就可能非常的直接。 

3. 不安全的日志设计:这实际上是一个良好的开发习惯问题,即在正式发布环境下,不应该向控制台打印任何日志信息。但是,我们遗憾的发现,很多App的线上版本并未关闭日志信息的打印,甚至还直接打印密码等敏感信息。 

就运行阶段,我们关注的是在用户下载安装了App后,在运行环境中,可能产生的安全问题,其表现往往在运行阶段,但是根源依然在于开发者没有实施安全防范工作,如下列环节。 

1. 应用可调试:App没有做反调试的措施,这就导致攻击者可能通过对其App的反编译和调试,摸清其背后的业务实现过程,从而设定攻击点。 

2. 应用可备份:App可以被整体性备份到另一台手机,包括其诸如用户验证方面的数据,从而导致攻击者可以直接以用户身份完成相关操作。

3. 不安全的运行环境:App想当然的认为自己运行于一个正常的安全的环境,事实上有三类运行环境可能导致你的App可能遭受攻击:

Root的手机

安卓系统的模拟器

VirtualAppMultiDroid、DroidPlugin等双开环境

如果你不对App当前运行的环境进行检测就让其直接运行,并进行诸如注册、登录、转账等业务,就有可能让用户遭受攻击。 

当然,我们也不能忽视操作系统本身的安全漏洞问题,比如最近出现的 StrandHogg 漏洞,利用该漏洞的攻击者可以伪装合法应用来请求权限许可,在你的系统中为所欲为。对于这类安全问题,就更需要相应的安全态势感知服务,及时获得最新信息,对用户进行提醒,对自己的App进行必要的安全升级。 

4. 不安全的数据存储:App对于用户私有数据,特别事关用户隐私、财产安全的数据,如果存储在数据公共区域,显然是一种高风险的数据处理。与此同时,我们也看到一些App虽然将这类数据存储在私有区域,却也想当然的认为这里是攻击者无法企及的安全之地,对数据明文存储,这些做法都会威胁用户的数据安全。

 移动应用安全谈:这份完整的App安全体系图谱请马上收藏!| 技术帖

上图是一个钱包本地明文存储的助记词,相信大家首次使用数字钱包的时候,都会看到App“声嘶力竭”的提醒你,不要拍照,不要存在本地,要找张纸抄下来,可是一些钱包却让这些助记词处于不设防状态。

5. 不安全的网络通信:区块链App的关键业务大都涉及与服务端的通信,这个过程中必然涉及一些敏感数据的传输,比如采用不安全的通信协议,在数据传输过程中未加密,而一些开发者尽管有意识的使用了HTTPS这样的安全通信方式,却为进一步做证书锁定等配套的安全措施。

6. 不安全的业务实现:对于不同业务场景的区块链应用,都有各自的业务实现方式,期间也有各自的安全隐患需要关注。而在一些通用性的场景中,我们发现业内App存在一些普遍性问题,如密码、私钥、助记词等操作上没有使用安全键盘,使用存在安全隐患的系统剪贴板,在这样的情况下,用户的操作很容易被攻击者监听,获取敏感数据。

 移动应用安全谈:这份完整的App安全体系图谱请马上收藏!| 技术帖

上图示例中,通过监听剪贴板事件获得用户的私钥信息 

最后,我们还需要特别关注应用分发阶段,因为区块链应用开发后,总会通过应用商店、官网、社区、IM等渠道进行传播,这个过程中的安全问题常常被忽视,在这里我们提醒开发者关注以下问题。 

1. 安装包可篡改:开发者如果采用不安全的签名方案,或者在代码中没有进行相应的校验,那么你发布的应用安装包就存在被攻击者解包,插入攻击代码,重新打包以原App名义发布的风险,不但会对用户进行钓鱼、木马植入等攻击,更可能损害开发商的声誉。 

2. 代码可逆向:代码逆向技术是一种可以根据可执行文件解析出你的App代码运行逻辑的技术,这类技术让你原本对外界黑盒的逻辑实现被公开,包括一些涉密的,事关安全的操作。攻击者了解了这些逻辑,自然就有可能通过进一步的技术手段或者绕过一些代码逻辑,或者植入恶意代码,在重新编译和打包,让你的App变身为有害应用。 

3. 应用合规检查:无论在商店发布,还是一些行业应用领域,对App本身都有一系列合规审查,如对操作系统权限的使用,业务流程的规范,都需要在App开发过程中做好部署。 

如果我们从以上几点全方位的做好移动应用的安全工作,将大大降低你的App被攻击和篡改的概率。 

作为开发者,可能也会困惑,上面的安全体系涉及的安全点太多,具体该采取哪些措施在自己的产品中落实这些安全措施? 

作为用户,可能也会疑惑,上面提及的这么多安全问题,一旦在自己使用的App中发生会有怎样的危害?这样的安全问题在区块链领域的App上发生的概率又有多少呢?

接下来,我们将在这个“移动应用安全谈”的系列中,对相关安全问题逐一介绍,包括它们被利用的方式,它们造成的危害,以及防范这些风险的措施,一同努力打造区块链应用场景下,安全的移动应用。 

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2019年12月4日 下午12:50
下一篇 2019年12月4日 下午12:50

相关推荐

移动应用安全谈:这份完整的App安全体系图谱请马上收藏!| 技术帖

星期三 2019-12-04 12:50:15

区块链技术已经成为今年最受大众关注的技术,告别单纯的加密资产炒作的热潮,这一技术正在逐步落地或者寻求各个场景下的落地方向。正所谓“润物细无声”,在各行各业对区块链的尝试过程中,我们相信它将逐步深入到大量的应用场景,或者作为底层技术,或者作为效率提升的中间件,或者成为前端技术的组成部分,甚至充分发挥该技术体现的信用传递和价值重塑特征,改变一些商业模式的运转方式。

 移动应用安全谈:这份完整的App安全体系图谱请马上收藏!| 技术帖

而伴随这个技术逐步落地的过程,直接或者间接的,区块链技术最终要通过终端产品实现用户价值,在移动互联网时代,其中的一种重要形式正是移动应用,即我们常说的手机App。 

从纯技术角度,区块链技术应用场景下的手机App有其通用性的技术特征,但是也有结合区块链场景下的特别之处,这与具体的应用场景密切相关。比如在数字资产领域,相关移动应用就涉及到诸如密钥、助记词、加密资产转账的场景,需要特别的安全防护。而在未来诸如金融、征信、政务的区块链技术应用中,都可能涉及移动应用与相关节点,甚至自身直接参与区块链网络运转的过程,期间涉及的敏感信息保护更是重要的安全问题。 

与区块链行业相比,移动互联网的发展显然更加成熟,“前人栽树,后人乘凉”在移动互联网初期很多“雷”早已被但在区块链领域,移动安全问题尚处于 “幼年”,整个行业的需要进一步的交流和提升。在北京链安对行业整体移动应用的安全监测中,我们发现区块链场景下的移动应用很多都没有采取充分的安全措施,特别在带有金融属性的数字资产相关移动应用中,可以说问题颇多。 

在今年5月北京链安发布的《区块链移动端安全调查报告》中就曾经披露了行业内移动应用体现的主要安全问题。

 移动应用安全谈:这份完整的App安全体系图谱请马上收藏!| 技术帖

哪怕在诸如运行环境安全性检测,自我保护防破解和篡改这样的基本安全防护上,业内移动应用都有很大的提升空间。 

而由于系统的开放性,安卓系统可谓移动安全问题的多发地带,那么,一个完善的安卓系统移动应用安全体系是怎样的呢?让我们先看一张脑图,它体现了北京链安眼中的区块链行业移动应用的安全观。

 移动应用安全谈:这份完整的App安全体系图谱请马上收藏!| 技术帖

温馨提示:各位朋友可以将这张图下载到电脑或者平板更清楚的查看。

从这张脑图,我们可以对北京链安的C端安全体系主张首先有一个概括的了解,接下来就让我们了解其中的一些细节。

我们将移动应用安全从B端开发者视角分为三个阶段,即研发阶段、运行阶段和应用分发阶段。

就研发阶段而言,我们需要重点关注在一些逻辑实现和组件使用的安全问题,比如下面几个环节:

1. 不安全的组件使用:在开发过程中,我们都会用到一些系统或者第三方的组件,它们可以大大提升我们的开发效率,但是对它们的使用不当也是安全问题屡发的原因,例如:

ActivityService、BroadcastReceiverContentProvider的导出,没有做访问权限的控制,都可能导致DDOS攻击风险。

WebView的使用上,配置策略不当导致相关代码的代码执行漏洞、密码明文存储漏洞、跨域访问漏洞和XSS攻击,可能引入诸如代码注入攻击等严重的安全问题。由于目前很多App都通过WebView加载H5页面实现一些功能,这类安全问题的威胁就非常突出了。

2. 密码学误用:对于现在的开发者来说,大部分已经具有了对数据加密的意识,但是我们发现很多时候在实际操作中,开发者常常自定义一些弱加密算法,或者使用一些已经被证明不安全的算法,或者使用就其使用场景而言加密等级不够的算法,都可能造成用户敏感数据的泄露。由于在区块链应用中,常常有诸如密钥、助记词这样事关用户财产的数据操作,这方面的安全问题造成的损失就可能非常的直接。 

3. 不安全的日志设计:这实际上是一个良好的开发习惯问题,即在正式发布环境下,不应该向控制台打印任何日志信息。但是,我们遗憾的发现,很多App的线上版本并未关闭日志信息的打印,甚至还直接打印密码等敏感信息。 

就运行阶段,我们关注的是在用户下载安装了App后,在运行环境中,可能产生的安全问题,其表现往往在运行阶段,但是根源依然在于开发者没有实施安全防范工作,如下列环节。 

1. 应用可调试:App没有做反调试的措施,这就导致攻击者可能通过对其App的反编译和调试,摸清其背后的业务实现过程,从而设定攻击点。 

2. 应用可备份:App可以被整体性备份到另一台手机,包括其诸如用户验证方面的数据,从而导致攻击者可以直接以用户身份完成相关操作。

3. 不安全的运行环境:App想当然的认为自己运行于一个正常的安全的环境,事实上有三类运行环境可能导致你的App可能遭受攻击:

Root的手机

安卓系统的模拟器

VirtualAppMultiDroid、DroidPlugin等双开环境

如果你不对App当前运行的环境进行检测就让其直接运行,并进行诸如注册、登录、转账等业务,就有可能让用户遭受攻击。 

当然,我们也不能忽视操作系统本身的安全漏洞问题,比如最近出现的 StrandHogg 漏洞,利用该漏洞的攻击者可以伪装合法应用来请求权限许可,在你的系统中为所欲为。对于这类安全问题,就更需要相应的安全态势感知服务,及时获得最新信息,对用户进行提醒,对自己的App进行必要的安全升级。 

4. 不安全的数据存储:App对于用户私有数据,特别事关用户隐私、财产安全的数据,如果存储在数据公共区域,显然是一种高风险的数据处理。与此同时,我们也看到一些App虽然将这类数据存储在私有区域,却也想当然的认为这里是攻击者无法企及的安全之地,对数据明文存储,这些做法都会威胁用户的数据安全。

 移动应用安全谈:这份完整的App安全体系图谱请马上收藏!| 技术帖

上图是一个钱包本地明文存储的助记词,相信大家首次使用数字钱包的时候,都会看到App“声嘶力竭”的提醒你,不要拍照,不要存在本地,要找张纸抄下来,可是一些钱包却让这些助记词处于不设防状态。

5. 不安全的网络通信:区块链App的关键业务大都涉及与服务端的通信,这个过程中必然涉及一些敏感数据的传输,比如采用不安全的通信协议,在数据传输过程中未加密,而一些开发者尽管有意识的使用了HTTPS这样的安全通信方式,却为进一步做证书锁定等配套的安全措施。

6. 不安全的业务实现:对于不同业务场景的区块链应用,都有各自的业务实现方式,期间也有各自的安全隐患需要关注。而在一些通用性的场景中,我们发现业内App存在一些普遍性问题,如密码、私钥、助记词等操作上没有使用安全键盘,使用存在安全隐患的系统剪贴板,在这样的情况下,用户的操作很容易被攻击者监听,获取敏感数据。

 移动应用安全谈:这份完整的App安全体系图谱请马上收藏!| 技术帖

上图示例中,通过监听剪贴板事件获得用户的私钥信息 

最后,我们还需要特别关注应用分发阶段,因为区块链应用开发后,总会通过应用商店、官网、社区、IM等渠道进行传播,这个过程中的安全问题常常被忽视,在这里我们提醒开发者关注以下问题。 

1. 安装包可篡改:开发者如果采用不安全的签名方案,或者在代码中没有进行相应的校验,那么你发布的应用安装包就存在被攻击者解包,插入攻击代码,重新打包以原App名义发布的风险,不但会对用户进行钓鱼、木马植入等攻击,更可能损害开发商的声誉。 

2. 代码可逆向:代码逆向技术是一种可以根据可执行文件解析出你的App代码运行逻辑的技术,这类技术让你原本对外界黑盒的逻辑实现被公开,包括一些涉密的,事关安全的操作。攻击者了解了这些逻辑,自然就有可能通过进一步的技术手段或者绕过一些代码逻辑,或者植入恶意代码,在重新编译和打包,让你的App变身为有害应用。 

3. 应用合规检查:无论在商店发布,还是一些行业应用领域,对App本身都有一系列合规审查,如对操作系统权限的使用,业务流程的规范,都需要在App开发过程中做好部署。 

如果我们从以上几点全方位的做好移动应用的安全工作,将大大降低你的App被攻击和篡改的概率。 

作为开发者,可能也会困惑,上面的安全体系涉及的安全点太多,具体该采取哪些措施在自己的产品中落实这些安全措施? 

作为用户,可能也会疑惑,上面提及的这么多安全问题,一旦在自己使用的App中发生会有怎样的危害?这样的安全问题在区块链领域的App上发生的概率又有多少呢?

接下来,我们将在这个“移动应用安全谈”的系列中,对相关安全问题逐一介绍,包括它们被利用的方式,它们造成的危害,以及防范这些风险的措施,一同努力打造区块链应用场景下,安全的移动应用。