Аудит VeraCrypt выявил 8 критических уязвимостей

Фонд OSTIF (Open Source Technology Improvement Fund), созданный с целью усиления защищённости открытых проектов, опубликовал результаты аудита безопасности проекта VeraCrypt, в рамках которого развивается форк системы шифрования дисковых разделов TrueCrypt. Аудит выполнен компанией QuarksLab на средства, пожертвованные проектами DuckDuckGo и VikingVPN. Работа была сосредоточена на анализе исправлений и дополнений, внесённых в VeraCrypt, так как оригинальный код TrueCrypt уже несколько раз был подвергнут аудиту.

В результате проверки обнаружено 36 уязвимостей, специфичных для VeraCrypt, из которых 8 получили статус критических, 3 отнесены к категории умеренных и 15 отмечены как незначительные. Большинство проблем затрагивают сторонние библиотеки сжатия и UEFI-загрузчик VeraCrypt. Наиболее опасная уязвимость в развиваемом проектом VeraCrypt загрузчике UEFI позволяет восстановить содержимое загрузочного пароля.

Одновременно сформирован релиз VeraCrypt 1.19, в котором устранено большинство проблемы, выявленных в процессе аудита. Исправления в VeraCrypt 1.19:

  • Полное удаление поддержки шифрования с использованием отечественного симметричного блочного шифраGOST 28147-89, так как применяемая в VeraCrypt реализация алгоритма отмечена как небезопасная из-за расширения предусмотренных алгоритмом 64-разрядных блоков до 128-разрядных блоков для соответствия режиму XTS (проблема специфична для VeraCrypt). Поддержка расшифровки оставлена, но создать новые разделы с шифрованием GOST 28147-89 теперь не получится;
  • Удалены XZip и XUnzip, которые заменены на более современную и защищённую библиотеку libzip. В составе VeraCrypt поставлялись устаревшие версии XZip и XUnzip, содержащие порцию критических уязвимостей;
  • Устранена уязвимость, позволяющая определить длину пароля в классическом загрузчике;
  • Устранена уязвимость, связанная с оставлением неочищенным буфера ввода после аутентификации в новом загрузчике;
  • Устранена уязвимость, связанная с отсутствием корректной очистки конфиденциальных данных в новом загрузчике;
  • Устранена уязвимость в новом загрузчике, которая может привести к повреждению содержимого памяти;
  • Устранена серия уязвимостей, связанных с разыменованием нулевого указателя в графической библиотеке, а также проблемами в функциях ConfigRead и EFIGetHandles.

Из проблем, остающихся неисправленными из-за необходимости существенной переработки архитектуры, отмечаются недоработки в TC_IOCTL_OPEN_TEST, отсутствие должной обработки ошибок в EncryptDataUnits() и подверженность реализации AES cache-timing-атакам (восстановление данных через оценку изменения состояния кэша процессора). К проблемам, которые остаются из-за необходимости изменения поведения и нарушения совместимости с TrueCrypt, отнесены некриптостойкий метод смешивания в файле ключей и наличие неаутентифицированных зашифрованных блоков в заголовках шифрованного раздела.