Segurança de atualização de software

De um tradutor: deparei-me com TheUpdateFramework ao procurar bibliotecas que implementam atualizações automáticas de software na área de trabalho. Por um lado, a descrição dos aspectos de segurança dos sistemas de atualização de software apresentados abaixo foi interessante e detalhada para mim; por outro lado - com certeza, além da pesquisa acadêmica, embora sob a asa da LinuxFoundation, você pode encontrar muitas soluções adequadas. Você pode sugerir opções nos comentários.


TheUpdateFramework


Segurança


Podemos considerar um sistema de atualização de software "seguro" se:


  • ela descobrirá as últimas atualizações disponíveis em tempo hábil
  • quaisquer arquivos baixados pelo sistema de atualização estão corretos e
  • sem consequências prejudiciais ao verificar ou baixar arquivos.

Para conseguir isso, são necessárias estratégias preventivas viáveis ​​contra muitos ataques em potencial.


Ataques e fraquezas


Listados abaixo estão alguns dos ataques conhecidos nos sistemas de atualização de software, incluindo pontos fracos que tornam esses ataques possíveis. Para projetar uma estrutura segura de atualização de software, você precisa entender esses ataques e desenvolver estratégias de proteção. Algumas dessas deficiências podem estar relacionadas entre si, dependendo da arquitetura e implementação de um sistema de atualização de software específico.


  • Instale um software personalizado . Um invasor pode substituir arquivos arbitrários em resposta a pedidos de download e instalar o que quiser no sistema do cliente, mesmo sem determinar a ilegalidade de tais ações.
  • Atualizações de reversão de ataque . O invasor fornece ao sistema de atualização de software arquivos de uma versão anterior à instalada atualmente no cliente. O usuário instala uma versão que possivelmente contém vulnerabilidades, sem a capacidade de descobrir que esta versão está desatualizada. Mais tarde, as vulnerabilidades podem ser exploradas por um invasor.
  • Retroceder ataques . O invasor aumenta arbitrariamente o número da versão, tornando-o muito mais alto do que o valor atual, enganando o sistema de atualização de software e forçando-o a acreditar que quaisquer atualizações sucessivas estão realmente tentando reverter a versão do software para o cliente, para uma versão desatualizada anterior. Em algumas situações, por exemplo, se houver o número máximo de versão possível, o criminoso poderá usar esse máximo para que o sistema de atualização nunca possa instalar uma nova atualização.
  • Ataques de congelamento ilimitado . O invasor continua retornando arquivos que o cliente já viu para o sistema de atualização de software. Como resultado, o cliente permanece no escuro sobre novas versões de software.
  • Ataques de dados sem fim . Em resposta a uma solicitação de download, o atacante retorna um fluxo interminável de dados, causando diretamente danos ao cliente (por exemplo, preenchendo um disco ou RAM).
  • Ataca uma resposta lenta . O invasor responde aos clientes com um fluxo de dados muito lento, o que acaba levando ao fato de que o cliente não pode concluir o processo de atualização.
  • Ataques de dependências em excesso . O invasor informa o cliente que a instalação do software necessário também requer a instalação de software de terceiros ( oi, mail.ru - aprox. Por. ). Esse software de terceiros pode ser de uma fonte confiável, mas, no entanto, possui vulnerabilidades conhecidas que um invasor pode explorar.
  • Ataques de combinação mista . O invasor retorna ao cliente uma captura instantânea do repositório que contém arquivos que nunca existiram na mesma revisão ao mesmo tempo. Isso pode levar à instalação de versões desatualizadas de dependências e outras consequências mais complexas.
  • Instalando outro software . O invasor retorna um arquivo confiável para o cliente, que simplesmente não é o que o cliente queria instalar.
  • Espelhos maliciosos que impedem atualizações . Um invasor controla um dos espelhos do repositório e pode usá-lo para impedir que os clientes recebam atualizações de outros espelhos não infectados.
  • Vulnerabilidades de comprometimento de chave . Um invasor que pode comprometer uma única chave no sistema (ou várias chaves, cujo número não excede um limite especificado), pode comprometer os clientes. Esses ataques podem ocorrer no caso de confiar em uma única chave online (por exemplo, ao proteger atualizações apenas com criptografia SSL) e no caso de uma única chave offline (na maioria dos sistemas de atualização de software que usam chaves para assinatura).

