目前Android应用市场发展迅猛,很多开发者为了追求开发速度而忽略了应用安全。但由于Android系统的开源性和Java编程的特殊性,导致各种Android应用程序经常暴露漏洞。部分Android开发者仅对代码进行混淆处理或防止对App进行二次打包,对源代码的保护不到位。同时,也不清楚其中隐藏了什么漏洞。作为专注于为个人和企业移动应用开发者提供全方位应用安全服务的平台,腾讯御安全拥有丰富的漏洞特征库,可全面覆盖已知漏洞,可对99%的安卓APP进行漏洞风险扫描。同时,根据广大用户的漏洞扫描案例,总结出以下常见漏洞。1、大门敞开:常见漏洞攻击的3个入口1)导出组件导出组件是Android最常见的攻击入口,门槛最低。如果manifest中的组件设置不当,就有可能被任意调用,最常见的是拒绝服务攻击。示例:防护措施:对暴露于外界的组件输出要“最小化”,在发布前进行安全检测分析,提前发现风险。2)端口开放应用监听固定接口,使用sockets实现本地IPC和远程网络通信。这种监听固定端口的方式很容易被局域网中的攻击程序检测到。如果这些暴露的套接字没有协议加密,没有权限控制,很容易被用作攻击入口,比如拒绝服务,或者远程代码实现。示例:监控和扫描固定端口套接字的实现。如果没有实现访问控制,协议的安全性比较弱,后果会很严重。保护措施:端口随机化、访问控制、协议加密。3)插件加载插件加载设计很常见,soloading,dex加载...但是因为插件存储不安全,很容易被别人篡改和替换。如果在加载过程中没有验证,则可能被其他人使用。用于任意代码执行的假插件。示例:public目录下加载的插件Dex未经验证,存在任意代码执行风险...System.load用于so加载。如果不进行验证,则存在被替换或篡改的风险。保护措施:存放一定要安全,不要让别人碰撞。加载需要验证,我是我站的主人。2、窃取:两种常见的漏洞利用方式1)伪造通信常见的伪造通信类型包括:进程中组件间的Intent通信、远程Service通信、SocketIPC通信等,如果没有严格的通信验证,攻击者将通过Forge通信数据达到不可告人的目的。示例:通过暴露的远程服务伪造通信数据,实现应用程序的远程下载和安装,伪造套接字通信数据,实现应用程序特定的命令执行,窃取敏感数据。保护措施:协议数据必须加密,通信访问必须验证。2)伪造文件权限和校验失控,给攻击者可乘之机。代码文件存储在公共目录中。如果程序没有检查文件的完整性,很容易导致应用代码被劫持和注入。示例:sdcardpublic目录下so文件应用的进程信息代码注入防护措施:注意插件存储的安全性,尽量避免存储在public目录下;同时,必须对插件加载进行验证,避免被劫持和注入。APP作为海量用户信息的入口,对于涉及直接金钱交易或个人隐私的应用的重要性不言而喻。与iOS相比,Android应用市场对App的审核也较为宽泛,为很多漏洞提供了可乘之机。因此,Android应用程序必须采取自己的保护措施。同时,借助腾讯御安全等专业安全服务平台,除了提供专业级的加固解决方案外,还提供APP漏洞扫描服务。开发者可以发现常见的漏洞和Risk,完美避免大规模的工具攻击。(腾讯玉屏安原创,转载请注明出处)
