Bootloader sperren und entsperren

Auf den meisten Android-Geräten ist der Bootloader standardmäßig gesperrt. Das bedeutet, dass Nutzer den Bootloader oder Gerätepartitionen nicht flashen können. Bei Bedarf können Sie (und Gerätenutzer mit aktivierten Entwickleroptionen) den Bootloader entsperren, um neue Images zu flashen.

Bootloader aufrufen

Wenn Sie fastboot-Befehle ausführen möchten, müssen Sie sich im Bootloader-Modus befinden. Eine Möglichkeit hierfür ist, den ADB-Befehl adb reboot bootloader zu senden. Auf einigen Smartphones können Sie auch in den Bootloader wechseln, indem Sie beim Starten des Geräts eine Tastenkombination drücken (in der Regel die Leiser-Taste).

Bootloader entsperren

Wenn Sie sich im Bootloader-Modus befinden, führen Sie den Befehl fastboot flashing unlock auf dem Gerät aus, um den Bootloader zu entsperren und Partitionen neu zu flashen. Nach der Einstellung bleibt der Entsperrmodus auch nach Neustarts bestehen.

Geräte sollten den Befehl fastboot flashing unlock ablehnen, es sei denn, get_unlock_ability ist auf 1 gesetzt. Wenn die Einstellung auf 0 gesetzt ist, muss der Nutzer den Startbildschirm aufrufen, das Menü Einstellungen > System > Entwickleroptionen öffnen und die Option OEM-Entsperrung aktivieren. Dadurch wird get_unlock_ability auf 1 gesetzt. Nach der Einstellung bleibt dieser Modus auch nach Neustarts und dem Zurücksetzen auf die Werkseinstellungen bestehen.

Wenn der Befehl fastboot flashing unlock gesendet wird, sollten Nutzer auf dem Gerät gewarnt werden, dass es bei inoffiziellen Images zu Problemen kommen kann. Nachdem der Nutzer die Warnung bestätigt hat, sollte das Gerät auf die Werkseinstellungen zurückgesetzt werden, um unbefugten Datenzugriff zu verhindern. Der Bootloader sollte das Gerät zurücksetzen, auch wenn es nicht ordnungsgemäß neu formatiert werden kann. Erst nach dem Zurücksetzen kann das persistente Flag gesetzt werden, damit das Gerät neu geflasht werden kann.

Der gesamte RAM, der noch nicht überschrieben wurde, sollte während des Prozesses fastboot flashing unlock zurückgesetzt werden. Diese Maßnahme verhindert Angriffe, bei denen Restinhalte des RAM aus dem vorherigen Startvorgang gelesen werden. Ebenso sollten entsperrte Geräte bei jedem Start den RAM leeren, es sei denn, dies führt zu einer unzumutbaren Verzögerung. Die Region, die für ramoops des Kernels verwendet wird, sollte jedoch nicht geleert werden.

Bootloader sperren

Wenn Sie den Bootloader sperren und das Gerät zurücksetzen möchten, 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 ausgeliefert werden (mit get_unlock_ability als 0), damit Angreifer das Gerät nicht durch die Installation eines neuen Systems oder Start-Images kompromittieren können.

Sperr- und Entsperreigenschaften festlegen

Die Eigenschaft ro.oem_unlock_supported sollte zur Build-Zeit festgelegt werden, je nachdem, ob das Gerät das Entsperren durch Flashen unterstützt.

  • Wenn das Gerät das Entsperren durch Flashen unterstützt, setzen Sie ro.oem_unlock_supported auf 1.
  • Wenn das Gerät das Entsperren durch Flashen nicht unterstützt, setzen Sie ro.oem_unlock_supported auf 0.

Wenn das Gerät das Entsperren durch Flashen unterstützt, sollte der Bootloader den Sperrstatus angeben, indem die Kernel-Befehlszeilenvariable androidboot.flash.locked auf 1 gesetzt wird, wenn das Gerät gesperrt ist, und auf 0, wenn es entsperrt ist. Diese Variable muss in Android 12 in der Bootkonfiguration und nicht in der Kernel-Befehlszeile festgelegt werden.

Bei Geräten, die dm-verity unterstützen, setzen Sie mit ro.boot.verifiedbootstate den Wert von ro.boot.flash.locked auf 0. Dadurch wird der Bootloader entsperrt, wenn der Status des verifizierten Starts orange ist.

Kritische Abschnitte schützen

Geräte sollten das Sperren und Entsperren kritischer Abschnitte unterstützen. Diese sind als alles definiert, was erforderlich ist, um das Gerät in den Bootloader zu starten. Zu diesen Abschnitten gehören beispielsweise Sicherungen, virtuelle Partitionen für einen Sensor-Hub und der Bootloader der ersten Phase. Um kritische Abschnitte zu sperren, müssen Sie einen Mechanismus verwenden, der verhindert, dass Code (Kernel, Wiederherstellungs-Image, OTA-Code usw.), der auf dem Gerät ausgeführt wird, kritische Abschnitte absichtlich ändert. OTAs sollten kritische Abschnitte nicht aktualisieren, wenn sich das Gerät im Status „Kritische Abschnitte gesperrt“ befindet.

Der Übergang vom gesperrten zum entsperrten Zustand sollte eine physische Interaktion mit dem Gerät erfordern. Diese Interaktion ähnelt den Auswirkungen der Ausführung des Befehls fastboot flashing unlock, erfordert jedoch, dass der Nutzer eine physische Taste auf dem Gerät drückt. Geräte sollten den programmgesteuerten Übergang von lock_critical zu unlock_critical ohne physische Interaktion nicht zulassen und nicht im Status unlock_critical ausgeliefert werden.