亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Janus安卓簽名漏洞預警分析

發布時間:2021-12-20 19:42:03 來源:億速云 閱讀:136 作者:柒染 欄目:大數據

這期內容當中小編將會給大家帶來有關如何進行Janus安卓簽名漏洞預警分析,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

0x00背景介紹


2017年7月31日 GuardSquare向Google報告了一個簽名漏洞并于當天收到確認。Google本月修復了該漏洞,編號CVE-2017-13156。

經過360CERT分析確認,該問題確實存在,影響較為嚴重。攻擊者可以繞過簽名驗證機制構造惡意程序更新原有的程序。

0x01 事件概述


該漏洞產生的根源在于將DEX文件和APK文件拼接之后校驗簽名時只校驗了文件的APK部分,而虛擬機執行時卻執行了文件的DEX部分,導致了漏洞的發生。由于這種同時為APK文件和DEX文件的二元性,聯想到羅馬的二元之神Janus,將該漏洞命名為Janus漏洞。

0x02 事件影響


影響Android5.0-8.0的各個版本和使用安卓V1簽名的APK文件。

0x03 事件詳情


1.     技術細節

Android支持兩種應用簽名方案,一種是基于JAR簽名的方案(v1方案),另一種是Android Nougat(7.0)中引入的APK簽名方案v2(v2方案)。

如何進行Janus安卓簽名漏洞預警分析

v1簽名不保護APK的某些部分,例如ZIP元數據。APK驗證程序需要處理大量不可信(尚未經過驗證)的數據結構,然后會舍棄不受簽名保護的數據。這會導致相當大的受攻擊面。此外,APK 驗證程序必須解壓所有已壓縮的條目,而這需要花費更多時間和內存。為了解決這些問題,Android7.0中引入了APK簽名方案v2。在驗證期間,v2方案會將APK文件視為 Blob,并對整個文件進行簽名檢查。對APK進行的任何修改(包括對ZIP元數據進行的修改)都會使 APK 簽名作廢。這種形式的APK驗證不僅速度要快得多,而且能夠發現更多種未經授權的修改。

如何進行Janus安卓簽名漏洞預警分析        如果開發者只勾選V1簽名不會有什么影響,但是在7.0上不會使用更安全的V2簽名驗證方式;只勾選V2簽名7.0以下無法正常安裝,7.0以上則使用了V2的方式驗證;同時勾選V1和V2則所有機型都沒問題。此次出現問題的是V1簽名方案。簡單地說,把修改過的dex文件附加到V1簽名的apk文件之前構造一個新的文件,V1方案只校驗了新文件的apk部分,而執行時虛擬機根據magic header只執行了新文件的dex部分。

如何進行Janus安卓簽名漏洞預警分析

         我們來看一下已經公布的POC (https://github.com/V-E-O/PoC/tree/master/CVE-2017-13156)的原理。janus.py接受dex文件和apk文件作為輸入,組合起來輸出。

         讀取dex文件:

如何進行Janus安卓簽名漏洞預警分析

讀取apk文件:

如何進行Janus安卓簽名漏洞預警分析

      Apk其實就是一個zip。簡單地說zip文件格式由文件數據區、中央目錄結構和中央目錄結束節組成。

如何進行Janus安卓簽名漏洞預警分析

其中中央目錄結束節有一個字段保存了中央目錄結構的偏移。代碼中搜索中央目錄結束節的固定結束標記x06054b50定位到中央目錄結構的偏移,將其加上dex文件的大小,因為我們要把dex文件插到apk前面。

如何進行Janus安卓簽名漏洞預警分析

      接下來依次更新中央目錄結構數組中的deHeaderOffset字段也就是本地文件頭的相對位移字段。通過deHeaderOffset字段可以直接獲取到對應文件的文件數據區結構的文件偏移,就可以直接獲取到對應文件的壓縮數據了。同樣也是因為dex文件插在前面了所以直接加上dex文件的大小。

如何進行Janus安卓簽名漏洞預警分析

最后更新dex部分的file_size字段為整個dex+apk的大小,使用alder32算法和SHA1算法更新checksum和signature字段。

如何進行Janus安卓簽名漏洞預警分析

如何進行Janus安卓簽名漏洞預警分析

下面做一個非常簡單的測試。

在APK文件中寫一個彈出Hello的toast,同時采用V1簽名方案簽名:

如何進行Janus安卓簽名漏洞預警分析

安裝到手機上:

如何進行Janus安卓簽名漏洞預警分析

將編譯好的apk解壓得到dex文件,baksmali.jar反編譯dex文件得到smali代碼,將hello隨便改成另外一個字符串:

如何進行Janus安卓簽名漏洞預警分析

用smali.jar回編譯成dex文件,使用提供的腳本把dex文件和原來的apk打包生成out.apk:

如何進行Janus安卓簽名漏洞預警分析

安裝到手機上成功通過了簽名校驗并且執行了修改的dex中的代碼:

如何進行Janus安卓簽名漏洞預警分析

在我android8.0沒有打補丁的手機上如果采用了V2簽名方案不受該漏洞影響,更新不了原來正常的程序:

如何進行Janus安卓簽名漏洞預警分析

2.     補丁分析

補丁非常簡單,強制校驗了zip的frSignature:

如何進行Janus安卓簽名漏洞預警分析

0x04 修復建議


1、開發者在開發應用程序時勾選V2簽名方案

2、各廠商應及時發布補丁,確保用戶盡快更新系統

3、用戶應在正規的應用市場下載程序

上述就是小編為大家分享的如何進行Janus安卓簽名漏洞預警分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

香河县| 孟州市| 永兴县| 武川县| 井陉县| 湘西| 阳谷县| 长治县| 北流市| 新平| 绥中县| 武鸣县| 贵南县| 长子县| 进贤县| 南昌市| 寿光市| 青海省| 昆明市| 定西市| 鲁甸县| 刚察县| 会宁县| 天台县| 抚宁县| 容城县| 措美县| 江门市| 肇源县| 宜兰市| 青川县| 友谊县| 江油市| 平顺县| 德化县| 香格里拉县| 新竹县| 兴城市| 芜湖县| 阳西县| 什邡市|