Princípios de segurança


Para garantir que o sistema esteja protegido de todos os ataques descritos acima, a arquitetura e a implementação do Update Framework (TUF) se baseiam em vários conceitos básicos. Detalhes de como o TUF transmite as informações descritas acima podem ser encontrados na documentação de metadados .


Confiança


Confiar nos arquivos baixados significa realmente assumir que os arquivos foram fornecidos por uma parte sem soluções arquiteturais vulneráveis. Os dois aspectos muitas vezes esquivos da confiança em um sistema de atualização de software são:


  • A confiança não deve ser concedida para sempre. A confiança deve ser revogada se não for atualizada.
  • A confiança não deve ser dada igualmente para todos os participantes. Esse tipo de confiança compartilhada significa que você só pode confiar nos arquivos de membros cuja provisão por esse membro é especificada pela função raiz.

Redução de risco chave (resistência ao comprometimento)


As assinaturas criptográficas são um componente essencial da segurança nos sistemas de atualização de software. A segurança das chaves usadas nessas assinaturas afeta diretamente a segurança dos clientes que o sistema protege. Em vez de acreditar ingenuamente que as chaves privadas nunca podem ser comprometidas, os sistemas de atualização de software seguros devem prever como proteger os clientes da possibilidade de comprometer essas chaves. Este é o princípio básico da resistência ao compromisso.


A proteção de clientes quando uma chave é comprometida inclui:


  • Substituição e retirada rápida e segura de chaves.
  • Confiança mínima em chaves com alto risco de comprometimento. As chaves armazenadas on-line ou usadas em sistemas de automação não devem representar uma ameaça instantânea para os clientes em caso de comprometimento.
  • Usando várias chaves e assinaturas de limite / quorum.

Integridade


Garantir a integridade no Update Framework (TUF) se aplica não apenas aos arquivos individuais, mas também ao repositório como um todo. É bastante óbvio que os clientes devem verificar se os arquivos individuais estão corretos. Já não é tão óbvio, mas ainda é muito importante que os clientes tenham certeza de que a auditoria do repositório como um todo está correta. Por exemplo, se uma fonte confiável fornecer dois arquivos, o sistema de atualização de software deverá ver as versões mais recentes dos dois arquivos (não apenas um) e apenas as versões desses dois arquivos que existem no repositório por vez.


Relevância


Como as atualizações de software geralmente corrigem vulnerabilidades, é importante que os sistemas de atualização de software obtenham as últimas versões disponíveis. Um invasor pode tentar forçar o cliente a instalar versões desatualizadas do software ou simplesmente convencer o cliente de que não há novas atualizações.


Garantir relevância significa:


  • Nunca aceite arquivos mais antigos que os já instalados.
  • Identifique possíveis problemas ao receber atualizações.

É importante notar que, se um invasor responder às solicitações do cliente, nem sempre é possível realizar uma atualização bem-sucedida. No entanto, o cliente deve poder determinar a probabilidade de atualizações que não pode receber.


Segurança de implementação


Além de uma arquitetura segura, o TUF também trabalha contra vulnerabilidades de implementação, incluindo vulnerabilidades comuns aos sistemas de atualização de software. Em alguns casos, a inclusão de informações adicionais nos metadados da atualização é usada para isso. Por exemplo, saber o tamanho esperado do arquivo baixado permite que o TUF limite a quantidade de dados baixados. Como resultado, o TUF é protegido contra o ataque de dados infinitos discutido acima.

Source: https://habr.com/ru/post/pt464171/


All Articles