Foi anunciado o lançamento da nova versão 1.0 do The Update Framework, mais conhecido como TUF e que se caracteriza por ser um framework que fornece um meio para verificar e baixar atualizações com segurança.
O principal objetivo do projeto é proteger o cliente de ataques típicos a repositórios e infraestrutura, incluindo o combate à promoção de atualizações falsas por invasores criadas após obter acesso a chaves para gerar assinaturas digitais ou comprometer o repositório.
Sobre o TUF
O projeto desenvolve uma série de bibliotecas, formatos de arquivo e utilitários que pode ser facilmente integrado aos sistemas de atualização de aplicativos existentes, fornecendo proteção em caso de comprometimento de chave por parte dos desenvolvedores de software. Para usar o TUF, basta adicionar os metadados necessários ao repositório e incorporar os procedimentos fornecidos no TUF para upload e verificação de arquivos no código do cliente.
A estrutura do TUF assume a tarefa de verificar uma atualização, baixar oatualizar e verificar sua integridade. O sistema de instalação de atualização não cruza diretamente com metadados adicionais, que são verificados e carregados pelo TUF.
Para integração com aplicativos e sistemas de instalação de atualização, é fornecida uma API de baixo nível para acessar metadados e implementação de uma API de cliente de alto nível ngclient, pronta para integração de aplicativos.
Entre os ataques que o TUF pode combater são as substituição de versão sob o pretexto de atualizações para bloquear correções de vulnerabilidades no software ou reverter o usuário para uma versão vulnerável anterior, bem como a promoção de atualizações maliciosas assinado corretamente usando uma chave comprometida, realizando ataques DoS em clientes, como encher o disco com uma atualização sem fim.
Proteção contra comprometimento da infraestrutura do fornecedor de software é obtido mantendo registros verificáveis separados do estado do repositório ou aplicativo.
Os Metadados verificados pelo TUF incluem informações importantes que podem ser confiáveis, hashes criptográficos para avaliar a integridade do arquivo, assinaturas digitais adicionais para verificar metadados, informações de número de versão e informações de vida útil do registro. As chaves usadas para verificação têm uma vida útil limitada e exigem atualização constante para proteger contra assinaturas com chaves antigas.
A redução do risco de comprometimento de todo o sistema é alcançada por meio do uso de um modelo de split trust, no qual cada parte se limita apenas à área pela qual é diretamente responsável.
O sistema usa uma hierarquia de funções com suas próprias chaves, por exemplo, o papel root assina as chaves dos papéis responsáveis pelos metadados no repositório, dados sobre o tempo de formação das atualizações e builds de destino, por sua vez, o papel responsável pelos builds assina os papéis associados à certificação do arquivos entregues.
Para proteger contra o comprometimento de chaves, usa um mecanismo para revogação e substituição rápida de chaves. Cada chave individual concentra apenas os poderes mínimos necessários, e as operações de notarização exigem o uso de várias chaves (o vazamento de uma única chave não permite um ataque imediato ao cliente e, para comprometer todo o sistema, é necessário capturar as chaves do todos os participantes).
O cliente só pode aceitar arquivos criados posteriormente aos arquivos recebidos anteriormente, e os dados são baixados apenas de acordo com o tamanho especificado nos metadados certificados.
A versão publicada de O TUF 1.0.0 oferece uma implementação de referência completamente reescrita e versão estabilizada da especificação TUF que você pode usar como um exemplo pronto para uso ao criar suas próprias implementações ou integrar em seus projetos.
A nova implementação contém significativamente menos código (1400 linhas em vez de 4700), é mais fácil de manter e pode ser facilmente estendido, por exemplo, se você precisar adicionar suporte para pilhas de rede específicas, sistemas de armazenamento ou algoritmos de criptografia.
O projeto é desenvolvido sob os auspícios da Linux Foundation e é usado para melhorar a segurança da entrega de atualizações em projetos como Docker, Fuchsia, Automotive Grade Linux, Bottlerocket e PyPI (a inclusão de verificação de download e metadados no PyPI é esperada em breve).
Por fim, se estiver interessado em poder saber um pouco mais sobre o assunto, pode consultar os detalhes no link a seguir.