0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Android14應(yīng)用安全措施

哆啦安全 ? 來源:哆啦安全 ? 2023-09-09 14:14 ? 次閱讀

一、前臺(tái)服務(wù)類型

targetSdkVersion 34 的情況下,必須為應(yīng)用內(nèi)的每個(gè)前臺(tái)服務(wù)(foreground-services) 指定至少一種前臺(tái)服務(wù)類型。

前臺(tái)服務(wù)類型是在Android10引入的,通過android:foregroundServiceType 可以指定 的服務(wù)類型,可供選擇的前臺(tái)服務(wù)類型有:

camera
connectedDevice
dataSync
health
location
mediaPlayback
mediaProjection
microphone
phoneCall
remoteMessaging
shortService
specialUse
systemExempted

  
二、Android14應(yīng)用安全

1.對(duì)pending/implicit intent的限制

對(duì)于面向Android14的應(yīng)用,Android通過以下方式限制應(yīng)用向內(nèi)部應(yīng)用組件發(fā)送隱式intent:

(1).隱式intent僅傳遞給導(dǎo)出的組件,應(yīng)用必須使用明確的intent來交付給未導(dǎo)出的組件,或者將組件標(biāo)記為已導(dǎo)出(exported)。

(2).如果應(yīng)用創(chuàng)建一個(gè)mutable pending intent,但intent未指定組件或包,系統(tǒng)現(xiàn)在會(huì)拋出異常。

這些更改可防止惡意應(yīng)用攔截只供給用內(nèi)部組件使用的隱式intent,例如:


如果應(yīng)用嘗試使用隱式intent啟動(dòng)該 activity,則會(huì)拋出異常:

//Throws an exception when targeting Android 14.
context.startActivity(Intent("com.example.action.APP_ACTION"))

要啟動(dòng)未導(dǎo)出的Activity,應(yīng)用應(yīng)改用顯式Intent:

//This makes the intent explicit.
val explicitIntent =
       Intent("com.example.action.APP_ACTION")
explicitIntent.apply {
   package = context.packageName
}
context.startActivity(explicitIntent)

2.運(yùn)行時(shí)注冊(cè)的廣播接收器必須指定導(dǎo)出行為

以Android14為目標(biāo),并使用context-registered

receivers(ContextCompat.registerReceiver)應(yīng)用和服務(wù)的需要指定一個(gè)標(biāo)志,以指示接收器是否應(yīng)導(dǎo)出到設(shè)備上的所有其他應(yīng)用:分別為RECEIVER_EXPORTED或RECEIVER_NOT_EXPORTED。

val filter = IntentFilter(APP_SPECIFIC_BROADCAST)
val listenToBroadcastsFromOtherApps = false
val receiverFlags = if (listenToBroadcastsFromOtherApps) {
   ContextCompat.RECEIVER_EXPORTED
} else {
   ContextCompat.RECEIVER_NOT_EXPORTED
}
ContextCompat.registerReceiver(context, br, filter, receiverFlags)

3.僅接收系統(tǒng)廣播的接收器例外

如果應(yīng)用僅通過Context#registerReceiver方法為系統(tǒng)廣播注冊(cè)接收器時(shí),那么它可以不在注冊(cè)接收器時(shí)指定標(biāo)志,例如 android.intent.action.AIRPLANE_MODE。

4.更安全的動(dòng)態(tài)代碼加載

如果應(yīng)用以Android14為目標(biāo)平臺(tái)并使用動(dòng)態(tài)代碼加載(DCL),則所有動(dòng)態(tài)加載的文件都必須標(biāo)記為只讀,否則,系統(tǒng)會(huì)拋出異常。

建議應(yīng)用盡可能避免動(dòng)態(tài)加載代碼,因?yàn)檫@樣做會(huì)大大增加應(yīng)用因代碼注入或代碼篡改而受到危害的風(fēng)險(xiǎn)。

如果必須動(dòng)態(tài)加載代碼,請(qǐng)使用以下方法將動(dòng)態(tài)加載的文件(例如:DEX、JAR或APK文件)在文件打開后和寫入任何內(nèi)容之前立即設(shè)置為只讀:

