Bootloader'ı kilitleme ve kilidini açma

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