Çoğu Android cihaz varsayılan olarak kilitli bir bootloader ile gönderilir. Bu, kullanıcıların bootloader'ı veya cihaz bölümlerini flash edemeyeceği anlamına gelir. Gerekirse siz (ve Geliştirici seçenekleri etkinleştirilmiş cihaz kullanıcıları) yeni resimler yüklemek için önyükleyiciyi kilidini açabilirsiniz.
Bootloader'a girme
fastboot
komutlarını vermek için bootloader modunda olmanız gerekir. Bunu yapmanın bir yolu adb reboot bootloader
adb komutunu göndermektir. Bazı telefonlarda, cihazı başlatırken bir tuş kombinasyonuna (genellikle sesi azaltma) basarak da önyükleyiciye yeniden başlatabilirsiniz.
Bootloader'ın kilidini açma
Bootloader moduna girdikten sonra bootloader'ın kilidini açmak ve bölümlerin yeniden flashlanmasını sağlamak için cihazda fastboot flashing unlock
komutunu çalıştırın. Ayarlandıktan sonra, yeniden başlatma işlemlerinde kilit açma modu değişmez.
Cihazlar, fastboot flashing unlock
komutunu get_unlock_ability
, 1
olarak ayarlanmadığı sürece reddetmelidir. 0
olarak ayarlanırsa kullanıcının ana ekrana önyükleme yapması, Ayarlar > Sistem > Geliştirici seçenekleri menüsünü açması ve OEM kilit açma seçeneğini etkinleştirmesi gerekir (bu seçenek get_unlock_ability
değerini 1
olarak ayarlar). Ayarlandıktan sonra bu mod, yeniden başlatma ve fabrika verilerine sıfırlama işlemlerinde kalıcı olur.
fastboot flashing unlock
komutu gönderildiğinde cihaz, kullanıcılara resmi olmayan görüntülerle ilgili sorunlar yaşayabilecekleri konusunda uyarıda bulunmalıdır.
Kullanıcı uyarıyı onayladıktan sonra, yetkisiz veri erişimini önlemek için cihaz fabrika verilerine sıfırlanmalıdır. Önyükleyici, cihazı düzgün şekilde yeniden biçimlendiremese bile sıfırlamalıdır. Cihazın yeniden flaşlanabilmesi için kalıcı işaret yalnızca sıfırlamadan 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şlatmadan kalan RAM içeriklerini okuyan saldırıları engeller. Benzer şekilde, kilidi açılmış cihazlar her başlatmada RAM'i temizlemeli (bu durum kabul edilemez bir gecikmeye neden olmadığı sürece) ancak çekirdeğin ramoops
için kullanılan bölgeyi bırakmalıdır.
Bootloader'ı kilitleme
Bootloader'ı kilitlemek ve cihazı sıfırlamak için cihazda fastboot flashing lock
komutunu çalıştırın. Perakende satışa yönelik cihazlar, saldırganların yeni bir sistem veya önyükleme görüntüsü yükleyerek cihazı tehlikeye atmasını önlemek için kilitli durumda (get_unlock_ability
geri dönüyor 0
) gönderilmelidir.
Kilitleme ve kilit açma özelliklerini ayarlama
ro.oem_unlock_supported
özelliği, cihazın flaşla kilit açmayı destekleyip desteklemediğine bağlı olarak derleme sırasında ayarlanmalıdır.
- Cihaz, yanıp sönen ışıkla kilit açmayı destekliyorsa
ro.oem_unlock_supported
değerini1
olarak ayarlayın. - Cihaz, yanıp sönen kilit açma özelliğini desteklemiyorsa
ro.oem_unlock_supported
değerini0
olarak ayarlayın.
Cihaz, yanıp sönen kilit açma özelliğini destekliyorsa önyükleyici, çekirdek komut satırı değişkenini androidboot.flash.locked
kilitliyse 1
, kilitli değilse 0
olarak ayarlayarak kilit durumunu belirtmelidir. Bu değişken, Android 12'de çekirdek komut satırında değil, bootconfig'de ayarlanmalıdır.
dm-verity'yi destekleyen cihazlarda, ro.boot.flash.locked
değerini 0
olarak ayarlamak için ro.boot.verifiedbootstate
komutunu kullanın. Bu komut, doğrulanmış başlatma durumu turuncuysa bootloader'ın kilidini açar.
Kritik bölümleri koruma
Cihazlar, kritik bölümlerin kilitlenmesini ve kilidinin açılmasını desteklemelidir. Kritik bölümler, cihazın bootloader'a başlatılması için gereken her şey olarak tanımlanır. Bu tür bölümler arasında sigortalar, sensör hub'ı için sanal bölümler, birinci aşama önyükleyici ve daha fazlası yer alabilir. Kritik bölümleri kilitlemek için cihazda çalışan kodun (çekirdek, kurtarma görüntüsü, OTA kodu vb.) kritik bölümleri kasıtlı olarak değiştirmesini engelleyen bir mekanizma kullanmanız gerekir. Cihaz kritik kilit durumundaysa OTA'lar kritik bölümleri güncelleyememelidir.
Kilitli durumdan kilitli olmayan duruma geçiş için cihazla fiziksel etkileşimde bulunulması gerekir. Bu etkileşim, fastboot flashing unlock
komutunu çalıştırmanın etkilerine benzer ancak kullanıcının cihazdaki fiziksel bir düğmeye basmasını gerektirir. Cihazlar, fiziksel etkileşim olmadan lock critical
durumundan unlock critical
durumuna programatik olarak geçişe izin vermemeli ve unlock critical
durumunda gönderilmemelidir.