InquirerCamarines Norte robbery-shooting suspect nabbed after 8 hoursוואלהאישום: תושב כפר קאסם תכנן פיגוע בחוות השרתים של אמדוקס ברעננהRTP DesportoInter Miami conquista Campeones Cup com golo e assistência de MessiPunchPoco Lee’s management praises Zlatan’s support, urges restraintDaily MaverickWHAT’S COOKING: Spaghetti and meatballs with sugo al pomodoro (Italian tomato sauce)The Jerusalem PostFormer Shin Bet official warns Israelis to bring weapons to synagogues during Yom Kippur prayersBollywood HungamaEXCLUSIVE: Abundantia Entertainment and Almighty Motion Picture join hands for Kodaikanal Mercury thriller Heavy MetalХабр[Перевод] Нужны ли квантовые компьютеры чтобы понять химию?RapplerEU Commission proposes under-13s social media banThe South AfricanEkurhuleni killings: What we know about 9 women found deadNumeramaXbox considère Fable comme essentiel à l’ADN de sa plateformeIl Fatto QuotidianoE’ morto a 112 anni Vitantonio Lovallo detto Zitòn: era l’uomo più vecchio d’Italia, ha continuato a lavorare nei campi fino a 106 anni
The Daily Newsstand · Free, Always
Thursday, September 17, 2026

Архив под паролем открывает имена файлов любому, у кого он есть

Translate

Мне переслали архив с документами и написали, что пароль пришлёт отдельно. Он задерживался, а я по привычке заглянул внутрь посмотреть, что там.

Он открылся. Не файлы - список файлов. Имена, размеры, даты. Пароль потребовался, только когда я попробовал вытащить один из файлов.

Проверил на своих архивах - то же самое. Так работает формат.

Что видно без пароля

Собираю тестовый архив с осмысленными именами и смотрю на него без пароля:

$ zip -P 'Passw0rd!' -r secret.zip docs
$ unzip -l secret.zip
Archive:  secret.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2026-01-14 12:03   docs/
    20000  2026-01-14 12:03   docs/Выгрузка зарплат 2026.xlsx
        5  2026-01-14 12:03   docs/Договор №142 с ООО Ромашка.pdf
---------                     -------
    20005                     3 files

Две оговорки к команде. Ключ -P кладёт пароль в историю оболочки и в список процессов - так его задают только в примерах. И zip поддерживает единственный режим шифрования - старый ZipCrypto.

Пароль при просмотре не спрашивается, потому что не нужен. В формате ZIP шифруется содержимое каждого файла по отдельности, а центральный каталог - оглавление архива - в шифруемую область не входит. Это решение формата, а не физическая необходимость: другие форматы устроены иначе.

Открытыми остаются: имена файлов и папок, размеры до и после сжатия, даты изменения, атрибуты, а в режиме ZipCrypto - ещё и контрольные суммы файлов. Это стандартное поведение, а не ошибка конкретного архиватора.

Почему этого достаточно, чтобы навредить

Возьмите список выше и представьте, что это не тест. Имя Выгрузка зарплат 2026.xlsx сообщает, что выгрузка существует, что она за 2026 год и что кто-то её пересылал. Имя Договор №142 с ООО Ромашка.pdf называет контрагента и номер договора.

В историях, которые начинаются с перехваченной переписки, ценно обычно именно это: не содержимое конкретного файла, а знание, что он есть, у кого он и как называется. Дальше запрашивают уже целенаправленно - и запрос звучит убедительно, потому что в нём правильное имя документа.

Даты и размеры дополняют картину: по ним видно, когда шла работа, насколько велика выгрузка, сколько в ней примерно записей.

AES-256 не закрывает оглавление

Первое, что приходит в голову, - включить нормальное шифрование. У ZIP есть два режима. Старый ZipCrypto держится на собственном потоковом шифре, и для него давно опубликована атака по известному открытому тексту: зная содержимое хотя бы одного файла в архиве (а это часто типовая шапка документа), содержимое остальных восстанавливают, не перебирая пароль. Второй режим - AES, и он нормальный.

Ставлю AES-256 и смотрю снова:

$ 7z a -tzip -p'Passw0rd!' -mem=AES256 secretaes.zip docs
$ unzip -l secretaes.zip
Archive:  secretaes.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2026-01-14 12:03   docs/
    20000  2026-01-14 12:03   docs/Выгрузка зарплат 2026.xlsx
        5  2026-01-14 12:03   docs/Договор №142 с ООО Ромашка.pdf
---------                     -------
    20005                     3 files