val jar = File("DYNAMICALLY_LOADED_FILE.jar")
val os = FileOutputStream(jar)
os.use {
   // Set the file to read-only first to prevent race conditions
   jar.setReadOnly()
   // Then write the actual file content
}
val cl = PathClassLoader(jar, parentClassLoader)

5.處理已存在的動(dòng)態(tài)加載文件

為防止現(xiàn)有動(dòng)態(tài)加載文件拋出異常,我們建議可以嘗試在應(yīng)用中再次動(dòng)態(tài)加載文件之前,刪除并重新創(chuàng)建這些文件。

重新創(chuàng)建文件時(shí),請(qǐng)按照前面的指導(dǎo)在寫入時(shí)將文件標(biāo)記為只讀,或者將現(xiàn)有文件重新標(biāo)記為只讀,但在這種情況下,強(qiáng)烈建議首先驗(yàn)證文件的完整性(例如,通過根據(jù)可信值檢查文件的簽名),以幫助保護(hù)應(yīng)用免受惡意操作。

6.Zip path traversal

對(duì)于針對(duì)Android14的應(yīng)用,Android通過以下方式防止Zip路徑遍歷漏洞

如果zip文件條目名稱包含".."或以"/"開頭,則ZipFile(String)和ZipInputStream.getNextEntry()會(huì)拋出一個(gè)ZipException。

應(yīng)用可以通過調(diào)用dalvik.system.ZipPathValidator.clearCallback()選擇退出驗(yàn)證。

7.從后臺(tái)啟動(dòng)活動(dòng)的附加限制

針對(duì)Android14的應(yīng)用,系統(tǒng)進(jìn)一步限制了應(yīng)用在后臺(tái)啟動(dòng)Activity的時(shí)間

(1).當(dāng)應(yīng)用使用PendingIntent#send()發(fā)送PendingIntent以及類似行為時(shí),如果應(yīng)用想要授予其自己的后臺(tái)service啟動(dòng)權(quán)限以啟動(dòng)pending intent,則該應(yīng)用現(xiàn)在必須選擇加入一個(gè) ActivityOptions,具體為帶有

setPendingIntentBackgroundActivityStartMode(MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
(2).當(dāng)一個(gè)可見應(yīng)用使用bindService()綁定另一個(gè)在后臺(tái)運(yùn)行的應(yīng)用的服務(wù)時(shí),如果該可見應(yīng)用想要將其自己的后臺(tái)activity啟動(dòng)權(quán)限授予綁定服務(wù),則它現(xiàn)在必須選擇加入 BIND_ALLOW_ACTIVITY_STARTS 標(biāo)志。

這些更改擴(kuò)展了現(xiàn)有的一組限制 ,通過防止惡意應(yīng)用濫用 API 從后臺(tái)啟動(dòng)破壞性活動(dòng)來保護(hù)用戶。

8.Android14將禁止修改系統(tǒng)內(nèi)置根證書

Android14不再允許開發(fā)者修改系統(tǒng)內(nèi)置根證書進(jìn)行調(diào)試,這意味著開發(fā)者無法通過諸如替換證書或中間人劫持的方式來檢測某些流量。

Android系統(tǒng)的證書存儲(chǔ)庫位于/system/etc/security/cacerts/,盡管從Android7.0開始開發(fā)者無法直接修改證書庫,但如果root了那么還可以修改證書庫路徑,直接注入自己需要的證書,比如自簽名的泛證書。

而在Android14中,谷歌做了一項(xiàng)可以快速反應(yīng)的安全措施:通過Google Play更新安卓系統(tǒng)的證書庫。

這樣做也不是沒有原因,以前證書綁定在系統(tǒng)里,谷歌無法直接更新,這導(dǎo)致有些證書被吊銷后谷歌也無法及時(shí)操作,這也導(dǎo)致注入Let's Encrypt 因?yàn)樾枰嫒菖f版安卓系統(tǒng),不得不推遲證書更新,因?yàn)樾伦C書不受舊版安卓系統(tǒng)的信任。

后續(xù)谷歌可以隨時(shí)通過Google Play更新證書庫,包括加載新的ROOT CA和吊銷某些ROOT CA,這讓谷歌可以快速應(yīng)對(duì)CA行業(yè)的某些問題。

然而問題在于這種新的更新方法不再從/system/etc/security/cacerts/讀取證書,而是從另一個(gè)路徑/apex/com.android.conscrypt/cacerts/讀取證書。

而APEX容器背后確切的機(jī)制很難完全理解,因?yàn)榇嬖诤芏嗉?xì)節(jié)沒有公布出來,而在測試的時(shí)候開發(fā)者也發(fā)現(xiàn)嘗試修改這個(gè)目錄是沒用的,系統(tǒng)會(huì)直接忽略修改。

