Android靜態安全檢測 -> 密鑰硬編碼

密鑰硬編碼 - SecretKeySpec


一、API


1. 繼承關係


【1】java.lang.Object

【2】javax.crypto.spec.SecretKeySpec


2. 主要方法


【1】SecretKeySpec(byte[ ] key, String algorithm)



【2】參考鏈接


https://developer.android.com/reference/javax/crypto/spec/SecretKeySpec.html


二、觸發條件


1. 定位SecretKeySpec初始化方法的位置


【1】對應到smali語句中的特徵

'Ljavax/crypto/spec/SecretKeySpec;-><init>([BLjava/lang/String;)V'


2. 方法內定位String.getBytes()的位置


【1】對應到smali語句中的特徵

'Ljava/lang/String;->getBytes(Ljava/lang/String;)[B'


3. 取出String對應寄存器的名稱V1


4. 賦值判斷:const-string V1, "test123"


三、漏洞原理


【1】應用程序在加解密時,使用硬編碼在程序中的密鑰,攻擊者通過反編譯拿到密鑰可以輕易解密APP通信數據


【2】更多內容


http://bbs.pediy.com/showthread.php?t=210263&highlight=密鑰+鑰硬+硬編+編碼+碼


四、修復建議


【1】密鑰加密存儲或者經過變形處理後用於加解密運算,切勿硬編碼到代碼中


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章