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
auf1
. - Wenn das Gerät die blinkende Entsperrung nicht unterstützt, setzen Sie
ro.oem_unlock_supported
auf0
.
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.