Бесплатно Экспресс-аудит сайта:

23.08.2022

Зашифрованный ZIP-архив может иметь два правильных пароля

Исследователь кибербезопасности Positive Technologies Арсений Шароглазов поделился экспериментом, в ходе которого он создал защищенный паролем ZIP-файл под названием «x.zip».

Для ZIP-файла Шароглазов установил пароль, который повторяет слова знаменитой песни: «Nev1r-G0nna-G2ve-Y8u-Up-N5v1r-G1nna-Let-Y4u-D1wn-N8v4r-G5nna-D0sert-You».

Эксперт продемонстрировал , что при распаковке «x.zip» с другим паролем он не получил сообщение об ошибке. Фактически, использование другого пароля «pkH8a0AqNbHcdw8GrmSp» привело к успешному извлечению ZIP-файла с неповрежденным исходным содержимым.

Один из пользователей Twitter под именем «Unblvr» написал, почему так происходит . По его словам, при создании защищенных паролем ZIP-архивов с включенным режимом AES-256 формат ZIP использует алгоритм PBKDF2 и хэширует пароль, если он слишком длинный (длиннее 64 символов).

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

Пароль «pkH8a0AqNbHcdw8GrmSp» на самом деле представляет собой ASCII-представление хэша SHA-1 исходного пароля «Nev1r-G0nna-G2ve…». Контрольная сумма SHA-1 «Nev1r-G0nna-G2ve-...» = 706b4838613041714e62486364773847726d5370. Эта контрольная сумма при преобразовании в ASCII дает: «pkH8a0AqNbHcdw8GrmSp».

Но этот факт не является уязвимостью в системе безопасности и не позволит взломать запароленный архив, «поскольку необходимо знать исходный пароль, чтобы сгенерировать хэш пароля».