Android 常見安全漏洞修復理論與實踐

2021-09-24 12:22:30 字數 2982 閱讀 9985

前段時間公司對應用在愛加密上進行了安全掃瞄,本文將基於愛加密的漏洞分析報告,針對部分內容,介紹理論修復實踐

最小化特權準則,即指元件只能供自身應用呼叫,盡可能禁止其他應用訪問及呼叫。

違反最小化特權的危害

若元件違反最小化特權準則,則會帶來如下危害:

攻擊者惡意呼叫應用的 activity, 修改程式的狀態或關鍵資料。舉個例子,如果您的應用的應用需要人臉認證才可以登入,一般需要儲存乙個人臉認證狀態,如果攻擊者修改了人臉狀態,改為已認證通過,則可以直接進入應用主頁。

通過呼叫 activity 內部的方法,可獲取私密資料,甚至造成拒絕服務和應用崩潰。例如,如果您的登入 activity 違反了最小化特權準則,攻擊裝者可通過反射,來呼叫您的activity有乙個私有方法,用來獲取賬號和密碼。

解決方案

設定 activity 元件android:exported = false必須 exported 的 activity 元件必須僅限於授權使用者或者特定元件呼叫

謹慎使用 intent-filter 屬性,若必須使用,則需強制設定android:exported = false

這裡涉及幾個概念,簡要介紹一下:

1. android:exported

適用於 android 四大元件,其作用是控制其他應用程式是否可以與當前元件互動。其中 true 為可以與之互動。若設定為 false ,意味著對於service元件,只有相同應用程式的元件或相同使用者 id 的程式才能啟動或繫結該服務。值得注意的是,如果該元件在androidmanifest中宣告了intent-filter, 該元件的 exported 屬性將自動設定為 true。若沒有宣告,則預設為 false.

2. 使用者 id (uid)

對於 android 應用,每個應用程式都有乙個 uid, 預設情況下,android 系統會為每乙個分配乙個互不相同的 uid. 如果兩個應用的 uid 不同,則不能相互呼叫。若希望相互呼叫,可進行如下操作:

設定android:shareduserid屬性,該屬性的作用是將乙個或多個應用程式共享同乙個 uid。具體**如下所示:

兩個應用需使用相同的簽名檔案進行簽名

// 應用一

// 應用二

3. 自定義安全許可權該標籤用於在 androidmanifest 中宣告乙個安全許可權,可用於此應用程式的特定元件或功能的訪問。例如乙個傳送廣播的業務,apk1 用於接收廣播,apk2 用於傳送廣播,apk1 此時僅想接收宣告了對應許可權的應用傳送的廣播。此時需要在 apk1 通過 定義安全許可權, 在 apk2 通過 申請 apk1 定義的安全許可權即可。 定義格式如下:

案例詳解 1在本例中,incomingdialog為會議振鈴和外呼介面。由於incomingdialog設定了 標籤 導致了android:exported = true, 因此,強制設定 exported 為 false 即可 修改前:

修改後:

這裡簡要介紹一下android:enabled屬性,該屬性適用於四大元件,控制該元件是否可以被系統初始化,預設為 true, 如果設定為 false, 對應控制項無法初始化,例如無法啟動服務。值得注意的是, 標籤中也會可以宣告該屬性,而且該 enabled 與 元件宣告都為 true 的情況下元件才可被初始化。修改點同樣是將 exported 改為 false

應用資料備份

違反資料越權備份的危害

攻擊者可利用此漏洞攻擊任何可以開啟 usb 除錯的應用非 root 裝置。

通過adb backup命令,將制定應用的資料拷貝到外設。一旦該應用資料被備份後,所有的使用者在這個應用的sharedpreferencesdb都可被攻擊者讀取。

通過adb restore命令,可指定某個備份資料,恢復應用的資料

雖然可以對備份後的檔案(.ab)進行加密,但是仍有許多任務具工具可對其解密,例如: android-backup-extractor, 下面將簡單介紹一下 adb backup 的用法

adb backup

adb backup [-system|-nosystem] -all [-apk|-noapk] [-shared|-noshared] -f 《檔名稱》 [需要備份的應用包名]
例如想備份包名為emergency.cicdi.com的資料,可以輸入如下**:

adb backup -nosystem -noapk -f emergency.ab emergency.cicdi.com
該命令會在當前目錄下生成名為 emergency.ab 的備份檔案。通過 android-backup-extractor ,可得到對應應用的sharedpreferencesdb檔案

解決方案

appscan 安全漏洞修復

1.會話標識未更新 登入頁面加入以下 request.getsession true invalidate 清空session cookie cookie request.getcookies 0 獲取cookie cookie.setmaxage 0 讓cookie過期 不是很明白session的...

Linux Bash安全漏洞修復

1.影響的系統包括 centos debian redhat ubuntu 2.檢查系統是否要修復 root mysql env x echo vulnerable bash c echo this is a test vulnerable this is a test root mysql 如果輸...

Appscan安全漏洞修復

1.會話標識未更新 登入頁面加入以下 request.getsession true invalidate 清空session cookie cookie request.getcookies 0 獲取cookie cookie.setmaxage 0 讓cookie過期 request.getse...