
ejemplos de integración para el arreglo de CVE-2020-25860
Este repositorio contiene ejemplos para simplificar la integración de la actualización RAUC en proyectos existentes. Puede suscribirse a https://github.com/rauc/rauc-1.5-integration/issues/1 para recibir notificaciones de actualizaciones importantes de este repositorio y de la integración en los sistemas de compilación upstream.
Los ejemplos han sido derivados de las versiones actuales del upstream, por lo que puede ser necesario algún ajuste dependiendo de la antigüedad del proyecto existente.
El aviso que se publicará el 21 de diciembre está disponible como https://github.com/rauc/rauc-1.5-integration/blob/master/CVE-2020-25860.md. Este repositorio también se hará público en ese momento.
Si el archivo rauc-1.5.tar.xz no está disponible para descarga, copie el archivo de este repositorio a su DL_DIR (normalmente definido en su build/conf/local.conf).
Copie la receta actualizada de oe_yocto/recipes-rauc-1.5/rauc/* a la capa específica del proyecto correspondiente, teniendo cuidado de mantener las personalizaciones existentes (como system.conf o ca.cert.pem).
Copie oe_yocto/classes/verity_bundle.bbclass al directorio classes/ de esta capa (puede que necesite crear ese directorio). Esta clase es un reemplazo de bundle.bbclass de la capa meta-rauc, con soporte añadido para crear bundles en el formato verity. Se usa un nombre diferente para evitar problemas con el orden de búsqueda de clases.
Si desea construir bundles en el formato verity, use inherit verity_bundle en lugar de inherit bundle en su receta de bundle y establezca RAUC_BUNDLE_FORMAT = "verity" para seleccionar el formato. Hay un ejemplo disponible como oe_yocto/recipes-rauc-1.5/bundles/core-bundle-minimal-verity.bb.
Si el archivo rauc-1.5.tar.xz no está disponible para descarga, copie el archivo de este repositorio a su directorio de fuentes de PTXdist.
Copie el directorio ptxdist/rules/rauc.* a rules/ en su BSP. Esto produce un binario RAUC actualizado para el destino y el host.
Si utiliza la regla de bundle RAUC por defecto de PTXdist, copie ptxdist/config/images/rauc.config a config/images/ en su BSP. La plantilla de manifiesto incluida configura el formato de bundle plain, así que cámbielo según sea necesario.
Si utiliza un bundle personalizado y desea cambiar al formato verity, necesitará actualizar el manifiesto usted mismo.
Si el archivo rauc-1.5.tar.xz no está disponible para descarga, copie el archivo de este repositorio a su directorio dl/rauc/.
Copie buildroot/package/rauc/rauc.* a package/rauc/ en su checkout de Buildroot. Esto produce un binario RAUC actualizado para el destino y el host.
Como Buildroot no automatiza la construcción de bundles de actualización, si desea usar el formato de bundle verity, necesitará actualizar su manifiesto manualmente.
RAUC v1.3 (publicado el 2020-04-23) eliminó el soporte para versiones de OpenSSL anteriores a 1.1.1, ya que ya no eran compatibles con el proyecto OpenSSL:
Si su sistema todavía utiliza una versión no compatible de OpenSSL y no es factible actualizar a 1.1.1 junto con RAUC 1.5, hay disponible un parche backport (0001-backport-to-OpenSSL-1.0.2.patch). Tenga en cuenta que este parche no tiene la misma amplitud de pruebas que la versión 1.5.
En RAUC 1.5, se utiliza el ioctl del dispositivo loop LOOP_SET_BLOCK_SIZE para establecer el tamaño de bloque lógico a 4096 para optimización de rendimiento. No poder establecerlo no es crítico y solo se indica mediante un mensaje de nivel de depuración.
Pero como el símbolo LOOP_SET_BLOCK_SIZE no existe en versiones del kernel anteriores a 4.14, la compilación contra estos encabezados de kernel antiguos fallará. Para resolver esto, el símbolo debe definirse opcionalmente en RAUC mismo. Hay disponible un parche para esto (0001-src-mount.c-fix-build-with-kernel-4.14.patch) (de https://github.com/rauc/rauc/pull/673).
La corrección también será parte de RAUC 1.5.1.