Android Janus漏洞修复

Android Janus漏洞修复## 标题

  • 什么是Janus漏洞
    自诞生以来,Android就要求开发者对应用进行签名。在应用进行更新时,只有更新包的签名与现有的app的签名一致的情况下,Android运行时才允许更新包安装到系统。若app被恶意的攻击者修改,重新打包签名,由于攻击者无法获得原始开发者的私钥,其重打包的签名与原始签名不一致,系统会拒绝安装此更新。这样可以保证每次的更新一定来自原始的开发者。然而Google在2017年4日发布的Android安全公告中提到一个Android的漏洞,利用该漏洞的攻击者可修改app而不影响其原始签名。该漏洞产生的根源在于:一个文件可以同时是APK文件和DEX文件。由于这种同时为APK文件和DEX文件的二元性,联想到罗马的二元之神Janus,将该漏洞命名为:Janus漏洞。该漏洞仅影响基于 JAR 签名的方案(v1 方案)。不影响自Android 7.0 以来引入的 APK 签名方案 v2(v2 方案)。

  • 发现Janus漏洞
    昨天我的领导突然发了一份文档给我并对我讲这是网信办对我们APP的检查报告,让我十万火急地去解决掉,我打开乍一眼看到Janus漏洞也是很懵逼的,这是什么鬼(第一次听说),没办法只能去某度上去科普了,查了很多资料觉得网上说的不够详细所以决定在解决这个问题后把自己踩的坑填起来。

  • 解决Janus漏洞
    网上说产生这个漏洞的原因是因为APP在签名打包的只使用了V1(Jar Signature),
    Android Janus漏洞修复_第1张图片
    这就奇了怪了哈,我明明在用Android studio 打包的时候用的是V1+V2签名生成APK,怎么生成APK后就只
    Android Janus漏洞修复_第2张图片
    剩V1签名,V2签名就失效了呢? 正在纳闷的时候一个神奇的检查工具被我找到了(嘻嘻,心中难以抑制地窃喜),是一款在Github开源关于APK Signature 签名校验工具(https://github.com/bihe0832/AndroidGetAPKInfo);将这个开源Android项目克隆下来用Android Studio运行起来然后按照AndroidGetSignature项目里面的README.md文件指导获取你自己APP签名相关信息。Android Janus漏洞修复_第3张图片
    Android Janus漏洞修复_第4张图片
    前面我说过我打包签名的时候明明勾上了V1+V2,怎么一检测V1和V2签名都失败了呢?但是签名打包完成我做了一件事情很值得我怀疑,那就是我使用了第三方梆梆加固对App进行了加固,后经过查询果然有相同的网友已经提前踩过这个坑了。那就是用第三方加固会破坏原有V1、V2的签名。后来为了验证下是否是加固导致签名失效,然后直接拿了一个用Android studio使用V1、V2签名的包直接测试。Android Janus漏洞修复_第5张图片
    我靠这是赤裸裸地对比啊! 就是加固搞的鬼,但是目前市场的APP基本上都要加固啊、混淆啊做一些列的防反编译保护措施。目前市场上的加密工具有梆梆加密、爱加密、腾讯云加密、360加密······
    a.梆梆加固工具
    Android Janus漏洞修复_第6张图片
    b.腾讯云加固工具

Android Janus漏洞修复_第7张图片

c.360加固工具

Android Janus漏洞修复_第8张图片
经过加固后APP的V2签名基本上都被破坏导致失效,虽然梆梆、腾讯云都提供了加固后再签名打包,但是基本上都是使用的V1签名,这样打包出来的APK就出现了Janus漏洞,存在被攻击的风险,经过不断地查阅资料发现360加固工具在加固后可以提供V2签名;Android Janus漏洞修复_第9张图片
彷佛在迷失的海洋中突然看到了一叶扁舟那个欣喜那个若狂真是能激动得出XIANG,然后赶紧打个包用360加固再签名用GetAPKInfo第三方开源工具检测,检测结果如下:Android Janus漏洞修复_第10张图片

又是赤裸裸地对比,肉眼可见的区别哈,真是太感谢360加固助手了,完美地解决了APK加固的问题又解决了又解决了因为加固导致V2签名失效的问题。

总结一下吧!好久没写东西了,实在是不痛彻心扉也写不出什么东西,经过自己不断地折腾得出了几点经验觉得还是写下了比较能记得住,随着Android系统的不断升级,如果只是使用V1(Jar Signature)签名会有Janus漏洞存在被攻击的风险,但是如果只使用V2(Full APK Signature)会存在在Android7.0以下系统安装失败,亲测在Android5.1系统上安装失败(安装包解析失败);随着Android系统的升级我相信会有更多问题出现在低版本开发出来的APK上,以上如果有不正确的地方还请留言指出,相互学习共同进步。

你可能感兴趣的:(开发遇坑心得总结,Android,janus漏洞修复)