
exemplos de integração para a correção do CVE-2020-25860
Este repositório contém exemplos para simplificar a integração da atualização RAUC em projetos existentes. Você pode se inscrever em https://github.com/rauc/rauc-1.5-integration/issues/1 para receber notificações de atualizações importantes neste repositório e de integração nos sistemas de build upstream.
Os exemplos foram derivados das versões upstream atuais, então alguns ajustes podem ser necessários dependendo da idade do projeto existente.
O aviso a ser publicado em 21 de dezembro está disponível em https://github.com/rauc/rauc-1.5-integration/blob/master/CVE-2020-25860.md. Este repositório também será tornado público nesse momento.
Se o arquivo rauc-1.5.tar.xz ainda não estiver disponível para download, copie o arquivo deste repositório para seu DL_DIR (geralmente definido em seu build/conf/local.conf).
Copie a receita atualizada de oe_yocto/recipes-rauc-1.5/rauc/* para a camada apropriada específica do projeto, tomando cuidado para manter as personalizações existentes (como system.conf ou ca.cert.pem).
Copie oe_yocto/classes/verity_bundle.bbclass para o diretório classes/ desta camada (pode ser necessário criar esse diretório). Essa classe é uma substituição para a bundle.bbclass da camada meta-rauc, com suporte adicional para criar bundles no formato verity. O nome diferente é usado para evitar problemas com a ordem de busca de classes.
Se você deseja construir bundles no formato verity, use inherit verity_bundle em vez de inherit bundle em sua receita de bundle e defina RAUC_BUNDLE_FORMAT = "verity" para selecionar o formato. Um exemplo está disponível em oe_yocto/recipes-rauc-1.5/bundles/core-bundle-minimal-verity.bb.
Se o arquivo rauc-1.5.tar.xz ainda não estiver disponível para download, copie o arquivo deste repositório para seu diretório de fontes PTXdist.
Copie o diretório ptxdist/rules/rauc.* para rules/ em seu BSP. Isso resulta em um binário RAUC atualizado para o alvo e o host.
Se você usar a regra de bundle RAUC padrão do PTXdist, copie ptxdist/config/images/rauc.config para config/images/ em seu BSP. O modelo de manifesto incluído configura o formato de bundle plain, então altere isso conforme necessário.
Se você usar um bundle personalizado e quiser mudar para o formato verity, precisará atualizar o manifesto para isso você mesmo.
Se o arquivo rauc-1.5.tar.xz ainda não estiver disponível para download, copie o arquivo deste repositório para seu diretório dl/rauc/.
Copie buildroot/package/rauc/rauc.* para package/rauc/ em sua cópia do Buildroot. Isso resulta em um binário RAUC atualizado para o alvo e o host.
Como o Buildroot não automatiza a construção de bundles de atualização, se você quiser usar o formato de bundle verity, precisará atualizar seu manifesto manualmente.
RAUC v1.3 (lançado em 2020-04-23) removeu o suporte para versões do OpenSSL anteriores a 1.1.1, pois elas não eram mais suportadas pelo projeto OpenSSL:
Se seu sistema ainda usa uma versão não suportada do OpenSSL e a atualização para 1.1.1 junto com RAUC 1.5 não é viável, um patch de backport (0001-backport-to-OpenSSL-1.0.2.patch) está disponível. Observe que este patch não tem a mesma abrangência de testes que o lançamento 1.5.
No RAUC 1.5, o ioctl do dispositivo loop LOOP_SET_BLOCK_SIZE é usado para definir o tamanho do bloco lógico para 4096 para otimização de desempenho. Não conseguir defini-lo não é crítico e é apenas observado por uma mensagem de nível de depuração.
Mas como o símbolo LOOP_SET_BLOCK_SIZE não existe em versões do kernel anteriores a 4.14, a compilação contra esses cabeçalhos de kernel mais antigos falhará. Para resolver isso, o símbolo deve ser opcionalmente definido no próprio RAUC. Um patch para isso (0001-src-mount.c-fix-build-with-kernel-4.14.patch) está disponível (de https://github.com/rauc/rauc/pull/673).
A correção também fará parte do RAUC 1.5.1.