Bootloader sperren und entsperren

Auf den meisten Android-Geräten ist standardmäßig ein gesperrter Bootloader installiert. Das bedeutet, dass Nutzer den Bootloader oder 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.

Bootloader aufrufen

Um fastboot-Befehle auszugeben, müssen Sie sich im Bootloader-Modus befinden. Eine Möglichkeit hierfür ist das Senden des ADB-Befehls adb reboot bootloader. Bei einigen Smartphones können Sie auch in den Bootloader wechseln, indem Sie beim Starten des Geräts eine Tastenkombination (in der Regel die Leiser-Taste) drücken.

Bootloader entsperren

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 bestehen.

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

Wenn der Befehl fastboot flashing unlock gesendet wird, sollte das Gerät Nutzer darauf hinweisen, dass bei inoffiziellen Bildern Probleme auftreten können. 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 richtig formatiert werden kann. Erst nach dem Zurücksetzen kann das Flag „persistent“ gesetzt werden, damit das Gerät neu geflasht werden kann.

Alle RAM-Bereiche, die noch nicht überschrieben wurden, sollten während des fastboot flashing unlock-Prozesses zurückgesetzt werden. Diese Maßnahme verhindert Angriffe, bei denen Restinhalte des RAM aus dem vorherigen Startvorgang gelesen werden. Ähnlich dazu sollte bei entsperrten Geräten der RAM bei jedem Start gelöscht werden (sofern dadurch keine unzumutbare Verzögerung entsteht), aber der für das ramoops des Kernels verwendete Bereich sollte beibehalten werden.

Bootloader sperren

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

Sperr- und Entsperreigenschaften festlegen

Das Attribut 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, legen Sie ro.oem_unlock_supported auf 1 fest.
  • Wenn das Gerät das Blinken zum Entsperren nicht unterstützt, setze ro.oem_unlock_supported auf 0.

Wenn das Gerät das Entsperren durch Flashen unterstützt, sollte der Bootloader den Sperrstatus angeben, indem er die Kernel-Befehlszeilenvariable androidboot.flash.locked auf 1 (gesperrt) oder 0 (entsperrt) setzt. Diese Variable muss in Android 12 in der Bootkonfiguration anstelle der Kernel-Befehlszeile festgelegt werden.

Verwenden Sie für Geräte, die dm-verity unterstützen, ro.boot.verifiedbootstate, um den Wert von ro.boot.flash.locked auf 0 festzulegen. Dadurch wird der Bootloader entsperrt, wenn der Status des verifizierten Bootmodus orange ist.

Kritische Abschnitte schützen

Geräte sollten das Sperren und Entsperren kritischer Abschnitte unterstützen, die als alles definiert sind, was zum Booten des Geräts in den Bootloader erforderlich ist. Dazu können Sicherungen, virtuelle Partitionen für einen Sensor-Hub und der First-Stage-Bootloader gehören. Zum Sperren kritischer Abschnitte 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 „lock critical“ 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 dürfen nicht ohne physische Interaktion programmatisch von lock critical zu unlock critical wechseln und dürfen nicht im Zustand unlock critical ausgeliefert werden.