首頁 -> 安全研究

安全研究

安全公告
綠盟科技安全公告(SA2013-02)

NSFOCUS安全小組([email protected])
http://www.nsfocus.com

Android APK文件名長度數字簽名繞過漏洞

發布日期:2013-11-08

CVE ID:CVE-2013-6792

受影響的軟件及系統:
====================
Google Android <= 4.3

未受影響的軟件及系統:
======================
Google Android 4.4

綜述:
======
NSFOCUS安全研究團隊發現Google Android系統在APK簽名驗證中存在一個安全漏洞,可能造成攻擊者發布惡意APK程序并繞過Android的簽名驗證機制。

分析:
======
Android是基于Linux開放性內核的操作系統,是Google公司在2007年發布的手機操作系統。

Android存在一個安全漏洞,可使攻擊者修改APK代碼,將合法應用轉變為惡意木馬,而不破壞應用原有的簽名。

Andorid系統在校驗APK文件簽名時,使用中央目錄頭(central directory header)中的存儲的文件名長度(filename length)來計算文件數據的偏移,然后對文件數據進行簽名驗證。如下:
--------------------------------------------------------------------------
public InputStream getInputStream(ZipEntry entry) throws IOException {
// Make sure this ZipEntry is in this Zip file. We run it through the name lookup.
entry = getEntry(entry.getName());
if (entry == null) {
return null;
}

......
rafStream.skip(entry.nameLength + localExtraLenOrWhatever); // entry.nameLength
......
}
--------------------------------------------------------------------------


然而在執行dexopt操作加載classes.dex時,則是使用本地文件頭(local file header)中的文件名長度來計算文件數據的偏移,如下:
--------------------------------------------------------------------------
int dexZipGetEntryInfo(const ZipArchive* pArchive, ZipEntry entry,
int* pMethod, size_t* pUncompLen, size_t* pCompLen, off_t* pOffset,
long* pModWhen, long* pCrc32)
{
int ent = entryToIndex(pArchive, entry);
......
off_t dataOffset = localHdrOffset + kLFHLen
+ get2LE(lfhBuf + kLFHNameLen) + get2LE(lfhBuf + kLFHExtraLen); // kLFHNameLen
......
}
--------------------------------------------------------------------------

Android并沒有檢查這兩個文件名長度是否一致,因此攻擊者可以在擁有正確簽名的合法classes.dex文件后面附加一個惡意的classes.dex,并調整本地文件頭中的文件名長度,使其指向惡意文件,從而繞過Android的簽名檢測。

解決方法:
==========
在安裝漏洞相應的補丁之前,可以采用以下的臨時解決方案來免受漏洞的影響:

* 只安裝來自可信來源的APK程序。

廠商狀態:
==========
2013.08.30  通知廠商
2013.08.31  廠商要求提供PoC代碼
2013.09.02  提供了PoC代碼
2013.11.01  廠商發布Android 4.4,修復了此安全漏洞

廠商已經在Android 4.4中修復了相關漏洞,請升級到最新版本:
http://www.android.com/

附加信息:
==========
本安全漏洞由綠盟科技安全研究團隊(NSFOCUS Security Team)的張云海發現。

聲 明
==========

本安全公告僅用來描述可能存在的安全問題,綠盟科技不為此安全公告提供任何保證或承諾。由于傳播、利用此安全公告所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,綠盟科技以及安全公告作者不為此承擔任何責任。綠盟科技擁有對此安全公告的修改和解釋權。如欲轉載或傳播此安全公告,必須保證此安全公告的完整性,包括版權聲明等全部內容。未經綠盟科技允許,不得任意修改或者增減此安全公告內容,不得以任何方式將其用于商業目的。

關于綠盟科技
============

綠盟科技(NSFOCUS Co., Ltd.)是中國網絡安全領域的領導企業,致力于網絡和系統安全問題的研究、高端網絡安全產品的研發、銷售與網絡安全服務,在入侵檢測/保護、遠程評估、 DDoS攻擊防護等方面提供具有國際競爭能力的先進產品,是國內最具安全服務經驗的專業公司。有關綠盟科技的詳情請參見: http://www.nsfocus.com

© 2020 綠盟科技
彩票网站哪个最正规