Foi lançado o Restic 0.18, um sistema de backup que permite armazenar cópias de segurança de forma criptografada em um repositório versionado com suporte a deduplicação. O sistema é projetado para que os backups sejam mantidos em ambientes não confiáveis, de modo que o acesso a uma cópia de segurança não comprometa a segurança do sistema. Ao criar uma cópia de segurança, é possível definir regras flexíveis para incluir e excluir arquivos e diretórios (o formato das regras lembra o rsync ou gitignore). É compatível com Linux, macOS, Windows e sistemas BSD. O código do projeto é escrito na linguagem Go e distribuído sob a licença BSD.
Backups podem ser armazenados no sistema de arquivos local, em externo servidor com acesso via SFTP/SSH ou HTTP REST, nas nuvens Amazon S3, OpenStack Swift, BackBlaze B2, Microsoft Azure Blob Storage e Google Cloud Storage, bem como em qualquer armazenamento para o qual existam backends rclone. Para armazenamento, também pode ser utilizado um projeto em desenvolvimento chamado rest server, que oferece desempenho superior em comparação com outros backends e é capaz de operar em modo somente para complementação, que não permite a exclusão ou modificação de backups em caso de comprometimento do servidor de origem e acesso às chaves de criptografia.
O sistema suporta snapshots que refletem o estado da hierarquia de diretórios em diferentes pontos no tempo (os snapshots são criados automaticamente para cada cópia de segurança). É possível copiar snapshots entre diferentes repositórios. Para economizar largura de banda durante a criação de backups, apenas os dados alterados são copiados. Um snapshot com um backup pode ser montado na forma de uma partição virtual (a montagem é realizada através do FUSE). Também são fornecidos comandos para analisar alterações e extração seletiva de arquivos.
O repositório de backups no Restic não manipula arquivos inteiros, mas sim blocos de tamanho variável, selecionados usando a assinatura de Rabin. As informações são armazenadas vinculadas ao conteúdo, e não aos nomes dos arquivos (nomes e objetos relacionados aos dados são definidos em nível de metadados do bloco). Para economizar espaço de armazenamento e evitar cópias desnecessárias de dados, a deduplicação é realizada.
Em servidores externos, as informações são armazenadas de forma criptografada — para somas de verificação e deduplicação são utilizados hashes SHA-256, para criptografia — o algoritmo AES-256-CTR, e para garantir a integridade — códigos de autenticação baseados em Poly1305-AES. É prevista a possibilidade de verificação do backup por meio de somas de verificação e códigos de autenticação para confirmar que a integridade dos arquivos não foi violada.
Na nova versão, foi eliminada a possibilidade de realizar um ataque (PDF) para determinar a presença de arquivos específicos em um armazenamento de backups criptografado. O ataque permite identificar se um determinado arquivo está presente no backup criptografado, acessando o armazenamento de backups ou, se possível, analisando o tráfego de rede referente aos backups. Por exemplo, o ataque pode ser realizado pelo administrador do servidor onde os backups são armazenados, pelo provedor de internet ou por agências de segurança que tiveram acesso ao servidor ou ao tráfego. O objetivo do ataque pode ser a investigação de vazamentos de informações, onde agências de segurança podem avaliar a presença de documentos relevantes no armazenamento de backups.
Para explorar a vulnerabilidade, o atacante deve conseguir adicionar seus próprios dados ao backup da vítima ou saber que um arquivo de seu conhecimento está presente no backup. Se houver um arquivo conhecido pelo atacante no backup (por exemplo, um tipo de conteúdo multimídia ou sistema), ao acessar o armazenamento criptografado, o atacante pode determinar se outros arquivos de interesse estão presentes.
O método é baseado na premissa de que, com base nas características da compressão do conteúdo, é possível determinar os parâmetros dos blocos usados para fragmentar o conteúdo. Para determinar tais parâmetros, é suficiente identificar 3 blocos criptografados contendo dados conhecidos pelo atacante.
A vulnerabilidade não é específica do Restic e afeta outros sistemas de backup que utilizam a segmentação de dados por meio da técnica CDC (Content-Defined Chunking), como BorgBackup, Tarsnap, Bupstash e Duplicacy. No Tarsnap, o problema foi resolvido na atualização 1.0.41, enquanto no BorgBackup, há trabalho em andamento para uma correção que se pretende incluir na ramificação borg 2. No Bupstash, a última alteração foi há 2 anos, e no Duplicacy — 4 meses atrás.
Além disso, observa-se que em sistemas que utilizam deduplicação, ao haver a possibilidade de adicionar seus próprios arquivos ao backup, pode-se agir de maneira mais simples, determinando a presença dos arquivos de interesse de forma indireta. Após a adição do arquivo verificado, pode-se avaliar a alteração no tamanho do armazenamento — se o arquivo já estiver presente no armazenamento, sua nova adição devido à deduplicação não resultará em um aumento significativo no tamanho.
Além da correção da vulnerabilidade no Restic 0.18, várias novidades foram propostas:
- Suporte experimental foi adicionado para 'cold' storage de backups (os dados tornam-se acessíveis para extração minutos ou horas após a solicitação), que suportam o protocolo S3, como Amazon S3 Glacier.
- As equipes check e tag agora suportam a saída no formato JSON.
- Ao criar imagens para o GitHub Container Registry, foram consideradas as recomendações do SLSA (Supply-chain Levels for Software Artifacts).
- O comando ls agora permite escolher o método para ordenar a saída. No comando find, a ordenação padrão é por data (do mais novo para o mais antigo).
- Uma opção foi disponibilizada para excluir da operação de reempacotamento arquivos com tamanho inferior ao especificado.
- Foi adicionada uma configuração para ativar/desativar a restauração de atributos estendidos de arquivos.
- Suporte adicionado para o sistema operacional DragonFlyBSD.
- Suporte para atributos estendidos de arquivos em sistemas com NetBSD 10+ foi adicionado.
- Na versão restic 0.19.0, está prevista a remoção do suporte para funcionalidades obsoletas, ativadas através das configurações deprecate-legacy-index, deprecate-s3-legacy-layout, explicit-s3-anonymous-auth e safe-forget-keep-tags.
- O suporte para versões antigas do Windows e macOS foi interrompido; agora é necessário ter pelo menos Windows 10, Windows Server 2016 ou macOS 11. O suporte para versões do TLS anteriores a 1.2 foi encerrado.
Fonte: opennet.ru
