Разработчик Debian со стажем советует удалить из состава дистрибутива Linux-программу для шифрования Cryptkeeper. Эта рекомендация была озвучена после того, как стало известно, что это приложение начало устанавливать универсальный пароль «p» для создаваемых шифрованных каталогов.

Программист из Collabora Саймон Мак-Витти (Simon McVittie) подтвердил находку исследователя Кирилла Тхая, который раскрыл ее 26 января. Мак-Витти удалось воспроизвести баг в Stretch (Debian 9, нестабильная версия), но не в Jessie (Debian 8). «Я посоветовал команде, отвечающей за выпуск продуктов, удалить этот пакет из Stretch: в нынешнем виде он вызывает ложное чувство защищенности, что еще хуже, чем отсутствие шифрования», — заявил Мак-Витти в ответ на первичный отчет о баге. С этим мнением согласен еще один разработчик Debian, Франческо Намури (Francesco Namuri).

В своем уведомлении Тхай отметил, что данной проблеме подвержены Cryptkeeper версий 0.9.5–5.1. Баг проявляется, когда Cryptkeeper вызывает encfs, интерфейс командной строки для взаимодействия с зашифрованной файловой системой. Encfs симулирует нажатие клавиши «p» и использует это значение как универсальный пароль вместо вводимого пользователем. «Похоже на то, что Cryptkeeper делает предположения относительно интерфейса командной строки encfs, которые уже недействительны, — говорит Мак-Витти. — Я также заметил, что Cryptkeeper не проверяет, что возвращают write() и close() в ходе взаимодействия с encfs, что, скорее всего, и приводит к нежелательным результатам».

Из отчета Тхая:

«Я заглянул в код Cryptkeeper и обнаружил, что он вызывает encfs, используя опцию -S:

execlp («encfs», «encfs», «-S», crypt_dir, mount_dir, NULL); exit (0);

А пароль при этом передается следующим образом:

// paranoid default setup mode

//write (fd[1], «y\n», 2);

//write (fd[1], «y\n», 2);

write (fd[1], «p\n», 2);

write (fd[1], password, strlen (password));

write (fd[1], «\n», 1);

Но такого вроде быть не должно. Когда я выполняю программу encfs из консоли

$ encfs -S crypt_dir mount_dir

и передаю «p\n», encfs выполняет выход и не ждет сам пароль».

«Винить ли в этом Cryptkeeper или encfs, я не знаю, мне неведомо даже, существует ли указанный выше интерфейс («p\n» до пароля), — пишет Тхай. — Однако расшифровка с помощью пароля «p» работает для любой зашифрованной директории, созданной с использованием Cryptkeeper. Очевидно, что это не должно работать таким образом».

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

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

В настоящее время проблема решается также на стороне encfs; по словам одного из кураторов проекта, это было «непреднамеренное изменение ABI«.

Категории: Уязвимости