Bootloader'ı kilitleme ve kilidini açma

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 öğesini 1 olarak ayarlayın.
  • Cihaz yanıp sönen kilit açma özelliğini desteklemiyorsa ro.oem_unlock_supported öğesini 0 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.