Ничего не изменилось, и меняться не должно было: стойкость алгоритма и открытость оглавления - это про разные части архива. AES отвечает за содержимое файлов, оглавления он не касается.

Одно отличие всё же есть, и его видно в подробном режиме: при AES контрольные суммы файлов обнуляются, тогда как при ZipCrypto они лежат в каталоге открытыми.

$ unzip -v secret.zip | grep xlsx        # ZipCrypto
   20000  Stored    20000   0% ... 1e950a86  docs/Выгрузка зарплат 2026.xlsx
$ unzip -v secretaes.zip | grep xlsx     # AES-256
   20000  Unk:099   20016  -0% ... 00000000  docs/Выгрузка зарплат 2026.xlsx

Это единственное, что даёт смена режима для оглавления. Имена и размеры на месте.

Здесь я и ошибся в первый раз, когда решал эту задачу: думал, что дело в устаревшем шифровании и переключение режима всё исправит.

Что действительно закрывает оглавление

Шифрование заголовков. В формате 7z оно включается отдельным ключом:

$ 7z a -p'Passw0rd!' -mhe=on secret7z.7z docs
$ 7z l secret7z.7z
Listing archive: secret7z.7z

Enter password (will not be echoed):

Пароль запрашивается при попытке посмотреть список. Без него не видно ни имён, ни количества файлов.

Снаружи остаются размер самого архива и факт его существования. Это неустранимо, и по размеру кое-что оценить можно - но это несопоставимо с полным оглавлением.

Ключ -mhe=on работает только для формата 7z. Для ZIP такого режима нет, и это ограничение самого ZIP, а не архиватора. Шифрование заголовков есть и в RAR5 - ключом -hp вместо -p; у получателей распаковщик для него встречается чаще, чем для 7z, но создать такой архив бесплатными средствами не выйдет.

Ограничения и цена решения

Совместимость, и здесь есть неприятный сюрприз. Обычный ZIP открывается везде без установки чего-либо. А вот AES-ZIP, который я только что рекомендовал вместо ZipCrypto, встроенными средствами не распаковывается: классический unzip при верном пароле отвечает need PK compat. v5.1 (can do v4.6) и пропускает файлы, встроенные распаковщики Windows и macOS ведут себя так же - список показывают, а извлечь не могут.

То есть выбор идёт не между «удобным AES-ZIP» и «неудобным 7z»: архиватор получателю придётся ставить в обоих случаях. А раз так, разумнее сразу брать формат, который закрывает и оглавление.

Пароль остаётся слабым звеном. Стойкость AES ничего не значит, если пароль короткий: перебор идёт по паролю, а не по ключу. И пароль, отправленный следующим письмом в ту же переписку, не защищает ни от чего - тот, кто читает почту, читает оба письма. Второй канал - это другой канал, а не другое письмо.

Архив под паролем - плохой способ передачи в принципе. Содержимое такого архива почтовому шлюзу недоступно, и он часто режет вложение целиком. Ссылка на файл в хранилище с доступом по списку лучше по всем параметрам: доступ отзывается, видно, кто открывал, и файл не расходится копиями по почтовым ящикам.

И самое неприятное. Имена файлов утекают не только через архив: они видны в теме письма, в теле, в уведомлениях хранилища, в списке недавних документов. Закрыв оглавление архива, вы закрыли один канал из нескольких.

Что делать прямо сейчас

Если архив под паролем всё-таки нужен - убрать из имён файлов внутри него всё, что имеет смысл само по себе: названия контрагентов, номера договоров, суммы, слова вроде «зарплаты» и «паспорта». Пусть внутри лежат doc-01.pdf и doc-02.xlsx, а что это такое - написано в теле письма. Привычка ничего не стоит и убирает большую часть проблемы независимо от формата.

Если получатель может поставить архиватор - 7z с -mhe=on.

Если данные чувствительные и передаются регулярно - не архив, а хранилище с управляемым доступом.

Что посмотреть у себя

Взять любой запароленный архив, который вы отправляли за последний месяц, и выполнить unzip -l. Посмотреть, что узнаёт человек, у которого нет пароля.

Проверить, чем формируются архивы в автоматических процессах: выгрузки, резервные копии, отправка отчётов. Имена там обычно содержательные, потому что их писали для себя.

Посмотреть, как передаётся пароль. Если ответ «вторым письмом» - это не второй канал.

Проверить, что делает ваш почтовый шлюз с запароленными архивами. Во многих компаниях он их удаляет, и тогда весь процесс держится на том, что кто-то пересылает файлы в обход почты.

View the original on Хабр

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.