2013-03-07 14 views
0

我寫了一些關於Android設備的小型安全報告,涉及從RAM訪問信息。 主要條件是該設備最初是不根源的。如何從無根據的手機中獲取正在運行的應用程序的數據

使用案例: 用戶打開第三方應用程序,在密碼字段中輸入一些密碼。之後,該設備在運行該應用程序時丟失。此應用程序的源代碼顯示,應用程序啓動並運行時,此RAM中的密碼信息可用。例如,在公共字符串myPassword中的AllMyAppPasswords類中。現在是關於可能的方式來訪問此密碼信息的問題(糾正我,如果我錯了):

  1. 訪問此密碼的方式是轉儲內存。
  2. 對於內存轉儲我需要讓設備生根。
  3. 爲了根設備,我需要解鎖bootloader。
  4. 要實現解鎖引導加載程序和根操作,它需要該設備至少需要重新引導一次。
  5. 設備重新啓動有關密碼的信息,在從RAM不見了

結論:這是不可能得到密碼,從應用程序駐留在RAM存儲器,如果設備是無根。這是對的嗎?

更新使用案例: 我們假設用戶只是取消裝箱的新設備,並且100%確定它沒有固定並且不包含任何鍵盤記錄程序。因此,用戶只是安裝了我的應用程序,輸入了密碼,並且應用程序在運行期間內部使用此密碼定期連接服務器(僅密碼RAM,從未存儲在磁盤上)。因此,從視覺上看,編輯文本字段中沒有任何內容,只有在應用程序內存中用於內部使用的密碼信息,當然,不可能僅從屏幕讀取密碼文本。現在用戶丟失了他的電話。用戶是否應該關注發現他手機的人可以從RAM獲取密碼信息?

+0

我很遺憾,我的問題已關閉。到目前爲止,我無法獲得有關Android軟件開發和相關主題的專業答案。我知道我的問題與編碼沒有直接關係,但問題與我應該如何編碼以保護我的應用程序數據直接相關。 – PerecFX 2013-03-07 13:09:28

+0

我認爲這樣的用戶會有許多其他問題需要擔心。這就是說,當然;他們可能需要擔心這一點。但根據收盤時間;這個問題是無關緊要的,因爲你沒有提出你正在處理的即時編碼問題。 – 2013-03-07 13:18:01

回答

1

雖然不是這方面的動手內部人士,但我會聲稱我對平均值感興趣,這裏是我的想法。雖然沒有意思說你不可能已經知道這一點。

  • 是的,Linux保護進程內存不受其他常規用戶的影響(root不是普通用戶)。
  • 我不明白爲什麼在您描述的情況下,發現手機的人不會簡單地將相關應用程序置於前臺並顯示所有保密信息,因爲您的方案已假定發現設備的人可以成功解鎖它,並且該應用程序仍在運行。 如果我的「密碼安全」應用程序啓動,並確定該設備的根源並非是在重新啓動:
  • 但我懷疑你正打算建立一個類似如下的參數(由假想AllMyAppPasswords類啓發)需要改變這一事實,並且由於在沒有根的設備上無法訪問我的應用程序的內存,因此將解密的機密信息保存在RAM中是安全的。如果這符合你想要的理由,我想把你的注意力放在以下幾個方面。
    • 即使應用字節碼混淆器,從APK反向工程代碼也相對容易。如果有人決定在你的應用程序內存中保存的機密信息對他們來說足夠重要,那麼情況尤其如此。這意味着每個人一旦獲得訪問權限就可以比較容易地找到要尋找的內容。
    • Linux和Java虛擬機都存在安全漏洞,Android設備供應商的更新策略在這方面並不完全透明。換句話說,可能有一種方法,直接或通過組合錯誤,即使手機沒有植根,也可以在根上下文中執行代碼或使用應用程序的用戶標識。
    • 一旦您的應用程序發佈後,針對根電話的方法可能會發生變化,因此您可能無法可靠地識別已紮根的電話。
    • 任何加密的數據和密鑰必須完全存在於受信任的服務器上,否則人們只需從應用程序中提取密鑰並訪問存儲在Android設備(如果有)上的加密數據,而不是嘗試訪問應用程序RAM。
  • 如果有人擁有允許連接在線調試器的Android設備,則所有投注都關閉,理論上允許在沒有任何軟件意識到的情況下直接訪問內存。我不確定這種情況的確切先決條件,我也不知道各個製造商在這方面採取了哪些預防措施。

我已經有點擴大了你的原始問題的範圍,但也許還有一些對你有用的東西。即使逐字地堅持你的問題,我相信安全漏洞的真正傷害,除了我沒有意識到任何可靠的(完全無疑的,現在和將來)識別根植設備的方式。

直接硬件訪問可能超出了您所瞄準的安全級別的範圍,但我似乎記得最近我讀了一些關於此的內容。

+0

非常豐富。謝謝! – PerecFX 2013-03-07 12:48:44

+0

關於用例:我剛添加了關於在現實生活中可能發生的情況的額外細節。 – PerecFX 2013-03-07 12:58:50

相關問題