Varsayılan olarak, çoğu Android cihaz kilitli bir bootloader'la gönderilir. Diğer bir deyişle, kullanıcılar bootloader'ı veya cihaz bölümlerini yükleyemez. Gerekirse siz (ve Geliştirici seçenekleri etkin olan cihaz kullanıcıları) yeni resimleri yüklemek için bootloader'ın kilidini açabilirsiniz.
Bootloader'a erişme
fastboot
komutlarını vermek için bootloader modunda olmanız gerekir. Bunu yapmanın bir yolu adb komutunu adb reboot bootloader
göndermektir. Bazı telefonlar, cihazı başlatırken bir tuş kombinasyonuna (genellikle sesi azaltma) basarak bootloader'ı yeniden başlatmanıza da olanak tanır.
Bootloader'ın kilidini açın
Bootloader moduna geçtikten sonra bootloader'ın kilidini açmak ve bölümlerin yeniden yüklenmesini sağlamak için cihazda fastboot flashing unlock
komutunu çalıştırın. Ayarlandıktan sonra, kilit açma modu yeniden başlatmalarda da devam eder.
get_unlock_ability
, 1
olarak ayarlanmadığı sürece cihazlar, fastboot flashing unlock
komutunu reddetmelidir. 0
olarak ayarlanırsa kullanıcının ana ekranı başlatması, Ayarlar > Sistem > Geliştirici seçenekleri menüsünü açıp OEM kilidini açma seçeneğini (get_unlock_ability
değerini 1
olarak ayarlar) etkinleştirmesi gerekir. Ayarlandıktan sonra, bu mod yeniden başlatma ve fabrika verilerine sıfırlama işlemlerinde de devam eder.
fastboot flashing unlock
komutu gönderildiğinde cihaz, kullanıcılardan resmi olmayan görüntülerle ilgili sorunlarla karşılaşabileceklerini uyarmalarını istemelidir.
Kullanıcı uyarıyı kabul ettikten sonra yetkisiz veri erişimini önlemek için cihaz fabrika verilerine sıfırlama işlemi yapmalıdır. Bootloader, cihazı düzgün bir şekilde yeniden
biçimleyemese bile cihazı sıfırlamalıdır. Kalıcı işaret, cihazın yeniden
yeniden başlatılabilmesi için yalnızca sıfırlama işleminden sonra ayarlanabilir.
Üzerine yazılmamış tüm RAM'ler, fastboot flashing unlock
işlemi sırasında sıfırlanmalıdır. Bu önlem, önceki başlatma işleminden kalan RAM içeriklerini okuyan saldırıları önler. Benzer şekilde, kilidi açılmış cihazların her başlatma sırasında RAM'i temizlemesi (bu kabul edilemez bir gecikme oluşturmadığı sürece) ancak çekirdek ramoops
için kullanılan bölgeyi terk etmesi gerekir.
Bootloader'ı kilitleyin
Bootloader'ı kilitlemek ve cihazı sıfırlamak için cihazda fastboot flashing lock
komutunu çalıştırın. Saldırganların yeni bir sistem veya başlatma görüntüsü yükleyerek cihazın güvenliğini ihlal edememesi için perakende satışta kullanılmak üzere tasarlanmış cihazlar kilitli durumda (get_unlock_ability
, 0
değerini döndürecek) şekilde gönderilmelidir.
Kilitleme ve kilit açma özelliklerini ayarlama
ro.oem_unlock_supported
özelliği, cihazın yanıp sönen kilit açmayı destekleyip desteklemediğine bağlı olarak derleme zamanında ayarlanmalıdır.
- Cihaz yanıp sönen kilit açma özelliğini destekliyorsa
ro.oem_unlock_supported
öğesini1
olarak ayarlayın. - Cihaz yanıp sönen kilit açma özelliğini desteklemiyorsa
ro.oem_unlock_supported
öğesini0
olarak ayarlayın.
Cihaz, yanıp sönen kilit açma özelliğini destekliyorsa bootloader, kilitliyse çekirdek komut satırı değişkenini androidboot.flash.locked
1
, kilitli değilse 0
olarak ayarlayarak kilit durumunu belirtmelidir. Bu değişken, Android 12'de çekirdek komut satırı yerine bootconfig'de ayarlanmalıdır.
dm-verity'yi destekleyen cihazlarda ro.boot.flash.locked
değerini 0
olarak ayarlamak için ro.boot.verifiedbootstate
kullanın. Bu işlem, doğrulanmış başlatma durumu turuncuysa bootloader'ın kilidini açar.
Kritik bölümleri koruyun
Cihazlar, kritik bölümlerin kilitlenmesini ve kilidinin açılmasını desteklemelidir. Bu bölümler, cihazı bootloader'da başlatmak için gerekenler olarak tanımlanır. Bu bölümler arasında sigortalar, sensör merkezi için sanal bölümler, birinci aşama bootloader'lar ve daha fazlası yer alabilir. Kritik bölümleri kilitlemek için, cihazda çalışan kodun (ör. çekirdek, kurtarma görüntüsü, OTA kodu) kritik bölümleri kasıtlı olarak değiştirmesini engelleyen bir mekanizma kullanmanız gerekir. Cihaz kritik durumdaysa OTA'lar kritik bölümleri güncelleyememelidir.
Kilitli modundan kilidi açık duruma geçiş için cihazla fiziksel etkileşim gerekir. Bu etkileşim, fastboot flashing unlock
komutunu çalıştırmanın etkilerine benzer ancak kullanıcının cihazda fiziksel bir düğmeye basmasını gerektirir. Cihazlar, fiziksel etkileşim olmadan lock critical
ile unlock critical
arasında programatik olarak geçişe izin vermemelidir. Ayrıca, cihazlar unlock critical
durumunda gönderilmemelidir.