Önyükleyiciyi Kilitleme/Kilidini Açma

Varsayılan olarak, çoğu Android cihazı kilitli bir önyükleyiciyle birlikte gelir; bu, kullanıcıların önyükleyiciyi veya cihaz bölümlerini flashlayamayacağı anlamına gelir. Gerekirse siz (ve Geliştirici seçenekleri etkin olan cihaz kullanıcıları), yeni görüntüleri flaş etmek için önyükleyicinin kilidini açabilirsiniz.

Bootloader'a girme

fastboot komutlarını vermek için önyükleyici 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 ses kısma) basarak önyükleyiciyi yeniden başlatmanıza da olanak tanır.

Önyükleyicinin kilidini açma

Önyükleyici moduna girdikten sonra, önyükleyicinin kilidini açmak ve bölümlerin yeniden başlatılmasını sağlamak için cihazda fastboot flashing unlock komutunu çalıştırın. Ayarlamanın ardından, kilit açma modu yeniden başlatmalarda 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 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, get_unlock_ability 1 olarak ayarlar). Ayarlamanın ardından bu mod, yeniden başlatmalarda ve fabrika verilerine sıfırlamalarda devam eder.

fastboot flashing unlock komutu gönderildiğinde, cihaz kullanıcıları resmi olmayan görüntülerle ilgili sorunlarla karşılaşabilecekleri konusunda uyarmalıdır. Kullanıcının uyarıyı kabul etmesinden sonra izinsiz verilere erişimi önlemek için cihazın fabrika verilerine sıfırlama işlemi yapması gerekir. Önyükleyici, cihazı düzgün şekilde yeniden biçimlendiremese bile cihazı sıfırlamalıdır. Yalnızca sıfırlamadan sonra kalıcı bayrak, cihazın yeniden başlatılabilmesi için ayarlanabilir.

fastboot flashing unlock işlemi sırasında üzerine yazılmayan tüm RAM'lerin sıfırlanması gerekir. Bu önlem, önceki önyüklemeden kalan RAM içeriğini okuyan saldırıları önler. Benzer şekilde, kilidi açılmış aygıtlar her önyüklemede RAM'i temizlemeli (bu, kabul edilemez bir gecikme yaratmadığı sürece), ancak çekirdeğin ramoops için kullanılan bölgeyi terk etmelidir.

Önyükleyiciyi kilitleme

Önyükleyiciyi kilitlemek ve cihazı sıfırlamak için cihazda fastboot flashing lock komutunu çalıştırın. Saldırganların yeni bir sistem veya önyükleme görüntüsü kurarak cihazı tehlikeye atamayacağından emin olmak için, perakende satışa yönelik cihazlar kilitli durumda gönderilmelidir ( get_unlock_ability 0 değerini döndürerek).

Kilitleme/kilit açma özelliklerini ayarlama

ro.oem_unlock_supported özelliği, cihazın yanıp sönerek kilit açmayı destekleyip desteklemediğine bağlı olarak derleme sırasında ayarlanmalıdır.

  • Cihaz yanıp sönerek kilit açmayı destekliyorsa ro.oem_unlock_supported değerini 1 olarak ayarlayın.
  • Cihaz yanıp sönerek kilit açmayı desteklemiyorsa ro.oem_unlock_supported değerini 0 olarak ayarlayın.

Cihaz, yanıp sönerek kilit açmayı destekliyorsa, önyükleyici, androidboot.flash.locked çekirdek komut satırı değişkenini kilitliyse 1 , kilidi açıksa 0 ayarlayarak kilit durumunu belirtmelidir. Bu değişkenin Android 12'deki çekirdek komut satırı yerine bootconfig'te ayarlanması gerekir.

dm-verity'yi destekleyen cihazlar için ro.boot.verifiedbootstate kullanarak ro.boot.flash.locked değerini 0 olarak ayarlayın; doğrulanmış önyükleme durumu turuncu ise bu, önyükleyicinin kilidini açar.

Kritik bölümlerin korunması

Cihazlar, cihazı önyükleyiciye başlatmak için gerekenler olarak tanımlanan kritik bölümlerin kilitlenmesini ve kilidinin açılmasını desteklemelidir. Bu tür bölümler sigortaları, sensör hub'ı için sanal bölümleri, birinci aşama önyükleyiciyi ve daha fazlasını içerebilir. Kritik bölümleri kilitlemek için cihazda çalışan kodun (çekirdek, kurtarma görüntüsü, OTA kodu vb.) herhangi bir kritik bölümü kasıtlı olarak değiştirmesini önleyen bir mekanizma kullanmalısınız. Cihaz kritik kilit durumundaysa OTA'lar kritik bölümleri güncellemede başarısız olmalıdır.

Kilitli durumdan kilitsiz duruma geçiş, cihazla fiziksel bir etkileşim gerektirmelidir. 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 unlock critical programlı geçişe izin vermemeli ve cihazlar unlock critical durumunda gönderilmemelidir.