首页 > 代码库 > OWASP Top 10移动安全漏洞

OWASP Top 10移动安全漏洞

• 弱服务器端控件

在OWASP排第一的漏洞是“脆弱的服务器端控件”,顾名思义,就是没有以一个安全的方式从移动应用程序向服务器端发送数据,或在发送数据时暴露了一些敏感的API。
例如,考虑对一个Android应用程序登录服务器的凭据进行身份验证,而没有对输入进行验证。攻击者可以以这样一种方式修改凭证来获得服务器敏感的或未经授权的区域。
这是移动应用以及Web应用程序都存在的一个漏洞。

• 不安全的数据存储

在设备上存储任意用户都可以访问的与应用相关的信息。许多Android应用在shared preferences,SQLite(以明文形式)或外部存储器中存储着秘密的用户相关信息,或应用程序信息。
开发者应始终牢记,即使把敏感信息存储在/data/data/package-name目录中,但是只要手机root了,就能够被恶意应用/攻击者访问。

• 传输层保护不足

许多Android开发者使用不安全的方式进行数据传输,比如以HTTP的方式,或者没有正确实现SSL。这使得应用程序在网络上容易受到各种不同类型的攻击发生,例如从应用向服务器发送数据的时候进行数据包拦截,参数操作,修改响应数据,以便获得应用锁定区域的访问权限。

• 意外的数据泄露

当应用程序存储数据的位置本身是脆弱的时,这个漏洞就会产生。
这些位置可能包括剪贴板,URL缓存,浏览器的Cookies,HTML5数据存储,分析数据等等。
例如,一个用户在登录银行应用的时候已经把密码复制到了剪贴板,恶意应用程序通过访问用户剪贴板数据就可以获取密码了。

• 弱授权和身份认证

一个Android应用程序,如果它们试图在没有适当的安全措施的情况下通过客户端检测进行用户验证或者授权,那么就是存在风险的。应当指出的是,手机root后大多数客户端的保护都是可以绕过的。
因此,建议应用程序开发者使用适当的检测方法在服务器端进行身份验证和授权,然后,在移动设备上使用一个随机生成的令牌来验证用户。

• 密码破解

使用不安全的加密函数来加密数据组件,这可能包括一些已知的脆弱算法,如MD5, SHA1, RC2,甚至一个没有采取适当安全措施的定制开发的算法。

• 客户端注入

SQL注入:

run app.provider.query [Content Provider URI] --projection "* FROM SQLITE_MASTER WHERE type=‘table‘;- -"

• 通过不可信输入进行安全决策

在移动应用程序中,开发者应该清洗和检验用户输入或其它相关输入,不可信的输入可能会导致应用中的其它安全风险,如客户端注入。

• Session会话处理不当

在进行一个移动应用的session处理时,开发者需要关注很多的因素,比如适当过期的有效身份验证cookie,安全令牌创建,cookie生成和旋转,以及后台失败的无效session。
在Web应用和Android应用程序之间必须保持一个适当的安全同步。

• 缺乏二进制文件保护

不能够有效的阻止应用程序被逆向或者反编译。apktool,dex2jar等工具可以对Android应用进行逆向,从而使应用暴露出各种安全风险。为了防止应用被逆向,开发者可以使用proguardand和dasho等对应用进行加固。