因此即便注入自簽名的證書也無法被系統(tǒng)讀取,所以也沒法再使用中間人之類的手段進(jìn)行劫持,來達(dá)到調(diào)試某些TLS流量的目的。

好消息是Android14的這項(xiàng)變化有助于大幅度提高Android對(duì)CA行業(yè)的響應(yīng)速度,例如快速吊銷或信任證書,這將有助于提高Android設(shè)備的安全性。 ?
?
壞消息就是對(duì)開發(fā)者和安全研究人員來說這就很難受了,因?yàn)闊o法讓系統(tǒng)信任自簽名證書,這將對(duì)調(diào)試和安全分析工作產(chǎn)生嚴(yán)重影響。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3903

    瀏覽量

    126611
  • 接收器
    +關(guān)注

    關(guān)注

    14

    文章

    2441

    瀏覽量

    71527
  • 谷歌
    +關(guān)注

    關(guān)注

    27

    文章

    6080

    瀏覽量

    104352
  • 廣播
    +關(guān)注

    關(guān)注

    1

    文章

    305

    瀏覽量

    22956

原文標(biāo)題:Android14或更高版本(安全措施)

文章出處:【微信號(hào):哆啦安全,微信公眾號(hào):哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    電子發(fā)燒友網(wǎng)站新上線賬號(hào)安全措施:異地登陸檢測提醒

    論壇在被各種攻擊折磨,最近新上線一項(xiàng)賬號(hào)安全措施:1.異地登陸檢測提醒,根據(jù)大家登錄是否跨省做異地登錄提示,需要驗(yàn)證后才可以登錄成功。2.驗(yàn)證頁面,用戶只需要將自己綁定的郵箱或手機(jī)號(hào)完整填寫即可完成
    發(fā)表于 06-15 18:24

    嵌入式系統(tǒng)的安全性問題是什么?有什么安全措施嗎?

    嵌入式系統(tǒng)的安全性問題是什么?有什么安全措施嗎?
    發(fā)表于 04-28 06:54

    NTAG 424 DNA復(fù)制更改后的值本身并將其放在不同的標(biāo)簽中不會(huì)損害安全措施嗎?

    我正在考慮為我的產(chǎn)品使用身份驗(yàn)證標(biāo)簽,例如 NTAG 424 DNA 芯片,我對(duì)其防止復(fù)制的能力有疑問,我想創(chuàng)建一個(gè)安全的解決方案,但我擔(dān)心NTAG 424 DNA 芯片生成的 URL。我聽說由于安全措施,每次執(zhí)行讀取操作時(shí)值都會(huì)改變。但是,復(fù)制更改后的值本身并將其放在不
    發(fā)表于 03-30 09:00

    不停電作業(yè),安全措施要保證

    不停電作業(yè),安全措施要保證    變電所低壓帶電作業(yè),一要求開工作票,完成保證安全的組織措施;二要求穿戴好防護(hù)用品,使用絕彖工具,站在絕彖
    發(fā)表于 04-17 12:25 ?1682次閱讀

    如何采取安全措施防止物聯(lián)網(wǎng)攻擊影響您的數(shù)據(jù)

    這些年來,隨著越來越多的用戶選擇聯(lián)網(wǎng)的小工具和電器,物聯(lián)網(wǎng)設(shè)備在市場上迅速激增。為了滿足用戶日益增長的需求,制造商們正在將他們的設(shè)備送出倉庫,而沒有采取適當(dāng)?shù)?b class='flag-5'>安全措施。 缺乏安全措施是物聯(lián)網(wǎng)
    發(fā)表于 06-03 16:19 ?921次閱讀

    物聯(lián)網(wǎng)數(shù)量增加 安全措施需得加強(qiáng)

    如今,全球各地應(yīng)用的物聯(lián)網(wǎng)設(shè)備已經(jīng)達(dá)到數(shù)十億臺(tái),并且數(shù)量每年都在大量增加。不幸的是,正在開發(fā)和部署的許多物聯(lián)網(wǎng)設(shè)備卻缺乏關(guān)鍵的安全功能,這使得它們很容易成為黑客和僵尸網(wǎng)絡(luò)的目標(biāo)。如果沒有適當(dāng)?shù)?b class='flag-5'>安全措施,這些物聯(lián)網(wǎng)設(shè)備可能會(huì)導(dǎo)致災(zāi)難性事件。
    發(fā)表于 03-20 15:48 ?470次閱讀

    3D打印機(jī)助力生物特征識(shí)別安全措施

    指紋識(shí)別曾被認(rèn)為是保護(hù)電腦、筆記本電腦和移動(dòng)設(shè)備的終極安全措施。
    的頭像 發(fā)表于 04-13 15:36 ?3392次閱讀

    電池的安全性問題有哪些安全措施?

    ,還可能造成火災(zāi)、爆炸等安全事故。因此,電池的安全性問題必須得到重視。 ? 針對(duì)電池的安全性問題,研究人員提出了很多安全措施。其中,最常用的安全措施
    的頭像 發(fā)表于 02-24 16:54 ?2342次閱讀

    Testin云測開發(fā)者云測試平臺(tái)國內(nèi)首發(fā)Android14

    近日,谷歌發(fā)布了 Android 14 的首個(gè)開發(fā)者預(yù)覽版(Android 14 Developer Preview 1),和以往版本一樣,Andr
    的頭像 發(fā)表于 03-10 15:02 ?1453次閱讀

    低壓配電柜的檢修安全措施和注意事項(xiàng)

      低壓配電柜的檢修安全措施需要從多個(gè)方面做好,避免因疏忽大意而引起安全事故。工作人員需要提高安全意識(shí),執(zhí)行詳盡的檢修操作規(guī)程,關(guān)注低壓配電柜檢修期間的安全情況和操作過程中的細(xì)節(jié),從而
    發(fā)表于 04-13 14:58 ?5240次閱讀

    手持回路電阻測試儀接線方法與安全措施

    木森電氣手持回路電阻測試儀推出以來,受到廣大電力用戶的歡迎,一年多的廣泛應(yīng)用獲得好評(píng),電站B超在此分享手持回路電阻測試儀接線圖與安全措施,尤其是手持回路電阻測試儀安全措施,簡單易操作。
    的頭像 發(fā)表于 11-18 15:21 ?1276次閱讀
    手持回路電阻測試儀接線方法與<b class='flag-5'>安全措施</b>

    電容放電前安全措施

    電容放電前安全措施? 電容放電前的安全措施是十分必要的,因?yàn)殡娙菽軌虼鎯?chǔ)大量的電荷,電容內(nèi)的電荷釋放可能會(huì)引起電擊、火災(zāi)等安全隱患。因此在進(jìn)行電容放電之前,需要采取一系列安全措施來確保
    的頭像 發(fā)表于 09-08 11:35 ?1432次閱讀

    smt加工焊接時(shí)需要注意幾點(diǎn)安全措施

    一般在smt加工中,手工焊接是最常見的,但是焊接過程中要注意一些安全措施,才能更有效率的工作。
    的頭像 發(fā)表于 09-15 09:14 ?934次閱讀

    谷歌發(fā)布Android14 將源代碼推送到AOSP(Android開源項(xiàng)目)

    2023 年 2 月發(fā)布的第一個(gè) Android 14 開發(fā)者預(yù)覽版 中引入的,其中包括性能改進(jìn)、更好的隱私和安全性以及其他用戶端自定義選項(xiàng)。 自首屆 Android
    的頭像 發(fā)表于 10-12 15:56 ?916次閱讀

    DC電源模塊的保護(hù)與安全措施

    BOSHIDA ? DC電源模塊的保護(hù)與安全措施 BOSHIDA ? DC電源模塊的保護(hù)與安全措施包括以下幾個(gè)方面: ?DC電源模塊的保護(hù)與安全措施 1. 過流保護(hù):在電源輸出端加入過流保護(hù)電路,當(dāng)
    的頭像 發(fā)表于 02-19 13:27 ?451次閱讀
    DC電源模塊的保護(hù)與<b class='flag-5'>安全措施</b>