Android Apk安全检测出Janus漏洞

Janus漏洞指的是黑客绕过V1签名,将恶意Dex拼接在Apk中.这个漏洞只出现在仅使用V1签名的apk上.
这里我不讲Janus漏洞产生的原因,只说作为开发如何解决,如果有兴趣想了解背后的原因,请自行百度.
v2签名是Android 7.0以后引入的.
Android打包中配置v2签名,很简单,只需要在gradle文件添加一行配置

 signingConfigs {
        debugConfig {
            keyAlias DEBUG_KEY_ALIAS
            keyPassword DEBUG_KEY_PASSWROD
            storeFile file(DEBUG_STORE_FILE)
            storePassword DEBUG_STORE_PASSWORD
            //开启v2签名
            v2SigningEnabled true

        }
        releaseConfig {
            keyAlias RELEASE_KEY_ALIAS
            keyPassword RELEASE_KEY_PASSWROD
            storeFile file(RELEASE_STORE_FILE)
            storePassword RELEASE_STORE_PASSWORD
            //开启v2签名
            v2SigningEnabled true
        }
    }

值得注意的是,如果打包之后,还需要加固的话,请记得,加固之后请重新签名

检测apk使用的签名类型的方法如下:
1、adb 命令

adb shell dumpsys package xxx | grep apkSigningVersion

输出:

 apkSigningVersion=2

2、apksigner
apksigner在Android sdk的build-tools目录下的对应版本下,我使用的28.0.3

./apksigner verify -v 

输出

Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
Verified using v3 scheme (APK Signature Scheme v3): false
Number of signers: 1

表示apk开启了v1和v2签名.


致敬前辈,砥砺前行!

你可能感兴趣的:(Android Apk安全检测出Janus漏洞)