Byla představena nová verze zálohovacího systému Restic 0.18, která umožňuje ukládání záloh v šifrované podobě ve verzovaném úložišti s podporou deduplikace. Systém je navržen tak, aby zálohy byly uchovávány v nedůvěryhodných prostředích, přičemž ztráta zálohy by neměla ohrozit systém. Při vytváření zálohy je možné definovat flexibilní pravidla pro zahrnutí a vyloučení souborů a adresářů (formát pravidel připomíná rsync nebo gitignore). Podporována je práce v Linuxu, macOS, Windows a systémech BSD. Kód projektu je napsán v jazyce Go a je distribuován pod licencí BSD.
Zálohy mohou být uloženy v místním souborovém systému, na externím serveru s přístupem přes SFTP/SSH nebo HTTP REST, v oblacích Amazon S3, OpenStack Swift, BackBlaze B2, Microsoft Azure Blob Storage a Google Cloud Storage, stejně jako v jakýchkoli úložištích, pro které jsou k dispozici backendy rclone. Pro ukládání lze také použít vyvíjený projekt rest server, který poskytuje vyšší výkon ve srovnání s jinými backendy a může pracovat v režimu pouze pro doplnění, což neumožňuje mazání ani změnu záloh v případě kompromitace původního serveru a přístupu k šifrovacím klíčům.
Systém podporuje snapshoty, které odrážejí stav hierarchie adresářů v různých okamžicích času (snapshoty jsou automaticky vytvářeny pro každou zálohu). Je možné kopírovat snapshoty mezi různými úložišti. Pro úsporu přenosových dat jsou v průběhu vytváření záloh kopírována pouze změněná data. Snapshot se zálohou může být přimontován ve formě virtuálního oddílu (montáž se provádí pomocí FUSE). Také jsou k dispozici příkazy pro analýzu změn a selektivní extrakci souborů.
Úložiště záloh v Restic manipuluje nikoli s celými soubory, ale s bloky proměnlivé velikosti, vybíranými pomocí Rabinova podpisu. Informace jsou uchovávány na základě obsahu, nikoli názvů souborů (s názvy a objekty spojenými s daty se pracuje na úrovni metadat bloku). Pro úsporu místa v úložišti a vyloučení nadbytečného kopírování dat se provádí deduplikace.
Na externích serverech jsou informace uchovávány v šifrované podobě — pro kontrolní součty a deduplikaci se používají hashe SHA-256, pro šifrování algoritmus AES-256-CTR a pro zajištění integrity autentizační kódy na základě Poly1305-AES. Je zajištěna možnost verifikace záložní kopie podle kontrolních součtů a autentizačních kódů k potvrzení, že integrita souborů nebyla narušena.
V nové verzi byla odstraněna možnost provádění útoku (PDF) na určení přítomnosti zadaných souborů v šifrovaném úložišti záložních kopií. Tento útok umožňuje zjistit, zda se v šifrovaném zálohování nachází konkrétní soubor, přístupem k úložišti záloh nebo analýzou síťového provozu se zálohami. Například útok může provést správce serveru, na který se ukládají zálohy, poskytovatel internetových služeb nebo bezpečnostní služby, které získaly přístup k serveru nebo k provozu. Cílem útoku může být vyšetřování úniku informací, při kterém mohou bezpečnostní služby posoudit přítomnost zajímavých dokumentů v úložišti záložních kopií.
Aby útočník mohl zranitelnost využít, musí zajistit přidání svých dat do záložní kopie oběti nebo vědět, že ve známém souboru se nachází v záložní kopii. Pokud je v záložní kopii soubor, o kterém útočník ví (například nějaký typový systémový nebo multimediální obsah), může po získání přístupu k šifrovanému úložišti zjistit, zda uvnitř jsou i další zajímavé soubory.
Metoda je založena na tom, že na základě charakteristik komprese obsahu lze určit parametry bloků, které se používají při rozdělování obsahu. K určení podobných parametrů stačí zjistit 3 šifrované bloky obsahující údaje známé útočníkovi.
Zranitelnost není specifická pro Restic a zasahuje i další zálohovací systémy, které používají dělení dat na bloky pomocí techniky CDC (Content-Defined Chunking), jako jsou BorgBackup, Tarsnap, Bupstash a Duplicacy. V Tarsnap byla problém odstraněna v aktualizaci 1.0.41, v BorgBackup se pracuje na opravě, kterou plánují zahrnout do větve borg 2. V Bupstash byla poslední změna provedena před 2 lety a v Duplicacy před 4 měsíci.
Dále se uvádí, že v systémech využívajících deduplikaci, pokud existuje možnost přidávat vlastní soubory do zálohy, je možné to provést jednodušeji a zjistit přítomnost zajímavých souborů nepřímým způsobem. Po přidání kontrolovaného souboru je možné vyhodnotit změnu velikosti úložiště — pokud již soubor v úložišti existuje, jeho opětovné přidání kvůli deduplikaci nepovede k příslušnému zvětšení velikosti.
Kromě opravy zranitelnosti v Restic 0.18 byla také navržena řada novinek:
- Byla přidána experimentální podpora pro "chladná" úložiště záloh (data se stanou dostupná k vyzdvižení během minut nebo hodin po žádosti), která podporují protokol S3, jako například Amazon S3 Glacier.
- Do příkazů check a tag byla přidána podpora pro výstup ve formátu JSON.
- Při sestavování obrazů pro GitHub Container Registry byly zohledněny doporučení SLSA (Supply-chain Levels for Software Artifacts).
- Do příkazu ls byla přidána volba metod pro třídění výstupu. V příkazu find je ve výchozím nastavení použito třídění podle data (od nejnovějších po nejstarší).
- Byla poskytnuta možnost vyloučit z operace přebalování soubory menší než zadanou velikost.
- Byla přidána možnost pro zapnutí/vypnutí obnovení rozšířených atributů souborů.
- Byla přidána podpora pro OS DragonFlyBSD.
- Byla přidána podpora pro rozšířené atributy souborů na systémech s NetBSD 10+.
- V větvi restic 0.19.0 je plánováno odstranění podpory zastaralých funkcí, aktivovaných nastavením deprecate-legacy-index, deprecate-s3-legacy-layout, explicit-s3-anonymous-auth a safe-forget-keep-tags.
- Byla ukončena podpora starých verzí Windows a macOS, nyní je nutné minimálně Windows 10, Windows Server 2016 nebo macOS 11. Ukončena byla rovněž podpora verzí TLS do 1.2.
Zdroj: opennet.ru
