Android的2017年12月安全更新修補了一個嚴重漏洞,這個漏洞會讓攻擊者在不影響簽章的情況下修改已安裝的應用程式。讓攻擊者能夠存取受影響的設備(間接地)。研究人員在去年 7月首次發現這個漏洞(被指定為CVE-2017-13156,也被稱為Janus漏洞),受到影響的Android版本包括5.1.1到8.0;約有74%的Android設備安裝這些版本。
趨勢科技發現至少有一個應用程式使用了這技術。這特定應用程式利用此漏洞讓自己更難被行動安全軟體偵測。之後也可能用來侵害其他應用程式並存取使用者資料。
漏洞分析
Android應用程式的安裝套件(.APK檔案)其實是.ZIP壓縮檔。.ZIP檔案格式有幾個特點讓這種攻擊發生。看看底下的基本.ZIP檔案結構:
圖1、.ZIP檔案結構
檔案結構由三部分組成:檔案實體(File Entry)、核心目錄(Central Directory)和核心目錄結束(EOCD)。核心目錄包含壓縮檔內每個檔案的資料;應用程式使用此目錄來找出記憶體位置以存取所需的檔案。
不過每個檔案實體並不需要相鄰。甚至可以將任意資料放入.ZIP檔案的這部分,如下所示:
圖2、ZIP檔案結構(紅色為任意資料)
攻擊者可以在APK檔案開頭放進一個惡意DEX檔案(如下所示)。有漏洞的Android版本仍會將其識別為有效的APK檔案並且執行。
圖3、將DEX元件加入APK檔案
Android Runtime(ART)會從APK檔案載入DEX程式碼。當它檢查此檔案,因為標頭含有DEX程式碼,會被識別為DEX檔案並直接執行。ART將後面的程式碼(APK的原始內容)視為垃圾資料而加以忽略。但它仍會將此檔案視為有效的APK檔案。就跟一般應用程式一樣將APK資料當作資源存取。
漏洞影響
惡意軟體可以用兩種方式利用此漏洞。
第一種是用來隱藏有效負載(payload)。惡意軟體將自己偽裝成乾淨的DEX檔案,將惡意有效負載(payload)儲存在APK檔案內,之後再載入。這是下面所要討論的應用程式使用的方式。
第二種是用來更新已經安裝的應用程式而不被發覺。攻擊者可以用它來存取原始應用程式的受保護資料,如使用者憑證和私人資料。也可以利用假冒合法應用程式身份來繞過一些安全解決方案。
實際攻擊案例
當此漏洞被披露,趨勢科技檢查現有的惡意軟體樣本,看看是否有已知惡意軟體利用這漏洞。我們發現有一個惡意軟體ANDROIDOS_JANUS.A確實利用了此漏洞,但並非如預期的那樣。趨勢科技已經跟Google合作來採取適當措施並提醒使用者(Google已將此應用程式標記為惡意)。
此一應用程式之前出現在Google Play上時是個垃圾清理工具,但之後更新為新聞應用程式;並不在Play商店中。
圖4、使用Janus漏洞的新版應用程式圖示
惡意軟體利用這漏洞來動態載入程式碼。內嵌的DEX檔案只包含一個小的有效負載(payload),用於解密各資源內的實際有效負載(payload)並動態載入。這利用了Janus漏洞進行,先製作一個標頭帶有DEX檔案的惡意應用程式,接著是將實際的有效負載(payload)加入APK程式碼本身。這是為了繞過惡意軟體掃描程式,掃描程式會將這檔案作為DEX檔案處理並認定其為乾淨的,而忽略掉惡意程式碼。
它會在Android設備啟動時作為背景服務執行。它可以連到C&C伺服器並接收命令來安裝更多惡意軟體,做到比目前所表現行為還更多的事情。
圖5、下載其他惡意軟體的程式碼
據猜測,Janus漏洞可被用來惡意地更新設備上已經安裝的應用程式。我們所分析的程式碼顯示這個應用程式並不打算進行任何應用程式更新攻擊,而是利用Janus來躲避安全解決方案。但我們不能排除惡意軟體利用此攻擊作為下載器的可能性。
開發人員的解決措施
Android 7.0(Nougat)推出了新的簽章機制(version 2)。簽證憑證和雜湊摘要從meta section移到APK Signing Block,位於檔案實體和核心目錄之間。它保護了其他三個部分的完整性。
圖6、加入APK檔案的Signing Block
檔案實體間的間隙仍被允許。但它會檢查整個區段,從檔案開頭到APK Signing Block開頭:這代表進行任何改動都會破壞簽章的完整性檢查。還是有可能將DEX檔案注入標頭,但要攻擊成功需要重新簽章APK Singing Block。
為了兼顧相容性,開發人員通常會混合簽章機制(v1和v2)。解決措施的實質影響因設備而異。在支援的設備中,會用降版保護(Rollback Protection)強制實施v2機制。
圖7、降版保護(Rollback Protection)
這攻擊仍可能發生在只使用v1簽章機制的舊版Android設備上。但在更多設備使用Nougat前,我們建議開發人員繼續使用混合簽章。
結論
這個漏洞的影響與幾年前Android的Master Key漏洞大致相同。這兩個漏洞都可以在使用者不知情下修改合法的應用程式。
如果攻擊此漏洞的惡意應用程式進入了應用程式商店,則使用者將會面臨兩個風險:惡意應用程式會被作為合法應用程式派送,或是經由應用程式商店安裝的惡意應用程式會修改大量的合法應用程式。
並非所有行動安全解決方案都夠應對此一問題。嵌入普通應用程式的惡意DEX程式碼可以避開許多安全解決方案。企業的MDM解決方案可能也無法偵測這些應用程式,而且它們也容易被惡意應用程式修改。廠商必須提高掃描和偵測惡意Android應用程式的能力。
趨勢科技的行動安全防護(也在Google Play上提供)已經能夠偵測這些類型的威脅。行動安全防護企業版提供了設備、合規和應用程式管理,資料保護和設定設置,同時可以保護設備對抗漏洞攻擊,防止未經授權的存取以及偵測/封鎖惡意軟體和詐騙網站。
趨勢科技的行動應用程式信譽評比服務(MARS)使用業界領先的沙箱和機器學習技術來涵蓋Android和iOS威脅。它可以保護使用者免於惡意軟體、零時差和已知漏洞、隱私洩漏和應用程式漏洞的侵害。
入侵指標
具以下雜湊值的應用程式連結到此威脅:
SHA256 | 套件名稱 | 標籤 |
a28a10823a9cc7d7ebc1f169c544f2b14afc8b756087b5f2c3a50c088089f07d | com.fleeeishei.erabladmounsem | World News |
@原文出處:Janus Android App Signature Bypass Allows Attackers to Modify Legitimate Apps
作者:Veo Zhang(行動威脅分析師)