
integration examples for the CVE-2020-25860 fix
Dieses Repository enthält Beispiele, um die Integration des RAUC-Updates in bestehende Projekte zu vereinfachen. Sie können https://github.com/rauc/rauc-1.5-integration/issues/1 abonnieren, um Benachrichtigungen über wichtige Aktualisierungen dieses Repositories und über die Integration in die Upstream-Build-Systeme zu erhalten.
Die Beispiele wurden von den aktuellen Upstream-Versionen abgeleitet, daher können je nach Alter des bestehenden Projekts einige Anpassungen erforderlich sein.
Die am 21. Dezember zu veröffentlichende Sicherheitsmitteilung ist unter https://github.com/rauc/rauc-1.5-integration/blob/master/CVE-2020-25860.md verfügbar. Dieses Repository wird zu diesem Zeitpunkt ebenfalls öffentlich gemacht.
Falls das Archiv rauc-1.5.tar.xz noch nicht zum Download verfügbar ist, kopieren Sie das Archiv aus diesem Repository in Ihr DL_DIR (normalerweise in Ihrer build/conf/local.conf definiert).
Kopieren Sie das aktualisierte Rezept aus oe_yocto/recipes-rauc-1.5/rauc/* in die entsprechende projektspezifische Ebene, wobei Sie darauf achten, vorhandene Anpassungen (wie system.conf oder ca.cert.pem) zu erhalten.
Kopieren Sie oe_yocto/classes/verity_bundle.bbclass in das Verzeichnis classes/ dieser Ebene (ggf. müssen Sie dieses Verzeichnis erstellen). Diese Klasse ist ein Ersatz für die bundle.bbclass aus der meta-rauc-Ebene, mit zusätzlicher Unterstützung für das Erstellen von Bundles im verity-Format. Der abweichende Name wird verwendet, um Probleme mit der Suchreihenfolge von Klassen zu vermeiden.
Wenn Sie Bundles im verity-Format erstellen möchten, verwenden Sie in Ihrem Bundle-Rezept inherit verity_bundle anstelle von inherit bundle und setzen Sie RAUC_BUNDLE_FORMAT = "verity", um das Format auszuwählen. Ein Beispiel finden Sie unter oe_yocto/recipes-rauc-1.5/bundles/core-bundle-minimal-verity.bb.
Falls das Archiv rauc-1.5.tar.xz noch nicht zum Download verfügbar ist, kopieren Sie das Archiv aus diesem Repository in Ihr PTXdist-Quellverzeichnis.
Kopieren Sie das Verzeichnis ptxdist/rules/rauc.* nach rules/ in Ihr BSP. Dies führt zu einer aktualisierten RAUC-Binärdatei für das Ziel und den Host.
Wenn Sie die Standard-RAUC-Bundle-Regel von PTXdist verwenden, kopieren Sie ptxdist/config/images/rauc.config nach config/images/ in Ihr BSP. Die enthaltene Manifestvorlage konfiguriert das plain-Bundle-Format, ändern Sie dies also nach Bedarf.
Wenn Sie ein benutzerdefiniertes Bundle verwenden und auf das verity-Format wechseln möchten, müssen Sie das Manifest selbst entsprechend aktualisieren.
Falls das Archiv rauc-1.5.tar.xz noch nicht zum Download verfügbar ist, kopieren Sie das Archiv aus diesem Repository in Ihr Verzeichnis dl/rauc/.
Kopieren Sie buildroot/package/rauc/rauc.* nach package/rauc/ in Ihrem Buildroot-Checkout. Dies führt zu einer aktualisierten RAUC-Binärdatei für das Ziel und den Host.
Da Buildroot das Erstellen von Update-Bundles nicht automatisiert, müssen Sie Ihr Manifest manuell aktualisieren, wenn Sie das verity-Bundle-Format verwenden möchten.
RAUC v1.3 (veröffentlicht am 23.04.2020) hat die Unterstützung für OpenSSL-Versionen vor 1.1.1 entfernt, da diese vom OpenSSL-Projekt nicht mehr unterstützt wurden:
Falls Ihr System noch eine nicht unterstützte Version von OpenSSL verwendet und eine Aktualisierung auf 1.1.1 zusammen mit RAUC 1.5 nicht machbar ist, steht ein Backport-Patch (0001-backport-to-OpenSSL-1.0.2.patch) zur Verfügung. Beachten Sie, dass dieser Patch nicht denselben Testumfang wie die Version 1.5 hat.
In RAUC 1.5 wird das Loop-Device-ioctl LOOP_SET_BLOCK_SIZE verwendet, um die logische Blockgröße auf 4096 zur Leistungsoptimierung einzustellen. Die Unfähigkeit, dies einzustellen, ist nicht kritisch und wird nur durch eine Debug-Level-Meldung angezeigt.
Da das Symbol LOOP_SET_BLOCK_SIZE jedoch in Kernel-Versionen vor 4.14 nicht existiert, schlägt die Kompilierung mit diesen älteren Kernel-Headern fehl. Um dies zu beheben, muss das Symbol optional in RAUC selbst definiert werden. Ein Patch dafür (0001-src-mount.c-fix-build-with-kernel-4.14.patch) ist verfügbar (von https://github.com/rauc/rauc/pull/673).
Die Korrektur wird auch Teil von RAUC 1.5.1 sein.