среда, 8 февраля 2023 г.

Страшная уязвимость KeePass'а

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

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

Теперь паникеры победили. Будем считать это фейспалмом номер два.

Итак, в версии 2.53.1 больше нельзя экспортировать базу без ввода пароля, иначе как плагинами. Что называется, живите с этим.

Справедливости ради замечу, что возможности триггеров по экспорту и раньше были довольно ограниченными, так что для задач, которые могли возникнуть на практике, все равно требовались плагины.

В статьях я приводил триггеры экспорта, но делал это больше для полноты картины, чем для настоящего применения. Главным там было предостережение о возможности экспортировать базу триггерами, даже когда экспорт без пароля запрещен. Но это замечание потеряло актуальность еще в версии 2.46. А теперь вся часть про экспорт триггерами практически не имеет смысла.

Стало ли безопаснее? В случае беспечной жертвы и не особо умелого атакующего — да, пожалуй.

Но продвинутый атакующий с теми же правами, которые позволяют править конфигурационный файл, может и вторгнуться в память приложения. А еще он может подменить скомпилированные плагины, которые по умолчанию располагаются в LocalAppData. Против первого есть DACL-защита, а против второго — возможность расположить кэш плагинов в каталоге программы (для компиляции первый запуск нужно будет произвести от администратора). Настраиваться эти защитные меры должны правкой enforced-конфигурации.

Это сказано про случай инсталлируемого KeePass'а, при котором запись в каталог с программой требует прав администратора, а сам он запускается с обычными ограниченными правами.

Портативный же KeePass работает с правами, которые позволяют изменять любые его файлы. Можно сделать так, чтобы на это требовались права администратора.