Представен е новият релиз на системата за резервно копиране Restic 0.18, която позволява съхранение на резервни копия в криптиран вид в версионирано хранилище с поддръжка на дедупликация. Системата е проектирана така, че резервните копия да се съхраняват в несигурна среда, а достъпът до резервната копия от трети лица не трябва да компрометира системата. При създаването на резервна копия могат да се задават гъвкави правила за включване и изключване на файлове и директории (форматът на правилата напомня на rsync или gitignore). Поддържа работа в Linux, macOS, Windows и BSD системи. Кодът на проекта е написан на езика Go и се разпространява под лицензия BSD.
Резервните копия могат да се съхраняват в локалната файловата система, на външно сървър с достъп чрез SFTP/SSH или HTTP REST, в облаците Amazon S3, OpenStack Swift, BackBlaze B2, Microsoft Azure Blob Storage и Google Cloud Storage, както и в всякакви хранилища, за които има бекенди rclone. За съхранение може да се използва и развиван от проекта rest server, който осигурява по-висока производителност в сравнение с другите бекенди и може да работи в режим само за допълнение, който не позволява изтриване или промяна на резервните копия в случай на компрометиране на оригиналния сървър и достъп до ключовете за криптиране.
Системата поддържа моментни снимки, които отразяват състоянието на иерархията от директории в различни моменти от времето (моментни снимки се създават автоматично за всяка резервна копия). Възможно е копиране на моментни снимки между различни хранилища. За спестяване на трафик при създаването на резервни копия се копират само променените данни. Моментна снимка с резервна копия може да бъде монтирана под формата на виртуален дял (монтирането се извършва с помощта на FUSE). Осигурени са и команди за анализ на промените и селективно извличане на файлове.
Хранилището за резервни копия в Restic манипулира не с цели файлове, а с блокове с плаващ размер, избирани с помощта на Рабинов подпис. Информацията се съхранява свързана с съдържанието, а не с имената на файловете (свързаните с данните имена и обекти се определят на ниво метаданни на блока). За спестяване на пространство в хранилището и избягване на излишно копиране на данни се извършва дедупликация.
На външните сървъри информацията се съхранява в криптиран вид — за контролните суми и дедупликацията се използват хешове SHA-256, за криптиране — алгоритъм AES-256-CTR, а за гарантиране на целостта — кодове за удостоверяване, основани на Poly1305-AES. Предвидена е възможността за верификация на резервно копие по контролни суми и кодове за удостоверяване, за да се потвърди, че целостта на файловете не е нарушена.
В новата версия е устранена възможността за извършване на атака (PDF) за определяне наличието на зададени файлове в криптирано хранилище на резервни копия. Атаката позволява да се установи дали в криптираното копие има конкретен файл, получавайки достъп до хранилището на резервни копия или при анализ на мрежовия трафик с резервни копия. Например, атаката може да бъде извършена от администратора на сървъра, на който се съхраняват резервните копия, интернет доставчик или специални служби, получили достъп до сървъра или трафика. Целта на атаката може да бъде разследване на изтичане на информация, при което специалните служби могат да оценят наличието на интересуващи ги документи в хранилището на резервни копия.
За експлоатация на уязвимостта, атакуващият трябва да успее да добави собствените си данни в резервното копие на жертвата или да знае, че известен му файл е в резервното копие. Ако в резервното копие има файл, за който знае атакуващият (например, някакъв стандартен системен или мултимедиен контент), то получавайки достъп до криптираното хранилище, атакуващият може да определи дали има и други интересуващи го файлове вътре.
Методът е основан на това, че по особеностите на компресията на съдържанието могат да се определят параметрите на блоковете, използвани при фрагментирането на съдържанието. За определяне на подобни параметри е достатъчно да се определи 3 криптирани блока, съдържащи данни, известни на атакуващия.
Уязвимостта не е специфична за Restic и засяга други системи за резервно копиране, използващи разделяне на данните на блокове с техниката CDC (Content-Defined Chunking), като BorgBackup, Tarsnap, Bupstash и Duplicacy. В Tarsnap проблемът е устранен в обновлението 1.0.41, в BorgBackup се работи по поправка, която се планира да бъде включена в клон borg 2. В Bupstash последното изменение е преди 2 години, а в Duplicacy — преди 4 месеца.
Допълнително се отбелязва, че в системите, използващи дедупликация, при наличието на възможност да добавяте свои файлове в резервната копие, можете да постъпите по-лесно и да определите наличието на интересуващи файлове косвено. След добавянето на проверявания файл, можете да оцените изменението на размера на хранилището - ако файлът вече е наличен в хранилището, то повторното му добавяне заради дедупликацията няма да доведе до значително увеличение на размера.
Освен премахването на уязвимостта в Restic 0.18, също така са предложени няколко новости:
- Добавена е експериментална поддръжка за "студени" хранилища на резервни копия (данните стават достъпни за извличане след минути или часове след заявката), което поддържа S3 протокола, като Amazon S3 Glacier.
- В командите check и tag е добавена поддръжка за изход в JSON формат.
- При изграждането на образи за GitHub Container Registry са взети предвид препоръките на SLSA (Supply-chain Levels for Software Artifacts).
- В командата ls е добавен избор на метод за сортиране на изхода. В командата find по подразбиране е активирано сортиране по дата (от нови към стари).
- Предоставена е възможност за изключване от операцията за повторно опаковане на файлове с размер, по-малък от зададения.
- Добавена е настройка за включване/изключване на възстановяване на разширените атрибути на файловете.
- Добавена е поддръжка за операционната система DragonFlyBSD.
- Добавена е поддръжка за разширени атрибути на файловете в системи с NetBSD 10+.
- В клона restic 0.19.0 се планира премахването на поддръжка на остарели функции, активирани чрез настройките deprecate-legacy-index, deprecate-s3-legacy-layout, explicit-s3-anonymous-auth и safe-forget-keep-tags.
- Поддръжката на стари версии на Windows и macOS е преустановена, за работа сега се изисква поне Windows 10, Windows Server 2016 или macOS 11. Поддръжката на версии TLS преди 1.2 е прекратена.
Източник: opennet.ru
