Инженер компании Microsoft Дэйл Майерс (Dale Myers) обнаружил неприятную особенность в работе популярной программы для хранения паролей 1Password. Проблема сопряжена с функцией 1PasswordAnywhere, которая позволяет пользоваться сервисом где и когда угодно, не прибегая для этого к клиентскому ПО 1Password. Данная функция использует формат Agile Keychain, то есть пользовательские данные, фактически, хранятся в виде  JavaScript-файлов. JavaScript не самый плохой формат для подобных целей, — к нему вполне можно применить шифрование и обезопасить информацию. Однако Майерс обнаружил, что авторы 1Password этого не сделали. Данные хранятся в открытом виде.

Если посмотреть на .agilekeychain-«файл» на диске, окажется, что это вовсе не файл, а директория, в которой можно обнаружить файл 1Password.html. Если открыть его через HTTP, вы увидите серую страницу, иконку, изображающую замок и предложение ввести пароль. После ввода мастер-пароля можно разблокировать keychain и получить доступ к информации.

Проблема в том, что метаданные пользователя не шифруются. Майерс обнаружил это, когда у него произошел сбой синхронизации с Dropbox, где он хранит свой keychain. Сбой возник с файлом 1Password.agilekeychain/data/default/contents.js. Майерс, как человек любопытный, открыл этот файл, желая посмотреть, что там внутри. И был бесконечно удивлен, обнаружив имена и адреса всего, что содержится в его 1Password. В виде простого, незашифрованного текста.

Для тех, кто подумал «и что здесь такого?», Майерс поясняет. Любой, кто узнает ссылку на основную страницу логина keychain пользователя, может чуть изменить ее и добраться до вышеупомянутого файла. В файле злоумышленник может обнаружить адреса и данные компрометирующие пользователя: порносайты и другие ресурсы, посещение которых человек, возможно, не хотел бы афишировать. Кроме того, злоумышленнику станет известно, лицензии какого софта есть у жертвы, каким банком она пользуется, какие ресурсы посещает и так далее.

Еще одна проблема, обнаруженная Майерсом – адрес страницы логина сохраняется в файле, в виде https://example.com/login. В 99% случаев это не страшно, но остается 1% случаев, когда это проблема. Исследователь приводит простой пример. Недавно ему пришлось поменять пароль у своего интернет-провайдера. Как обычно и бывает в таких случаях, на email Майерсу пришла ссылка для сброса пароля. Он кликнул по ней, ввел новый пароль и нажал «применить». В ту же секунду 1Password спросил, нужно ли сохранить данные. Майерс нажал «сохранить», и новый пароль сохранился в keychain. Но что если снова открыть присланное провайдером письмо и кликнуть по ссылке сброса пароля еще раз? Разумеется, Майерс снова попал на страницу сброса пароля, так как провайдер не проверяет, использовалась ли ссылка до этого. И теперь эта ссылка сохранилась среди других метаданных 1Password, доступная, теоретически, кому угодно. Любой человек может просто скопировать ее себе в браузер и перехватить контроль над аккаунтом Майерса.

Майерс основательно покопался в поисковиках и нашел другие примеры keychain, помимо своего. Изучив их, он пришел к выводу, что узнать о человеке по keychain можно слишком многое: адрес проживания, место работы, даже имена жены и детей. Не говоря уже о его логинах и паролях, как в примере выше.

Исследователь немедленно связался с разработчиками 1Password – компанией AgileBits, сообщив им о проблеме. Оказалось, что разработчики не просто знают об этой слабости своего детища, но специально спроектировали его таким образом. По данным Майерса, 1Password работает именно так, потому что это позволяет улучшить его производительность. По логике разработчиков, шифровать метаданные, наряду с паролями, не имеет смысла, ведь тогда программе придется дешифровать куда большие объемы информации, что плохо скажется на ее работе. Поэтому метаданные лежат в открытом виде, но пароли пользователей при этом остаются в полной безопасности. И компания не видит здесь никакой проблемы.

В итоге Майерс нашел лишь один выход из данной ситуации. С 2012 года компания сменила формат хранения для своих keychain с Agile Keychain на OPVault. К сожалению, если пользоваться OPVault, про удобную функцию 1PasswordAnywhere можно забыть, зато новый формат защищен куда лучше и не сливает метаданные всем желающим. Исследователь советует всем переключаться на OPVault. Кроме того, он отмечает, что AgileBits не предлагает OPVault, как формат по умолчанию, формат Agile Keychain тоже до сих пор в ходу, но компания не предупреждает юзеров о возможных последствиях использования Agile Keychain. Что определенно не слишком этично.

Фото: Christiaan Colen@flickr



3 комментария

  1. Jeffrey Davis

    19.10.2015 at 12:43

    На фирме очевидно работает кэп.

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

    Если б только мы все представить себе могли, сколько вычислительной мощи сетей всего мира уходит на бесполезные процедуры по зашифровке-расшифровки всего и вся. Это сколько ж нефти сгорает? Сколько лесу рубится? И всё зазря.

  2. Int

    19.10.2015 at 18:28

    > формат хранения своих для keychain

  3. Посетитель музея

    31.10.2015 at 00:01

    Микрософт + шифрование = театр абсурда по умолчанию..

Оставить мнение