Önyükleme Doğrulanıyor

Doğrulanmış önyükleme, kullanılmadan önce başlatılmakta olan Android sürümünün bir parçası olan tüm yürütülebilir kodun ve verilerin kriptografik olarak doğrulanmasını gerektirir. Buna çekirdek ( boot bölümünden yüklenir), aygıt ağacı ( dtbo bölümünden yüklenir), system bölümü, vendor bölümü vb. dahildir.

boot ve dtbo gibi yalnızca bir kez okunan küçük bölümler, genellikle tüm içeriği belleğe yükleyerek ve ardından karma değerini hesaplayarak doğrulanır. Bu hesaplanan özet değeri daha sonra beklenen özet değeri ile karşılaştırılır. Değer eşleşmezse Android yüklenmez. Daha fazla ayrıntı için bkz. Önyükleme Akışı .

Belleğe sığmayacak daha büyük bölümler (dosya sistemleri gibi), veri belleğe yüklenirken gerçekleşen sürekli bir işlem olan doğrulamanın olduğu bir karma ağacı kullanabilir. Bu durumda, hash ağacının kök hash değeri, çalışma süresi boyunca hesaplanır ve beklenen kök hash değerine karşı kontrol edilir. Android, daha büyük bölümleri doğrulamak için dm-verity sürücüsünü içerir. Bir noktada hesaplanan kök karma değeri, beklenen kök karma değeriyle eşleşmezse, veriler kullanılmaz ve Android bir hata durumuna girer. Daha fazla ayrıntı için bkz. dm-verity bozulması .

Beklenen karmalar genellikle doğrulanmış her bölümün sonunda veya başında, ayrılmış bir bölümde veya her ikisinde depolanır. En önemlisi, bu karmalar (doğrudan veya dolaylı olarak) güven kökü tarafından imzalanır. Örnek olarak, AVB uygulaması her iki yaklaşımı da destekler, ayrıntılar için bkz. Android Onaylı Önyükleme .

geri alma koruması

Tamamen güvenli bir güncelleme işlemiyle bile, kalıcı olmayan bir Android çekirdeği istismarının, Android'in daha eski, daha savunmasız bir sürümünü manuel olarak yüklemesi, savunmasız sürümde yeniden başlatması ve ardından bu Android sürümünü kalıcı bir istismar yüklemek için kullanması mümkündür. Saldırgan, bu noktadan sonra cihazın kalıcı olarak sahibi olur ve güncellemeleri devre dışı bırakmak da dahil olmak üzere her şeyi yapabilir.

Bu saldırı sınıfına karşı korumaya Geri Alma Koruması denir. Geri alma koruması, genellikle Android'in en son sürümünü kaydetmek için kurcalanmaya açık depolama kullanılarak ve kaydedilen sürümden daha düşükse Android'i başlatmayı reddederek uygulanır. Sürümler genellikle bölüm bazında izlenir.

AVB'nin geri alma korumalarını nasıl ele aldığı hakkında daha fazla ayrıntı için AVB README'ye bakın.

Doğrulama hatalarını işleme

Doğrulama, önyükleme sırasında (örneğin, boot bölümünde hesaplanan karma, beklenen karma ile eşleşmezse) veya çalışma zamanında (örneğin, dm-verity system bölümünde bir doğrulama hatasıyla karşılaşırsa) başarısız olabilir. Önyükleme sırasında doğrulama başarısız olursa, cihaz önyüklenemez ve son kullanıcının cihazı kurtarmak için adımlardan geçmesi gerekir.

Doğrulama çalışma zamanında başarısız olursa, akış biraz daha karmaşıktır. Cihaz dm-verity kullanıyorsa, restart modunda yapılandırılmalıdır. restart modunda, bir doğrulama hatasıyla karşılaşılırsa, nedeni belirtmek için belirli bir bayrak seti ile cihaz hemen yeniden başlatılır. Önyükleyici bu bayrağı fark etmeli ve dm-verity'yi G/Ç Hatası ( eio ) modunu kullanmak için değiştirmeli ve yeni bir güncelleme yüklenene kadar bu modda kalmalıdır.

eio modunda önyükleme yaparken, cihaz, kullanıcıya bozulmanın algılandığını ve cihazın düzgün çalışmayabileceğini bildiren bir hata ekranı gösterir. Kullanıcı kapatana kadar ekran gösterilir. eio modunda, bir doğrulama hatasıyla karşılaşılırsa dm-verity sürücüsü cihazı yeniden başlatmaz, bunun yerine bir EIO hatası döndürülür ve uygulamanın hatayla ilgilenmesi gerekir.

Amaç, sistem güncelleyicinin çalışması (böylece bozulma hataları olmayan yeni bir işletim sistemi kurulabilir) veya kullanıcının verilerinin çoğunu cihazdan mümkün olduğunca alabilmesidir. Yeni işletim sistemi kurulduktan sonra, önyükleyici yeni kurulan işletim sistemini fark eder ve restart moduna geri döner.