
esempi di integrazione per la correzione di CVE-2020-25860
Questa repository contiene esempi per semplificare l'integrazione dell'aggiornamento RAUC in progetti esistenti. Puoi iscriverti a https://github.com/rauc/rauc-1.5-integration/issues/1 per ricevere notifiche degli aggiornamenti importanti di questa repository e dell'integrazione nei sistemi di build upstream.
Gli esempi sono stati derivati dalle versioni upstream attuali, quindi potrebbero essere necessari alcuni aggiustamenti a seconda dell'età del progetto esistente.
L'avviso che sarà pubblicato il 21 dicembre è disponibile come https://github.com/rauc/rauc-1.5-integration/blob/master/CVE-2020-25860.md. Questa repository sarà resa pubblica in quel momento.
Se l'archivio rauc-1.5.tar.xz non è ancora disponibile per il download, copia
l'archivio da questa repository nella tua DL_DIR (di solito definita in
build/conf/local.conf).
Copia la ricetta aggiornata da oe_yocto/recipes-rauc-1.5/rauc/* nel layer
specifico del progetto, avendo cura di mantenere le personalizzazioni esistenti (come
system.conf o ca.cert.pem).
Copia oe_yocto/classes/verity_bundle.bbclass nella directory classes/ di
questo layer (potrebbe essere necessario creare quella directory). Questa classe è un sostituto
della bundle.bbclass del layer meta-rauc, con supporto aggiuntivo per
la creazione di bundle nel formato verity. Il nome diverso viene usato per evitare
problemi con l'ordine di ricerca delle classi.
Se vuoi creare bundle nel formato verity, usa inherit verity_bundle
invece di inherit bundle nella tua ricetta bundle e imposta RAUC_BUNDLE_FORMAT = "verity" per selezionare il formato. Un esempio è disponibile come
oe_yocto/recipes-rauc-1.5/bundles/core-bundle-minimal-verity.bb.
Se l'archivio rauc-1.5.tar.xz non è ancora disponibile per il download, copia
l'archivio da questa repository nella tua directory sorgente PTXdist.
Copia la directory ptxdist/rules/rauc.* in rules/ nel tuo BSP. Questo produce
un binario RAUC aggiornato per il target e per l'host.
Se usi la regola bundle RAUC predefinita di PTXdist, copia
ptxdist/config/images/rauc.config in config/images/ nel tuo BSP. Il
template di manifest incluso configura il formato bundle plain, quindi
modificalo come necessario.
Se usi un bundle personalizzato e vuoi passare al formato verity, dovrai
aggiornarne il manifest da solo.
Se l'archivio rauc-1.5.tar.xz non è ancora disponibile per il download, copia
l'archivio da questa repository nella tua directory dl/rauc/.
Copia buildroot/package/rauc/rauc.* in package/rauc/ nel tuo checkout
Buildroot. Questo produce un binario RAUC aggiornato per il target e per l'host.
Poiché Buildroot non automatizza la creazione dei bundle di aggiornamento, se vuoi usare
il formato bundle verity, dovrai aggiornare il tuo manifest manualmente.
RAUC v1.3 (rilasciata il 2020-04-23) ha rimosso il supporto per le versioni di OpenSSL precedenti alla 1.1.1, poiché non erano più supportate dal progetto OpenSSL:
Se il tuo sistema usa ancora una versione non supportata di OpenSSL e l'aggiornamento a
1.1.1 insieme a RAUC 1.5 non è fattibile, è disponibile una patch di backport
(0001-backport-to-OpenSSL-1.0.2.patch). Nota che questa patch
non ha la stessa ampiezza di test della release 1.5.
In RAUC 1.5, l'ioctl del dispositivo loop LOOP_SET_BLOCK_SIZE viene usato per impostare la
dimensione del blocco logico a 4096 per l'ottimizzazione delle prestazioni.
Non riuscire a impostarla non è critico e viene solo segnalato da un messaggio a livello
di debug.
Ma poiché il simbolo LOOP_SET_BLOCK_SIZE non esiste nelle versioni del kernel
precedenti alla 4.14, la compilazione con questi header del kernel più vecchi fallirà.
Per risolvere il problema, il simbolo deve essere opzionalmente definito in RAUC stesso.
È disponibile una patch per questo (0001-src-mount.c-fix-build-with-kernel-4.14.patch)
(da https://github.com/rauc/rauc/pull/673).
La correzione farà anche parte di RAUC 1.5.1.