Wydanie systemu backupu Restic 0.18. Atak na CDC

Wprowadzono wydanie systemu tworzenia kopii zapasowych Restic 0.18, który umożliwia przechowywanie kopii zapasowych w zaszyfrowanej formie w wersjonowanym repozytorium z obsługą deduplikacji. System pierwotnie zaprojektowano z myślą o tym, że kopie zapasowe są przechowywane w środowiskach, którym nie można ufać, a dostęp do kopii zapasowej przez osoby trzecie nie powinien zagrażać bezpieczeństwu systemu. Podczas tworzenia kopii zapasowej możliwe jest określenie elastycznych zasad dotyczących uwzględniania i wykluczania plików oraz katalogów (format reguł przypomina rsync lub gitignore). Obsługiwane są systemy Linux, macOS, Windows i BSD. Kod projektu napisano w języku Go i jest rozpowszechniany na licencji BSD.

Kopie zapasowe mogą być przechowywane w lokalnym systemie plików, na zewnętrznym serwerze z dostępem przez SFTP/SSH lub HTTP REST, w chmurach Amazon S3, OpenStack Swift, BackBlaze B2, Microsoft Azure Blob Storage oraz Google Cloud Storage, jak również w dowolnych magazynach, dla których istnieją backendy rclone. Do przechowywania można również wykorzystać rozwijany projekt rest server, zapewniający wyższą wydajność w porównaniu do innych backendów i mogący działać w trybie tylko do uzupełniania, co uniemożliwia usunięcie lub zmianę kopii zapasowych w przypadku kompromitacji pierwotnego serwera i dostępu do kluczy szyfrujących.

System obsługuje migawki, odzwierciedlające stan hierarchii katalogów w różnych momentach czasu (migawki są automatycznie tworzone dla każdej kopii zapasowej). Możliwe jest kopiowanie migawek pomiędzy różnymi repozytoriami. Aby zaoszczędzić transfer danych, podczas tworzenia kopii zapasowych kopiowane są tylko zmienione dane. Migawka z kopią zapasową może być zamontowana w formie wirtualnej partycji (montaż odbywa się za pomocą FUSE). Udostępniane są również polecenia do analizy zmian i selektywnego wyodrębniania plików.

Magazyn kopii zapasowych w Restic manipuluje nie całymi plikami, ale blokami o zmiennym rozmiarze, wybieranymi za pomocą podpisu Rabina. Informacje są przechowywane powiązane z treścią, a nie nazwami plików (powiązane z danymi nazwy i obiekty są definiowane na poziomie metadanych bloku). Aby zaoszczędzić miejsce w magazynie i uniknąć zbędnego kopiowania danych, odbywa się deduplikacja.

Na zewnętrznych serwerach informacje są przechowywane w zaszyfrowanej formie — do sum kontrolnych i deduplikacji używane są hashe SHA-256, do szyfrowania — algorytm AES-256-CTR, a do zapewnienia integralności — kody uwierzytelniające oparte na Poly1305-AES. Przewidziano możliwość weryfikacji kopii zapasowej pod kątem sum kontrolnych i kodów uwierzytelniających, aby potwierdzić, że integralność plików nie została naruszona.

W nowej wersji usunięto możliwość przeprowadzenia ataku (PDF), który polegał na określeniu obecności określonych plików w zaszyfrowanym magazynie kopii zapasowych. Atak ten pozwala stwierdzić, czy w zaszyfrowanym backupie znajduje się konkretny plik, uzyskując dostęp do magazynu kopii zapasowych lub analizując ruch sieciowy z kopii zapasowych. Na przykład atak taki może przeprowadzić administrator serwera, na którym przechowywane są backupy, dostawca internetu lub służby specjalne, które uzyskały dostęp do serwera lub ruchu. Celem ataku może być dochodzenie w sprawie wycieku informacji, w ramach którego służby specjalne będą mogły ocenić obecność interesujących dokumentów w magazynie kopii zapasowych.

Aby wykorzystać lukę, atakujący musi doprowadzić do dodania swoich danych do kopii zapasowej ofiary lub wiedzieć, że znany mu plik znajduje się w kopii zapasowej. Jeśli w kopii zapasowej znajduje się plik, o którym wie atakujący (na przykład jakiś typowy plik systemowy lub multimedialny), to zdobywając dostęp do zaszyfrowanego magazynu atakujący może określić, czy wewnątrz znajdują się inne interesujące go pliki.

Metoda opiera się na tym, że na podstawie cech kompresji treści można określić parametry bloków używanych podczas dzielenia zawartości. Aby ustalić takie parametry, wystarczy określić 3 zaszyfrowane bloki zawierające dane znane atakującemu.

Luka nie jest specyficzna dla Restic i dotyczy innych systemów tworzenia kopii zapasowych, które wykorzystują podział danych na bloki przy użyciu techniki CDC (Content-Defined Chunking), takich jak BorgBackup, Tarsnap, Bupstash i Duplicacy. W Tarsnap problem został rozwiązany w aktualizacji 1.0.41, w BorgBackup trwają prace nad poprawką, która ma być włączona do gałęzi borg 2. W Bupstash ostatnia zmiana miała miejsce 2 lata temu, a w Duplicacy — 4 miesiące temu.

Dodatkowo zauważa się, że w systemach wykorzystujących deduplikację, gdy istnieje możliwość dodawania własnych plików do kopii zapasowej, można postąpić prościej i wykrywać interesujące pliki pośrednio. Po dodaniu sprawdzanego pliku można ocenić zmianę rozmiaru magazynu — jeśli plik już istnieje w magazynie, jego ponowne dodanie z powodu deduplikacji nie spowoduje znaczącego zwiększenia rozmiaru.

Oprócz usunięcia podatności w Restic 0.18, zaproponowano również kilka nowości:

  • Dodano eksperymentalne wsparcie dla „zimnych” magazynów kopii zapasowych (dane stają się dostępne do ekstrakcji po minutach lub godzinach od żądania), które obsługują protokół S3, takich jak Amazon S3 Glacier.
  • Do poleceń check i tag dodano wsparcie dla wyjścia w formacie JSON.
  • Podczas budowy obrazów dla GitHub Container Registry uwzględniono zalecenia SLSA (Supply-chain Levels for Software Artifacts).
  • W poleceniu ls dodano wybór metody sortowania wyjścia. W poleceniu find domyślnie zastosowano sortowanie według daty (od najnowszych do najstarszych).
  • Udostępniono możliwość wykluczenia z operacji przepakowywania plików o wielkości mniejszej niż podana.
  • Dodano opcję włączenia/wyłączenia przywracania rozszerzonych atrybutów plików.
  • Dodano wsparcie dla systemu operacyjnego DragonFlyBSD.
  • Dodano wsparcie dla rozszerzonych atrybutów plików w systemach z NetBSD 10+.
  • W gałęzi restic 0.19.0 planowane jest usunięcie wsparcia dla przestarzałych funkcji aktywowanych przez ustawienia deprecate-legacy-index, deprecate-s3-legacy-layout, explicit-s3-anonymous-auth oraz safe-forget-keep-tags.
  • Zaprzestano wsparcia dla starych wersji Windows i macOS; obecnie wymagana jest co najmniej Windows 10, Windows Server 2016 lub macOS 11. Zaprzestano wsparcia dla wersji TLS poniżej 1.2.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster