Sperren/Entsperren des Bootloaders

Standardmäßig werden die meisten Android-Geräte mit einem gesperrten Bootloader ausgeliefert, was bedeutet, dass Benutzer den Bootloader oder die Gerätepartitionen nicht flashen können. Bei Bedarf können Sie (und Gerätebenutzer mit aktivierten Entwickleroptionen) den Bootloader entsperren, um neue Images zu flashen.

Einstieg in den Bootloader

Um fastboot Befehle ausgeben zu können, müssen Sie sich im Bootloader-Modus befinden. Eine Möglichkeit, dies zu tun, besteht darin, den ADB-Befehl adb reboot bootloader zu senden. Bei einigen Telefonen können Sie den Bootloader auch neu starten, indem Sie beim Booten des Geräts eine Tastenkombination (normalerweise Lautstärke verringern) drücken.

Entsperren des Bootloaders

Führen Sie im Bootloader-Modus den Befehl fastboot flashing unlock auf dem Gerät aus, um den Bootloader zu entsperren und das erneute Flashen von Partitionen zu ermöglichen. Nach der Einstellung bleibt der Entsperrmodus auch nach Neustarts erhalten.

Geräte sollten den fastboot flashing unlock Befehl verweigern, es sei denn, get_unlock_ability ist auf 1 gesetzt. Wenn auf 0 gesetzt, muss der Benutzer zum Startbildschirm booten, das Menü Einstellungen > System > Entwickleroptionen öffnen und die OEM-Entsperrungsoption aktivieren (die get_unlock_ability auf 1 setzt). Nach der Einstellung bleibt dieser Modus auch nach Neustarts und Zurücksetzen der Werkseinstellungen bestehen.

Wenn der Befehl fastboot flashing unlock gesendet wird, sollte das Gerät Benutzer auffordern, sie zu warnen, dass möglicherweise Probleme mit inoffiziellen Bildern auftreten. Nachdem der Benutzer die Warnung bestätigt hat, sollte das Gerät einen Werksdaten-Reset durchführen, um unbefugten Datenzugriff zu verhindern. Der Bootloader sollte das Gerät zurücksetzen, auch wenn er es nicht ordnungsgemäß neu formatieren kann. Erst nach einem Reset kann das Persistent-Flag gesetzt werden, sodass das Gerät erneut geflasht werden kann.

Der gesamte RAM, der noch nicht überschrieben wurde, sollte während des fastboot flashing unlock zurückgesetzt werden. Diese Maßnahme verhindert Angriffe, die übrig gebliebene RAM-Inhalte vom vorherigen Start auslesen. Ebenso sollten entsperrte Geräte den RAM bei jedem Start löschen (es sei denn, dies führt zu einer inakzeptablen Verzögerung), sollten jedoch den für die ramoops des Kernels verwendeten Bereich verlassen.

Sperren des Bootloaders

Um den Bootloader zu sperren und das Gerät zurückzusetzen, führen Sie den Befehl fastboot flashing lock auf dem Gerät aus. Geräte, die für den Einzelhandel bestimmt sind, sollten im gesperrten Zustand versendet werden (mit get_unlock_ability , der 0 zurückgibt), um sicherzustellen, dass Angreifer das Gerät nicht durch die Installation eines neuen Systems oder Boot-Images gefährden können.

Sperr-/Entsperreigenschaften festlegen

Die ro.oem_unlock_supported -Eigenschaft sollte zur Erstellungszeit basierend darauf festgelegt werden, ob das Gerät Flash-Entsperrung unterstützt.

  • Wenn das Gerät Flash-Entsperrung unterstützt, setzen Sie ro.oem_unlock_supported auf 1 .
  • Wenn das Gerät die Flash-Entsperrung nicht unterstützt, setzen Sie ro.oem_unlock_supported auf 0 .

Wenn das Gerät Flashing Unlock unterstützt, sollte der Bootloader den Sperrstatus anzeigen, indem er die Kernel-Befehlszeilenvariable androidboot.flash.locked auf 1 setzt, wenn sie gesperrt ist, oder auf 0 , wenn sie entsperrt ist. Diese Variable muss in bootconfig statt in der Kernel-Befehlszeile in Android 12 festgelegt werden.

Für Geräte, die dm-verity unterstützen, verwenden Sie ro.boot.verifiedbootstate , um den Wert von ro.boot.flash.locked auf 0 zu setzen; Dadurch wird der Bootloader entsperrt, wenn der überprüfte Startstatus orange ist.

Schutz kritischer Abschnitte

Geräte sollten das Sperren und Entsperren kritischer Abschnitte unterstützen, die als alles definiert sind, was zum Booten des Geräts im Bootloader erforderlich ist. Zu diesen Abschnitten können Sicherungen, virtuelle Partitionen für einen Sensor-Hub, ein Bootloader der ersten Stufe und mehr gehören. Um kritische Abschnitte zu sperren, müssen Sie einen Mechanismus verwenden, der verhindert, dass auf dem Gerät ausgeführter Code (Kernel, Wiederherstellungsimage, OTA-Code usw.) absichtlich kritische Abschnitte ändert. OTAs sollten kritische Abschnitte nicht aktualisieren, wenn sich das Gerät im kritischen Sperrstatus befindet.

Der Übergang vom gesperrten in den entsperrten Zustand sollte eine physische Interaktion mit dem Gerät erfordern. Diese Interaktion ähnelt den Auswirkungen der Ausführung des fastboot flashing unlock -Befehls, erfordert jedoch, dass der Benutzer eine physische Taste auf dem Gerät drückt. Geräte sollten keinen programmgesteuerten Übergang von lock critical zu unlock critical ohne physische Interaktion ermöglichen und Geräte sollten nicht im Zustand unlock critical ausgeliefert werden.