Bootloader sperren und entsperren

Die meisten Android-Geräte werden standardmäßig mit einem gesperrten Bootloader ausgeliefert, d. h., Nutzer können den Bootloader oder die Gerätepartitionen nicht flashen. Bei Bedarf können Sie (und Gerätenutzer mit aktivierten Entwickleroptionen) den Bootloader entsperren, um neue Images zu flashen.

Bootloader

Sie müssen sich im Bootloader-Modus befinden, um fastboot-Befehle ausgeben zu können. Dazu können Sie beispielsweise den ADB-Befehl adb reboot bootloader senden. Bei einigen Smartphones kannst du beim Starten des Geräts auch einen Neustart im Bootloader durchführen, indem du eine Tastenkombination (normalerweise die Lautstärkeregelung) drückst.

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 der Partitionen zu ermöglichen. Nach dem Festlegen bleibt der Entsperrmodus auch nach einem Neustart bestehen.

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

Wenn der Befehl fastboot flashing unlock gesendet wird, sollte das Gerät die Nutzer auffordern, sie zu warnen, dass sie auf Probleme mit inoffiziellen Images stoßen könnten. 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 auch dann zurücksetzen, wenn es nicht korrekt neu formatiert werden kann. Erst nach einem Zurücksetzen kann das Flag „persistent“ gesetzt werden, damit das Gerät neu geflasht werden kann.

Der noch nicht überschriebene RAM sollte während des fastboot flashing unlock-Vorgangs zurückgesetzt werden. Diese Maßnahme verhindert Angriffe, bei denen RAM-Inhalte aus dem vorherigen Bootvorgang gelesen werden. Ebenso sollten entsperrte Geräte den RAM bei jedem Start löschen (es sei denn, dies führt zu einer inakzeptablen Verzögerung). Sie sollten jedoch die Region beibehalten, die für ramoops des Kernels verwendet wird.

Bootloader sperren

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

Eigenschaften zum Sperren und Entsperren festlegen

Das Attribut ro.oem_unlock_supported sollte zum Zeitpunkt der Erstellung festgelegt werden, je nachdem, ob das Gerät das Entsperren durch Blinken unterstützt.

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

Wenn das Gerät die blinkende Entsperrung unterstützt, sollte der Bootloader den Sperrstatus anzeigen. Dazu setzt er die Kernel-Befehlszeilenvariable androidboot.flash.locked auf 1 (wenn gesperrt) oder auf 0 (wenn entsperrt). 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, verwenden Sie ro.boot.verifiedbootstate, um den Wert von ro.boot.flash.locked auf 0 zu setzen. Dadurch wird der Bootloader entsperrt, wenn der verifizierte Bootstatus orange ist.

Kritische Bereiche schützen

Geräte sollten das Sperren und Entsperren kritischer Bereiche unterstützen. Diese Bereiche sind so definiert, dass sie zum Starten des Geräts im Bootloader erforderlich sind. Solche Abschnitte können Sicherungen, virtuelle Partitionen für einen Sensor-Hub, einen Bootloader der ersten Stufe und mehr umfassen. Um kritische Bereiche zu sperren, müssen Sie einen Mechanismus verwenden, der verhindert, dass auf dem Gerät ausgeführter Code (Kernel, Wiederherstellungsimage, OTA-Code usw.) absichtlich einen kritischen Bereich ändert. OTAs sollten kritische Bereiche nicht aktualisieren, wenn das Gerät sich im Sperrstatus befindet.

Der Wechsel vom gesperrten in den entsperrten Zustand sollte eine physische Interaktion mit dem Gerät erfordern. Diese Interaktion ähnelt 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 keinen programmatischen Wechsel von lock critical zu unlock critical ohne physische Interaktion zulassen und Geräte sollten nicht im Status unlock critical ausgeliefert werden.