Rilascio del sistema di backup Restic 0.18. Attacco al CDC

È stata rilasciata la versione 0.18 del sistema di backup Restic, che consente di memorizzare i backup in forma crittografata in un repository versionato con supporto per deduplicazione. Il sistema è progettato per garantire che i backup siano archiviati in ambienti non fidati, evitando che la compromissione di un backup possa compromettere il sistema stesso. Durante la creazione del backup è possibile definire regole flessibili per includere ed escludere file e cartelle (il formato delle regole è simile a rsync o gitignore). È supportato l'uso su Linux, macOS, Windows e sistemi BSD. Il codice del progetto è scritto in Go e distribuito con licenza BSD.

Le copie di backup possono essere memorizzate nel file system locale, su dispositivi esterni server con accesso tramite SFTP/SSH o HTTP REST, su cloud come Amazon S3, OpenStack Swift, BackBlaze B2, Microsoft Azure Blob Storage e Google Cloud Storage, così come in qualsiasi archiviazione per la quale sono disponibili backend rclone. Per l'archiviazione può essere utilizzato anche un progetto in sviluppo chiamato rest server, che offre prestazioni superiori rispetto ad altri backend e può operare in modalità solo supplementare, impedendo la cancellazione o la modifica dei backup in caso di compromissione del server originale e accesso alle chiavi di crittografia.

Il sistema supporta snapshot che riflettono lo stato della gerarchia delle cartelle in momenti diversi (gli snapshot vengono creati automaticamente per ogni backup). È possibile copiare gli snapshot tra diversi repository. Per risparmiare traffico, durante la creazione dei backup vengono copiati solo i dati modificati. Uno snapshot con un backup può essere montato come una partizione virtuale (il montaggio avviene tramite FUSE). Sono anche disponibili comandi per analizzare le modifiche e per estrarre selettivamente i file.

Lo storage dei backup in Restic manipola non file interi, ma blocchi di dimensione variabile, scelti utilizzando la firma di Rabin. Le informazioni sono archiviate in base ai contenuti e non ai nomi dei file (i nomi e gli oggetti associati ai dati sono definiti a livello di metadati del blocco). Per risparmiare spazio di archiviazione e per evitare duplicazioni non necessarie dei dati, viene effettuata la deduplicazione.

Sui server esterni, le informazioni sono memorizzate in forma crittografata: per i checksum e la deduplicazione vengono utilizzati gli hash SHA-256, per la crittografia l'algoritmo AES-256-CTR e per garantire l'integrità, i codici di autenticazione basati su Poly1305-AES. È prevista la possibilità di verificare il backup tramite checksum e codici di autenticazione per confermare che l'integrità dei file non sia stata compromessa.

Nella nuova versione è stata eliminata la possibilità di effettuare un attacco (PDF) per determinare la presenza di determinati file nello storage crittografato dei backup. L'attacco consente di verificare se un file specifico si trova nel backup crittografato, accedendo allo storage dei backup o analizzando il traffico di rete dei backup. Ad esempio, l'attacco potrebbe essere portato a termine da un amministratore del server sul quale vengono salvati i backup, da un provider Internet o da agenzie governative che hanno ottenuto accesso a server o al traffico. L'obiettivo di tale attacco potrebbe essere l'indagine su una fuga di informazioni, in cui le agenzie governative sarebbero in grado di valutare la presenza di documenti di loro interesse nello storage dei backup.

Per sfruttare la vulnerabilità, l'attaccante deve riuscire ad aggiungere i propri dati nel backup della vittima o sapere che un file a lui noto è presente nel backup. Se nel backup è presente un file di cui l'attaccante è a conoscenza (ad esempio, un contenuto sistemico o multimediale standard), accedendo allo storage crittografato, l'attaccante può determinare se ci sono altri file a lui interessati al suo interno.

Il metodo si basa sul fatto che, in base alle caratteristiche di compressione del contenuto, è possibile determinare i parametri dei blocchi utilizzati nella suddivisione del contenuto. Per determinare tali parametri è sufficiente identificare 3 blocchi crittografati contenenti dati noti all'attaccante.

La vulnerabilità non è specifica per Restic e colpisce altri sistemi di backup che utilizzano la suddivisione dei dati in blocchi tramite la tecnica CDC (Content-Defined Chunking), come BorgBackup, Tarsnap, Bupstash e Duplicacy. In Tarsnap il problema è stato risolto nell'aggiornamento 1.0.41, mentre in BorgBackup è in corso il lavoro per una correzione che si intende includere nel ramo borg 2. In Bupstash l'ultimo aggiornamento risale a 2 anni fa, mentre in Duplicacy è stato fatto l'ultimo aggiornamento 4 mesi fa.

Inoltre, si osserva che nei sistemi che utilizzano la deduplicazione, se esiste la possibilità di aggiungere file personali nel backup, è possibile procedere in modo più semplice e determinare la presenza di file d'interesse in modo indiretto. Dopo aver aggiunto il file da verificare, è possibile valutare la modifica della dimensione dello storage: se il file è già presente nello storage, il suo reinserimento non porterà a un adeguato aumento della dimensione a causa della deduplicazione.

Oltre alla correzione delle vulnerabilità, Restic 0.18 introduce anche diverse novità:

  • È stata aggiunta il supporto sperimentale per i "cold" storage di backup (i dati diventano accessibili per il recupero dopo minuti o ore dalla richiesta), che supportano il protocollo S3, come Amazon S3 Glacier.
  • Nei comandi check e tag è stato aggiunto il supporto per l'output in formato JSON.
  • Nella creazione delle immagini per il GitHub Container Registry sono state considerate le raccomandazioni SLSA (Supply-chain Levels for Software Artifacts).
  • Nel comando ls è stata aggiunta la scelta del metodo di ordinamento dell'output. Nel comando find, di default è coinvolto l'ordinamento per data (dai più recenti ai più vecchi).
  • È stata fornita la possibilità di escludere dall'operazione di ri-pacchettizzazione i file di dimensione inferiore a quella specificata.
  • È stata aggiunta un'impostazione per attivare/disattivare il ripristino degli attributi estesi dei file.
  • È stato aggiunto il supporto per il sistema operativo DragonFlyBSD.
  • È stato aggiunto il supporto per gli attributi estesi dei file sui sistemi con NetBSD 10 e superiori.
  • Nella versione restic 0.19.0 è prevista la rimozione del supporto per funzionalità obsolete, attivate tramite le impostazioni deprecate-legacy-index, deprecate-s3-legacy-layout, explicit-s3-anonymous-auth e safe-forget-keep-tags.
  • È stato interrotto il supporto per le vecchie versioni di Windows e macOS; ora è richiesto almeno Windows 10, Windows Server 2016 o macOS 11. È stato interrotto il supporto per le versioni TLS inferiori a 1.2.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster