文章目录
- 前言
- OWASP TOP10 移动安全漏洞(安卓)2017
- 一、脆弱的服务器端安全控制
- 二、不安全的数据存储
- 三、传输层保护不足
- 四、意外的数据泄露
- 五、弱授权和身份认证
- 六、密码破解
- 七、客户端注入
- 八、通过不可信输入进行安全决策
- 九、Session 会话处理不当
- 十、缺乏二进制文件保护
前言
OWASP TOP10 移动安全漏洞(安卓) 2017
OWASP TOP10 移动安全漏洞(安卓)2017
一、脆弱的服务器端安全控制
在 OWASP 排第一的漏洞是“脆弱的服务器端安全控制”,顾名思义,就是没有 以一个安全的方式从移动应用程序向服务器端发送数据,或在发送数据时暴露了 一些敏感的 API。例如,考虑对一个 Android 应用程序登录服务器的凭据进行身份验证,而没有对 输入进行验证。攻击者可以以这样一种方式修改凭证来获得服务器敏感的或未经 授权的区域。这是移动应用以及 Web 应用程序都存在的一个漏洞。
二、不安全的数据存储
在设备上存储任意用户都可以访问的与应用相关的信息。许多 Android 应用在 shared preferences,SQLite(以明文形式)或外部存储器中存储着秘密的用户相 关信息,或应用程序信息。开发者应始终牢记,即使把敏感信息存储在/data/data/package-name 目录中, 但是只要手机 root 了,就能够被恶意应用/攻击者访问。
三、传输层保护不足
许多 Android 开发者使用不安全的方式进行数据传输,比如以 HTTP 的方式,或者没有正确实现 SSL。这使得应用程序在网络上容易受到各种不同类型的攻击发 生,例如从应用向服务器发送数据的时候进行数据包拦截,参数操作,修改响应 数据,以便获得应用锁定区域的访问权限。
四、意外的数据泄露
当应用程序存储数据的位置本身是脆弱的时,这个漏洞就会产生。这些位置可能包括剪贴板,URL 缓存,浏览器的 Cookies,HTML5 数据存储, 分析数据等等。例如,一个用户在登录银行应用的时候已经把密码复制到了剪贴板,恶意应用程 序通过访问用户剪贴板数据就可以获取密码了。
五、弱授权和身份认证
一个 Android 应用程序,如果它们试图在没有适当的安全措施的情况下通过客户 端检测进行用户验证或者授权,那么就是存在风险的。应当指出的是,手机 root 后大多数客户端的保护都是可以绕过的。因此,建议应用程序开发者使用适当的检测方法在服务器端进行身份验证和授权, 然后,在移动设备上使用一个随机生成的令牌来验证用户。
六、密码破解
使用不安全的加密函数来加密数据组件,这可能包括一些已知的脆弱算法,如 MD5, SHA1, RC2,甚至一个没有采取适当安全措施的定制开发的算法。
七、客户端注入
apk shell中
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等对应用进行加固。