Ес­ли ты исполь­зуешь раз­ные, да еще и слож­ные пароли (а ты ведь исполь­зуешь, прав­да?), запом­нить их все — задача прак­тичес­ки непосиль­ная. Для ее решения на помощь при­дут спе­циаль­ные прог­раммы — менед­жеры паролей. Какой из них выб­рать? Вот об этом мы сегод­ня и погово­рим.

info

Все выводы в статье — это лич­ное мне­ние авто­ра со мно­жес­твом нюан­сов и допуще­ний, о которых я пос­тарал­ся упо­мянуть. Менед­жеры паролей — обширная катего­рия про­дук­тов, и у каж­дого поль­зовате­ля най­дут­ся как свои субъ­ективные пред­почте­ния, так и объ­ективные доводы в све­те его кон­крет­ной ситу­ации и опы­та. Я пос­тарал­ся объ­ять необъ­ятное, сох­раняя, нас­коль­ко это воз­можно, объ­ективность, при этом у меня нет кон­флик­та инте­ресов, поэто­му рек­ламиро­вать того или ино­го вен­дора я не ста­ну. Буду рад, если статья ока­жет­ся кому‑то полез­ной, вызовет дис­куссии в ком­мента­риях или кто‑то из читате­лей ука­жет на воз­можные ошиб­ки.

Да­вай нач­нем с исто­рии. Жил‑был Петя, в шко­ле он соз­давал мно­жес­тво акка­унтов на сай­тах, записы­вая пароли (или один‑единс­твен­ный пароль, что уж гре­ха таить) на бумаж­ке, которую береж­но хра­нил в одной из книг. В стар­ших клас­сах ему приш­ла в голову идея, что пароли мож­но хра­нить в таб­лице на компь­юте­ре. Новые акка­унты он заносил в таб­лицу, а ста­рые не стал, ведь бра­узер и при­ложе­ния не про­сили его логинить­ся заново. В уни­вере Петя поменял компь­ютер, таб­лица с пароля­ми переко­чева­ла на флеш­ку, а на новом компь­юте­ре появил­ся еще один файл. Пос­коль­ку иног­да при­ходи­лось соз­давать акка­унты вне дома, то на телефо­не у Пети тоже хра­нилась пароч­ка паролей, так же как и в запис­ной книж­ке. При­том он уже не пом­нил, от чего имен­но некото­рые из записан­ных паролей. А еще в нед­рах его устрой­ств хра­нились вол­шебные SSH-клю­чи и магичес­кие сер­тифика­ты VPN, которые ему помог­ли уста­новить адми­ны на пер­вой работе. В общем, он хра­нил пароли на раз­ных устрой­ствах — ста­рых и новых, лич­ных и рабочих, в раз­ных фай­лах и в книж­ке, не пом­нил, от чего некото­рые из этих паролей, или, еще хуже, пом­нил, от чего пароль, но не пом­нил, где его записал!

Ми­нусы блок­нотов, бумажек и сти­керов, которые так любят кле­ить на монитор сот­рудни­цы бух­галте­рии, оче­вид­ны: они могут выпасть и потерять­ся, на них мож­но про­лить кофе и без­воз­врат­но рас­стать­ся с паролем, соот­ветс­тву­ющим всем полити­кам безопас­ности (ведь мы все соз­даем толь­ко слож­ные пароли, не так ли?). Кро­ме того, их может прос­то уви­деть и запом­нить дру­гой человек. Основная проб­лема хра­нения подоб­ной информа­ции в телефо­не зак­люча­ется в том, что на нем ты не будешь дер­жать сер­тифика­ты, API-токены и SSH-клю­чи, так как это прос­то физичес­ки неудоб­но. Ну и если телефон укра­дут, то пароли и куча дру­гой кон­фиден­циаль­ной информа­ции попадут в руки зло­умыш­ленни­ков. У заметок и таб­лиц еще и шиф­рование отсутс­тву­ет, а тас­кать каж­дый день на работу ноут­бук с фай­лом, толь­ко что­бы иметь при себе все нуж­ные записи, ты не будешь.

Так что же делать? Иде­аль­ное решение — никог­да не сох­ранять пароли и не забывать пить таб­летки для улуч­шения памяти. Но к сожале­нию, мы не в сос­тоянии запом­нить сот­ню учет­ных записей, поэто­му такой вари­ант Петя сра­зу отмел. За решени­ем воп­роса Петя полез в интернет, залоги­нил­ся в одну из соци­аль­ных сетей, и в этот момент перед ним появил­ся поп‑ап, пред­лага­ющий сох­ранить пароль. Неуже­ли бра­узер может хра­нить все его пароли?

Браузерные хранилища

Са­мое прос­тое на пер­вый взгляд решение — это вос­поль­зовать­ся встро­енным менед­жером паролей бра­узе­ра. На самом деле это не менед­жер паролей (почему — раз­берем­ся поз­же), а пока давай называть его хра­нили­щем паролей бра­узе­ра (ХПБ). Плю­сы оче­вид­ны: во‑пер­вых, решение работа­ет из короб­ки; во‑вто­рых, дан­ные сами под­став­ляют­ся в фор­мы; в‑треть­их, как заметят опыт­ные поль­зовате­ли, ХПБ поз­волит избе­жать под­ста­нов­ки учет­ных дан­ных на фаль­шивых сай­тах. На этом, собс­твен­но, плю­сы закан­чива­ются. Даль­ше идут толь­ко минусы, и глав­ный из них — это отсутс­твие шиф­рования.

Де­ло в том, что бра­узер соз­давал­ся не для хра­нения паролей, а поэто­му безопас­ность поль­зовате­лей сто­ит для него ниже удобс­тва. Раз­бирать­ся с пароля­ми, которые необ­ратимо зашиф­ровались, ник­то не хочет, поэто­му и хра­нит­ся база во впол­не кон­крет­ном мес­те, шиф­рует­ся по извес­тно­му алго­рит­му, а иног­да и ключ для дешиф­ровки лежит рядом. Имен­но по этой при­чине, стро­го говоря, бра­узер­ные менед­жеры паролей соз­дают ско­рее пси­холо­гичес­кий ком­форт для поль­зовате­ля, чем реаль­ный барь­ер для зло­умыш­ленни­ка.

Кто‑то ска­жет, что все это, конеч­но, здо­рово, но нас­коль­ко дей­стви­тель­но лег­ко получить дос­туп к паролям, хра­нящим­ся в бра­узе­ре? Резон­ный воп­рос! Как от­меча­ет Р. Д. Рас­сел из ком­пании Fractional CISO, дос­тать пароли из бра­узе­ров Firefox, Chrome и Edge на Windows уже в 2022 году было впол­не три­виаль­ной задачей, которая реша­ется с помощью прос­того питонов­ско­го скрип­та. А Nik Zerof писал на «Хакере», как сде­лать подоб­ный сти­лер на плю­сах, еще в 2018 году.

А что же в 2024-м? Давай рас­смот­рим этот воп­рос на при­мере Chrome в раз­личных ОС.

На Windows Server 2019 Standard все сов­сем печаль­но, база дан­ных SQLite 3 и мас­тер‑ключ от нее хра­нят­ся в сле­дующих фай­лах:

C:\Users\$username\AppData\Local\Google\Chrome\User Data\Default\Login Data
C:\Users\$username\AppData\Local\Google\Chrome\User Data\Local State

Chrome бло­киру­ет базу дан­ных, пока он работа­ет. Мас­тер‑ключ закоди­рован в Base64 и скры­вает­ся в перемен­ной encrypted_key, при­чем при откры­тии фай­ла с мас­тер‑клю­чом ник­то не зап­рашива­ет допол­нитель­ных под­твержде­ний. Соот­ветс­твен­но, открыв, нап­ример, файл из пись­ма, зло­умыш­ленник получа­ет дос­туп и к базе дан­ных, и к клю­чу дешиф­ровки.

DPAPI и шифрование App-Bound

Вни­матель­ный читатель навер­няка обра­тил вни­мание на то, что мы получи­ли дос­туп к базе дан­ных и к мас­тер‑клю­чу в кон­тек­сте поль­зовате­ля. Дело в том, что в Windows с 2000 года при­меня­ется механизм DPAPI (Windows Data Protection API), который поз­воля­ет шиф­ровать дан­ные и которым поль­зует­ся Chrome. Оба фай­ла (база дан­ных и файл с мас­тер‑клю­чом от нее) пред­став­ляют собой DPAPI blob. Нем­ного упро­щая, мож­но ска­зать, что в кон­тек­сте поль­зовате­ля этот блоб авто­мати­чес­ки рас­шифро­выва­ется хра­нящим­ся в LSASS хешем пароля поль­зовате­ля и мас­тер‑клю­чом DPAPI. Сде­лать это от име­ни дру­гого поль­зовате­ля на том же компь­юте­ре было бы невоз­можно.

Од­нако вре­донос­ное ПО, которое ста­рает­ся получить твои пароли, будет в боль­шинс­тве слу­чаев работать имен­но в кон­тек­сте поль­зовате­ля, его уста­новив­шего. Это в дан­ном слу­чае дела­ет защиту DPAPI не слиш­ком высоким барь­ером. Вне кон­тек­ста поль­зовате­ля мож­но попытать­ся получить хеш пароля юзе­ра и уже рас­шифро­ван­ный мас­тер‑ключ DPAPI ата­ками на LSASS или, если твой компь­ютер все еще исполь­зует клас­сичес­кий BIOS, ата­кой холод­ной перезаг­рузки.

В Google недав­но оза­боти­лись этой проб­лемой и с вер­сии Chrome 127 (23 июля 2024 года) внед­рили новый механизм — шиф­рование с при­вяз­кой к при­ложе­нию. С ним дан­ные может получить не любой про­цесс, запущен­ный в кон­тек­сте поль­зовате­ля, а толь­ко Chrome, что дела­ет ситу­ацию похожей на про­исхо­дящее в macOS и Linux. Одна­ко новый механизм пока дей­ству­ет толь­ко для фай­лов cookie и на пароли поль­зовате­лей не рас­простра­няет­ся.

Chrome в Windows
Chrome в Windows

На macOS все слож­нее. База паролей хра­нит­ся в фай­ле

/Users/$username/Library/Application Support/Google/Chrome/User Data/Default/Login Data

А вот мас­тер‑ключ Chrome Safe Storage содер­жится уже не в прос­том фай­ле, а в связ­ке клю­чей (Keychain), и по сос­тоянию на 2024 год в macOS Ventura 13.2 для его извле­чения у поль­зовате­ля зап­рашива­ется пароль.

Chrome в macOS
Chrome в macOS

В Linux ситу­ация ана­логич­ная тому, что про­исхо­дит на macOS, то есть база хра­нит­ся по пути ниже, а для ее рас­шифров­ки пот­ребу­ется мас­тер‑ключ Chrome Safe Storage Control из связ­ки клю­чей (нап­ример, gnome-keyring), для дос­тупа к которо­му так­же необ­ходимо ввес­ти пароль поль­зовате­ля, если, конеч­но, ты спе­циаль­но не задал дру­гой пароль для связ­ки клю­чей изна­чаль­но.

~/.config/google-chrome/Default/Login Data

Как видим, при исполь­зовании ХПБ вре­донос­ное ПО дей­стви­тель­но име­ет все шан­сы доб­рать­ся до наших паролей. На Windows это сов­сем прос­то, а на macOS и в Linux при­дет­ся при­ложить чуть боль­ше уси­лий. Этот недос­таток ХПБ был исполь­зован, нап­ример, вымога­телем Qilin в июле 2024-го, ког­да перед шиф­ровани­ем он вытас­кивал все учет­ные дан­ные бра­узе­ров Chrome в домене.

От­сутс­твие шиф­рования поз­воля­ет тво­им кол­легам или родс­твен­никам получить и физичес­кий дос­туп к паролям, если ты оста­вишь компь­ютер незаб­локиро­ван­ным или вооб­ще не исполь­зуешь пароль на этом устрой­стве. А бра­узер­ные рас­ширения, которым мы не гля­дя даем все зап­рашива­емые пра­ва, могут прос­то ска­чать всю базу в тек­сто­вом виде.

У ХПБ есть еще нес­коль­ко минусов. Кто‑то ска­жет, что база паролей хра­нит­ся локаль­но, но на самом деле мы это­го не зна­ем, мы прос­то вос­при­нима­ем это как факт. Еще один минус зак­люча­ется в том, что ХПБ не могут хра­нить ничего, кро­ме учет­ных дан­ных и номеров бан­ков­ских карт. API-клю­чи, сер­тифика­ты или докумен­ты и про­чее ты там не сох­ранишь. И пос­леднее: мы зависи­мы от одно­го бра­узе­ра на одном девай­се, то есть, хра­ня пароли в Safari, ты не можешь вос­поль­зовать­ся ими в Chrome. А если захочешь залоги­нить­ся в один из виде­осер­висов на компь­юте­ре сво­ей девуш­ки, то здесь вооб­ще беда: твой девайс вмес­те с сох­ранен­ным паролем остался дома.

Менеджеры паролей

Изу­чив ХПБ, Петя остался недово­лен, ведь его пароли там не будут в безопас­ности. Но как тог­да хра­нить все нажитое непосиль­ным тру­дом?

Ве­роят­но, все слы­шали про Apple Keychain или менед­жер паролей Google, которые нас­тро­ены поч­ти на каж­дом яблочном или Android-устрой­стве. Это облачные менед­жеры паролей (ОМП), которые работа­ют на уров­не эко­сис­темы вен­дора. А, нап­ример, Opera Sync дела­ет неч­то похожее, син­хро­низи­руя всю активность бра­узе­ра Opera на раз­ных устрой­ствах, одна­ко это не исклю­чает уже упо­мяну­тых минусов ХПБ. Получа­ется забав­ная ситу­ация: пом­нишь, что Chrome на плат­форме macOS полагал­ся на Apple Keychain? Получа­ется, что ХПБ исполь­зуют дру­гой, сто­рон­ний ОМП для обес­печения безопас­ности тво­их паролей. Так к чему эти пос­редни­ки?

Ду­маю, самое вре­мя сде­лать неболь­шое отступ­ление и обсу­дить, какие вооб­ще сущес­тву­ют менед­жеры паролей. Я бы раз­делил их на четыре типа:

ОМП хра­нят дан­ные на сер­верах вен­дора и работа­ют как SaaS-решения, ЛМП хра­нят дан­ные в виде локаль­ного фай­ла на устрой­стве, КМП хра­нят информа­цию на сер­вере ком­пании (их мож­но условно наз­вать локаль­ным обла­ком), а ДМП вооб­ще ничего ниг­де не хра­нят, но соз­дают пароль на локаль­ном устрой­стве каж­дый раз заново как про­изводную от мас­тер‑пароля и домена. По сути, выбор менед­жера пароля сво­дит­ся в пер­вую оче­редь к выбору мес­та хра­нения дан­ных, то есть доверия вен­дору, и, в мень­шей сте­пени, к цене и прив­лекатель­нос­ти интерфей­са. Все осталь­ные ком­понен­ты более или менее оди­нако­вы.

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

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

Соб­рав 25 про­дук­тов, Петя начал отсе­кать лиш­нее. Здесь рас­смат­рива­ются пер­сональ­ные решения, поэто­му о КМП («Пас­сворк», Vault, Passbolt) говорить не буду. ДМП так­же не ста­ну рас­смат­ривать из‑за их ред­кости и огра­ничен­ности. ЛМП мы тоже оста­вим в сто­роне, так как там речь ско­рее идет о неофи­циаль­ных пор­тах для раз­ных плат­форм, что не поз­воля­ет выделить фун­кци­ональ­ность ядра про­дук­та (KeePass, pass).

Из обзо­ра были так­же исклю­чены заб­рошен­ные про­екты (Horcrux, Mitro, Padloc, RememBear), сом­нитель­ные (PassKeep), зависи­мые от эко­сис­темы или устрой­ства (iCloud Keychain, Google Password Manager). Нелег­ким решени­ем было так­же исклю­чить вен­доров, бло­киру­ющих рос­сий­ские IP-адре­са (Norton Password Manager, NordPass, ProtonPass), а так­же тех, чьи про­дук­ты нель­зя опла­тить из Рос­сии без допол­нитель­ной голов­ной боли (рос­сий­ской кар­той или через магазин мобиль­ных при­ложе­ний), поэто­му плат­ные решения были прак­тичес­ки исклю­чены из ана­лиза (1Password, Dashlane). Все‑таки вза­имо­дей­ство­вать с решени­ями, которые изна­чаль­но нас­тро­ены к тебе негатив­но, — доволь­но рис­кован­ное дело, а менед­жер паролей — это как‑никак про миними­зацию рис­ков. При тес­тах я поль­зовал­ся рос­сий­ской поч­той (mail.ru) и рос­сий­ским IP-адре­сом.

Жир­ным в таб­лице выделе­ны цены тех про­дук­тов, которые мож­но при­обрести с рос­сий­ской кар­ты.

Работа «из коробки» и интерфейс

Один из пер­вых кри­тери­ев, на которые обыч­но обра­щают вни­мание, — это удоб­ный интерфейс и прос­тая нас­трой­ка. Раз уж мы ухо­дим от ХПБ, то в ОМП все дол­жно быть плюс‑минус так же лег­ко и инту­итив­но.

Вот ты ска­чива­ешь и запус­каешь менед­жер паролей. Но Zoho Vault и Kaspersky сна­чала тре­буют соз­дать акка­унт в их эко­сис­теме и толь­ко потом уже ввес­ти мас­тер‑пароль для соз­дания самого хра­нили­ща. Мелочь, но неп­рият­но. Сто­ит отдать дол­жное Kaspersky, он был единс­твен­ным, кто пред­ложил про­читать поль­зователь­ское сог­лашение. Еще сто­ит отме­тить, что у Zoho Vault не работа­ет регис­тра­ция на адре­са mail.ru и опла­та из рос­сий­ско­го сег­мента мобиль­ного магази­на при­ложе­ний недос­тупна, но бес­плат­ной вер­сии нам впол­не хва­тит.

Внут­ри фун­кции перечис­ленных прог­рамм более‑менее сов­пада­ют. Вез­де мож­но добав­лять раз­ные катего­рии дан­ных (учет­ные дан­ные, бан­ков­ские кар­ты, замет­ки), соз­давать пап­ки, искать по хра­нили­щу. Если захочешь, то мас­тер‑пароль мож­но всег­да поменять! Важ­ная фун­кция — это импорт дан­ных, у боль­шинс­тва она есть, мож­но импорти­ровать как из CSV-фай­лов, так и из бра­узе­ра или дру­гого менед­жера паролей. А вот у Zoho Vault такой фун­кции нет вооб­ще, тог­да как Kaspersky поз­воля­ет импорти­ровать толь­ко из CSV-фай­лов. У всех кон­курен­тов в этом пла­не воз­можнос­тей боль­ше.

Ди­зайн — это уже субъ­ективный кри­терий. Лич­но мне Keeper показал­ся пес­трым, с оби­лием фун­кций, от которых раз­бега­ются гла­за. У Bitwarden дизайн очень прос­той, как буд­то его делали лет десять назад, а в левой час­ти окна всег­да висит «пус­тая пап­ка», что очень раз­дра­жает. Я как‑то ожи­дал боль­шего от про­екта такого уров­ня.

У Sticky Password, Enpass и Kaspersky дизайн спо­кой­ный и инту­итив­но понят­ный, всё по делу. Вот не хотел ничего пло­хого говорить про LastPass, но пос­ле запус­ка в при­ложе­нии сра­зу поеха­ла верс­тка... Хоть интерфейс и выпол­нен неп­лохо, но, как и в Keeper, от оби­лия фун­кций раз­бега­ются гла­за. Глав­ный минус сос­тоит в том, что пос­ле соз­дания пароля я так и не понял, как открыть кар­точку, что­бы пос­мотреть запись.

LastPass
LastPass
Kaspersky
Kaspersky

В RoboForm без ста грам­мов не раз­берешь­ся. Для вхо­да нуж­но понять, как обой­ти назой­ливое пред­ложение добавить рас­ширение в Safari. Дела­ется это через сме­ну мас­тер‑пароля. По идее, у RoboForm, так же как и у Kaspersky, нуж­но соз­дать акка­унт в эко­сис­теме, но этот шаг я удач­но обо­шел, в ито­ге оставшись без дос­тупа в про­филь. Потом меня встре­тил инте­рес­ный баг: окно при­ложе­ния показы­валось поверх дру­гих окон, баг про­пал на сле­дующий день. Даль­ше — боль­ше: добавить учет­ные дан­ные нель­зя. Вот и всё, при­еха­ли. Что­бы добавить учет­ную информа­цию, необ­ходимо залоги­нить­ся на веб‑ресур­се, а затем сох­ранить пароль в хра­нили­ще через рас­ширение, но впи­сать в это хра­нили­ще свой собс­твен­ный пароль из головы не получит­ся.

Пляски с RoboForm
Пляс­ки с RoboForm

Не буду дол­го оста­нав­ливать­ся на воп­росе кросс‑плат­формен­ности, то есть под­дер­жке менед­жером паролей всех устрой­ств и интерфей­сов. Я исполь­зовал кри­терий «Основные ОС», к которым отно­сят­ся Windows, macOS, Linux, Android и iOS — наибо­лее популяр­ные дес­ктоп­ные и мобиль­ные плат­формы. А так­же «Основные бра­узе­ры», к которым я отнес Chrome, Firefox, Safari и Edge. Прак­тичес­ки все изу­чен­ные мною прог­раммы под­держи­вают весь упо­мяну­тый зоопарк, проб­лемы воз­никли толь­ко с отсутс­тви­ем Linux у Kaspersky и Sticky Password.

Уязвимости ПО и враждебная среда в рамках ОС

Вот мы и подоб­рались к опре­делен­ной нами модели угроз. Вна­чале давай раз­берем­ся с проб­лемой, которую мы вме­няли в вину ХПБ, — нес­той­костью перед вре­донос­ным ПО, экс­плу­ати­рующим уяз­вимос­ти в самих при­ложе­ниях менед­жеров паролей, в шиф­ровании базы дан­ных и в буфере обме­на.

Уяз­вимос­ти при­ложе­ний при­сущи и ХПБ, и ОМП. Как буд­то в бра­узе­рах не быва­ет зироде­ев и багов — чего сто­ят толь­ко недав­ние CVE-2024-29943 и CVE-2024-29944 в Firefox. В ОМП такие уяз­вимос­ти тоже находят­ся: вот, нап­ример, CVE-2021-40539 в Zoho или проб­лема некор­рек­тной работы API у Keeper в 2018 году. Здесь мы ничего сде­лать не можем, нам оста­ется толь­ко сво­евре­мен­но обновлять­ся до пос­ледней вер­сии.

Бо­лее инте­рес­ным выг­лядит вто­рой класс угроз, то есть кей­лог­геры, а так­же тро­яны, уме­ющие делать сним­ки экра­на и извле­кать дан­ные из буфера обме­на. Подоб­ные вре­доно­сы в боль­шинс­тве слу­чаев неп­лохо обна­ружи­вают­ся анти­виру­сами, хотя некото­рые ОС встра­ивают в свои про­дук­ты вся­кие AI Explorer... К сожале­нию, толь­ко в Enpass есть нас­трой­ка, бло­киру­ющая менед­жер паролей при акти­вации сним­ка экра­на.

Для Windows так­же акту­аль­на ата­ка DLL Hijacking, ей под­верже­ны поч­ти все ОМП. А уда­ление дан­ных из буфера обме­на прак­тичес­ки никак не защища­ет поль­зовате­ля. Дело в том, что вре­донос­ное ПО может сох­ранить сос­тояние буфера обме­на еще до того, как менед­жер паролей очис­тит его от ско­пиро­ван­ного содер­жимого. Вот что пи­шет раз­работ­чик KeePass Доминик Рай­хль: «Ни KeePass, ни любой дру­гой менед­жер паролей не могут вол­шебным обра­зом безопас­но работать внут­ри заражен­ной шпи­онским ПО сре­де».

Фун­кция очис­тки буфера обме­на есть у полови­ны рас­смот­ренных ОМП, а вот фун­кция авто­мати­чес­кого выхода по исте­чении вре­мени есть у всех. Ну хоть ник­то пос­торон­ний не смо­жет про­читать пароли в твое отсутс­твие, то есть угро­за физичес­кого дос­тупа лик­видиро­вана. Хотя здесь есть один нюанс: базовые нас­трой­ки безопас­ности у Bitwarden и Zoho Vault, конеч­но, так себе, при­дет­ся полазать в них, что­бы при­ложе­ние бло­киро­валось при зак­рытии и чис­тило буфер обме­на. Тог­да как у Keeper, Enpass, Sticky Password и Kaspersky все работа­ет из короб­ки. Сто­ит отме­тить, что ни один вен­дор не хра­нит мас­тер‑пароль или его про­изводные в памяти устрой­ства, что само по себе уже раду­ет.

Нуж­но пом­нить, что при­ложе­ния — это ком­мерчес­кий про­дукт, который может под­ложить свинью самос­тоятель­но: исполь­зовать Google Tag Manager, Firebase и про­чие тре­керы. Не буду вда­вать­ся в под­робнос­ти, для инте­ресу­ющих­ся есть пот­ряса­ющий ресурс Exodus, где мож­но про­верить любой менед­жер паролей или дру­гое при­ложе­ние.

Враждебная среда веб-ресурсов

А теперь давай погово­рим о самой вос­тре­бован­ной фун­кции как ХПБ, так и дру­гих ОМП — авто­запол­нении. Работа­ет она так: веб‑стра­ница ска­ниру­ется, на ней обна­ружи­вают­ся все фор­мы, а даль­ше менед­жер паролей под­гру­жает име­ющиеся учет­ные дан­ные и встав­ляет их в най­ден­ные поля. Все очень прос­то и изящ­но, но что может пой­ти не так?

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

Вто­рая самая извес­тная угро­за — это ата­ка Clickjacking на скры­тые фрей­мы, которые кон­тро­лиру­ются зло­умыш­ленни­ком. Дело в том, что зло­умыш­ленни­ки при ком­про­мета­ции веб‑ресур­са иног­да под­став­ляют скры­тую фор­му логина через фрейм под видимую панель аутен­тифика­ции, а менед­жер паролей авто­мати­чес­ки под­став­ляет дан­ные во все най­ден­ные фор­мы, о чем ты даже и не узна­ешь. Самый боль­шой скан­дал про­изо­шел с Bitwarden, который знал об этой угро­зе с 2018 года, но пред­при­нял меры по ее миними­зации толь­ко в 2023 году.

Еще одна неп­рият­ность — это вез­десущие мар­кетоло­ги. Некото­рые веб‑ресур­сы исполь­зуют скры­тые фор­мы авто­запол­нения для сбо­ра дан­ных о поль­зовате­ле. Все про­исхо­дит так же, как и в упо­мяну­той выше ата­ке, толь­ко собира­ются твои лич­ные дан­ные и поч­та для про­фили­рова­ния, и да, ты об этом тоже не узна­ешь. Но под раз­дачу‑то могут попасть и пароли!

Ес­ли пос­мотреть на авто­запол­нение со сто­роны ОМП, то единс­твен­ный спо­соб соеди­нить их с веб‑стра­ницей — это уста­новить рас­ширение в бра­узе­ре. Рас­ширение име­ет дос­туп ко всем стра­ницам бра­узе­ра и авто­мати­чес­ки заг­ружа­ет в них встра­иваемый скрипт (aka скрипт кон­тента), что­бы на фор­ме логина отри­совы­вались кра­сивые знач­ки и всплы­вающие окна выбора учет­ных дан­ных.

Хо­тя встра­иваемый скрипт и работа­ет в изо­лиро­ван­ной сре­де, это все­го лишь кон­цепция, а за ее соб­людени­ем дол­жен сле­дить раз­работ­чик. В 2017 году ока­залось, что веб‑ресурс может сво­бод­но менять перемен­ные во встра­иваемых скрип­тах рас­ширения LastPass (раз и два). Для отри­сов­ки эле­мен­тов встра­иваемый скрипт чаще все­го исполь­зует те же самые при­виле­гиро­ван­ные фрей­мы, которы­ми мож­но манипу­лиро­вать, как это про­изош­ло у Keeper в 2017 году или у LastPass в 2019 году. Наконец, мож­но баналь­но под­менить встра­иваемый скрипт с пос­леду­ющим пря­мым зап­росом дан­ных у менед­жера паролей. Нап­ример, так было у TrendMicro в 2016 году (инци­дент опи­сан здесь и здесь).

Компоненты расширения Bitwarden
Ком­понен­ты рас­ширения Bitwarden

Ес­ли ты дума­ешь, что проб­лемам с авто­запол­нени­ем под­верже­ны толь­ко веб‑стра­ницы и рас­ширения, то спе­шу тебя огор­чить: на мобиль­ных устрой­ствах могут исполь­зовать­ся при­ложе­ния‑кло­ны или угро­за может исхо­дить из некор­рек­тно­го исполь­зования WebView API, которое вылилось в уяз­вимость AutoSpill на Android-устрой­ствах. В обо­их этих инци­ден­тах были замече­ны LastPass, Keeper, 1Password, RoboForm и Enpass.

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

Неопределенность обмена данными

С ХПБ все неоп­ределен­но: вряд ли мы ког­да‑нибудь узна­ем, где они хра­нят дан­ные, кро­ме, разуме­ется, локаль­ной копии. Воп­рос неоп­ределен­ности острее все­го сто­ит у ОМП. Все рас­смот­ренные ОМП на сво­их сай­тах заяв­ляют о том, что исполь­зуют шиф­рование AES-256 с PBKDF2 SHA-256/512 для получе­ния клю­ча шиф­рования, хра­нят дан­ные по прин­ципу нулево­го раз­гла­шения и поч­ти все исполь­зуют сквоз­ное шиф­рование. Зву­чит это все очень тех­нологич­но и безопас­но, но как же все‑таки дела обсто­ят в реаль­нос­ти?

В теории ты уста­нав­лива­ешь прог­рамму на устрой­стве, вво­дишь мас­тер‑пароль и соз­даешь хра­нили­ще, которое пред­став­ляет собой локаль­ный файл, зашиф­рован­ный как раз тем самым алго­рит­мом AES-256. Ключ шиф­рования получа­ется как про­изводное от мас­тер‑пароля по алго­рит­му PBKDF2 HMAC SHA-256/512 (тот же самый Keeper исполь­зует мил­лион раун­дов, у RoboForm их все­го 100 тысяч, а некото­рые, нап­ример Bitwarden, дают воз­можность изме­нить количес­тво раун­дов в нас­трой­ках). Пока все понят­но, все эти про­цес­сы про­ходят локаль­но.

Даль­ше все ОМП мож­но раз­делить на три катего­рии: те, что не хра­нят мас­тер‑пароль или его про­изводные на сер­вере ком­пании‑вен­дора (Sticky Password), те, что хра­нят (Bitwarden, LastPass, RoboForm, Keeper), и те, о которых в этом пла­не ничего не извес­тно (Zoho Vault, Kaspersky).

Де­ло в том, что вен­дор дол­жен аутен­тифици­ровать поль­зовате­ля, то есть понять, что зашиф­рован­ное хра­нили­ще при­над­лежит имен­но тому, кто его зап­рашива­ет. Нап­ример, Kaspersky дела­ет это через допол­нитель­ную аутен­тифика­цию в эко­сис­темном акка­унте (пом­нишь тот шаг при регис­тра­ции, который показал­ся нам неудоб­ным?). Bitwarden срав­нива­ет мас­тер‑пароль с дву­мя ите­раци­ями PBKDF2-SHA-256 и солью в виде email с резуль­татом на сер­вере, а Sticky Password исполь­зует допол­нитель­ный ключ, никак не свя­зан­ный с мас­тер‑паролем.

Не­кото­рые пред­лага­ют вклю­чить 2FA, что­бы обе­зопа­сить дос­туп к хра­нили­щу даже при наличии про­изводных от мас­тер‑клю­ча на сер­вере вен­дора. Одна­ко здесь есть один малень­кий, но очень важ­ный нюанс. Все рас­смот­ренные ОМП исполь­зуют 2FA для аутен­тифика­ции, которую выпол­няет вен­дор при син­хро­низа­ции с обла­ком и обме­не дан­ными с поль­зовате­лями, а шиф­рование хра­нили­ща здесь совер­шенно ни при чем. Ключ 2FA вен­дор хра­нит на сво­ем сер­вере, поэто­му для про­хож­дения двух­фактор­ной аутен­тифика­ции необ­ходимо под­клю­чение к интерне­ту. Уста­новив 2FA, ты не дела­ешь свое хра­нили­ще безопас­нее и не усложня­ешь потен­циаль­ную задачу брут­форса для зло­умыш­ленни­ка.

Воз­можно, кто‑то заметит, что мно­гие вен­доры пишут о наличии сквоз­ного шиф­рования (E2EE). То есть дан­ные шиф­руют­ся до конеч­ного устрой­ства поль­зовате­ля, а зна­чит, никакой опас­ности нет. К сожале­нию, в дан­ном слу­чае это сквоз­ное шиф­рование Шре­дин­гера: вен­дор может заяв­лять, что име­ет сквоз­ное шиф­рование, но, пока исходный код про­дук­та не открыт, мы не можем под­твер­дить или опро­вер­гнуть это утвер­жде­ние. Тем более что в боль­шинс­тве слу­чаев име­ется в виду сквоз­ное шиф­рование от устрой­ства к сер­веру вен­дора для син­хро­низа­ции хра­нили­ща, что по сути иден­тично тра­дици­онно­му HTTPS-соеди­нению и ничем от него не отли­чает­ся.

На самом деле есть и менее явная при­чина, по которой сер­вер вен­дора будет хра­нить твой мас­тер‑пароль и не будет счи­тать­ся незави­симой сто­роной в сквоз­ном шиф­ровании. Все ОМП пред­лага­ют сер­вис веб‑хра­нили­ща: это ког­да ты можешь получить дос­туп к сво­им дан­ным через веб‑интерфейс на сай­те вен­дора. Упо­мяну­тая услу­га идет в ком­плек­те, отме­нить ее нель­зя, а зна­чит, при соз­дании хра­нили­ща веб‑сер­вер авто­мати­чес­ки ста­новит­ся одним из «тво­их» устрой­ств, и ему тре­буют­ся клю­чи для дешиф­ровки дан­ных, переда­ваемых со сквоз­ным шиф­ровани­ем. Плюс он дол­жен про­водить опе­рацию по пре­обра­зова­нию тво­его мас­тер‑пароля, который ты ввел в веб‑фор­ме, в ключ дешиф­ровки хра­нили­ща, что­бы показать тебе завет­ные пароли. Ник­то из рас­смот­ренных ОМП не говорит, что про­исхо­дит с мас­тер‑паролем из веб‑фор­мы, так же как и не говорит о безопас­ности сво­его веб‑при­ложе­ния. Печаль­но, что у мно­гих вен­доров в веб‑вер­сии дос­тупно боль­ше нас­тро­ек, чем в при­ложе­нии, что зас­тавля­ет кли­ента идти на риск.

Так в безопас­ности ли хра­нящи­еся на сер­верах вен­дора дан­ные, как об этом заяв­ляют рек­ламные заголов­ки? Взло­мы ОМП слу­чались, боль­ше все­го отли­чил­ся LastPass, ког­да в 2011 и в 2015 годах хакеры смог­ли по­лучить хеши паролей и соли, а в 2022 году из LastPass утек­ли еще и бэкапы баз дан­ных поль­зовате­лей, а URL-адре­са сай­тов в хра­нили­щах вооб­ще никак не шиф­ровались. В 2016 году были взло­маны хра­нили­ща Opera Sync, а в 2017-м сер­веры OneLogin.

Ко­неч­но, что про­изош­ло даль­ше с похищен­ными бэкапа­ми и сколь­ко из них уда­лось рас­шифро­вать — тай­на, пок­рытая мра­ком, но сто­ит ли оно тво­их нер­вов, ког­да пос­ле оче­ред­ного взло­ма ты будешь приг­лядывать­ся к каж­дому пись­му, избе­гая фишин­га и соци­аль­ной инже­нерии? В пос­леднее вре­мя сфор­мировал­ся тренд на локаль­ную син­хро­низа­цию, которая выпол­няет­ся не через обла­ко, а в домаш­ней сети, ког­да устрой­ства находят­ся рядом. В этом слу­чае ОМП (Sticky Password, Enpass) ста­новит­ся сер­висом син­хро­низа­ции и интерфей­са, играя роль ЛМП.

В иде­але, конеч­но, ОМП — это сер­вис для хра­нения и син­хро­низа­ции бэкапов зашиф­рован­ной базы дан­ных тво­их паролей. Но на прак­тике все ока­зыва­ется куда про­заич­нее. Вен­дор дей­стви­тель­но не видит ни тво­его мас­тер‑пароля, ни содер­жимого хра­нили­ща, но ведь ник­то не говорил, что он не видит хеша тво­его мас­тер‑пароля. Так­же ник­то не говорил, какие кон­крет­но дан­ные шиф­руют­ся при переда­че на сер­вер или отку­да берет­ся соль для все­го это­го крип­тогра­фичес­кого рая.

В целом прин­цип нулево­го раз­гла­шения и сквоз­ное шиф­рование работа­ют, но с некото­рыми ого­вор­ками. И пусть тебя не сму­щают гром­кие тер­мины, куча крип­тогра­фичес­ких фун­кций и заум­ные фра­зы. Единс­твен­ное, что сто­ит меж­ду тво­ими нер­вами и безопас­ностью хра­нили­ща, — это твое доверие вен­дору. Ты либо веришь, что вен­дор дей­стви­тель­но дела­ет все так, как написал в рек­ламе, что он не занима­ется под­поль­ным сос­тавле­нием радуж­ных таб­лиц или не смо­жет выдать твои дан­ные по пер­вому зап­росу, либо, поль­зуясь ОМП, ты никог­да не будешь уве­рен, что твои пароли не зна­ет ник­то, кро­ме тебя.

Дополнительные функции

Од­но из глав­ных пре­иму­ществ ОМП над ХПБ сос­тоит в том, что пер­вые дают воз­можность ана­лизи­ровать пароли. Сюда отно­сит­ся тра­дици­онный «ана­лиз пароля на слож­ность», а так­же став­шая популяр­ной «про­вер­ка по утеч­кам». С ана­лизом слож­ности паролей вро­де бы все уже понят­но. А как про­исхо­дит про­вер­ка пароля на наличие в утеч­ках?

Все рас­смот­ренные ОМП (кро­ме Kaspersky) дела­ют это, как ни стран­но, абсо­лют­но оди­нако­во, руководс­тву­ясь методом k-ано­ним­ности, раз­работан­ным Cloudflare. Твой локаль­ный кли­ент посыла­ет пер­вые пять сим­волов хеша SHA-1 каж­дого пароля на haveibeenpwned.com, который воз­вра­щает все пароли из уте­чек, начина­ющиеся с этих сим­волов, а даль­ше эта выбор­ка уже локаль­но срав­нива­ется с тво­им пол­ным паролем. Толь­ко Sticky Password отправ­ляет дан­ные не на haveibeenpwned.com, а в ARC, базу от ком­пании Crossword Cybersecurity, хотя сути это не меня­ет. Сра­зу хочет­ся спро­сить: сколь­ко памяти съеда­ют эти манипу­ляции и что имен­но рас­кры­вает­ся внеш­нему сер­вису?

Из всех ОМП толь­ко Bitwarden име­ет откры­тый исходный код. Давай заг­лянем в не­го. Зап­рос отправ­ляет­ся с тво­ей машины, ник­то его не прок­сиру­ет, то есть сто­рон­ний сер­вер, кро­ме час­ти хеша, получа­ет твой IP-адрес и юзер‑агент, а так­же при некото­рых зап­росах домен и имя поль­зовате­ля. Вот и весь ана­лиз дар­кве­ба, о котором пишут ОМП на сво­их сай­тах. А Kaspersky отправ­ляет весь SHA-256-хеш непонят­но куда (веро­ятно, на свои сер­веры) и про­изво­дит срав­нение там. При­чем отклю­чить эту фун­кцию, похоже, нель­зя, поэто­му давай сра­зу счи­тать, что у Kaspersky хра­нят­ся SHA-256-хеши всех тво­их паролей. Ну хоть без сто­рон­них сер­висов, и то хорошо.

Еще одна инте­рес­ная фун­кция — это дос­туп при экс­трен­ных обсто­ятель­ствах. Ты наз­нача­ешь какого‑либо поль­зовате­ля ОМП сво­им экс­трен­ным кон­тактом, тот, в свою оче­редь, дол­жен при­нять приг­лашение, посылая тебе свой пуб­личный ключ, а на треть­ем эта­пе ты под­твержда­ешь, что все идет по пла­ну, шиф­руя мас­тер‑пароль пуб­личным клю­чом экс­трен­ного кон­такта. В нуж­ный момент твой экс­трен­ный кон­такт зап­рашива­ет дос­туп, и ему при­ходит твой мас­тер‑пароль, который он может рас­шифро­вать сво­им при­ват­ным клю­чом. В целом задум­ка инте­рес­ная и может слу­жить неп­лохим решени­ем на слу­чай уте­ри мас­тер‑пароля. При­мер­но по такому же прин­ципу про­исхо­дит и шеринг дан­ных с дру­гими поль­зовате­лями, так что и эта фун­кция в целом безопас­на.

Са­мая феерич­ная фича — это вос­ста­нов­ление дос­тупа. Казалось бы, как такое воз­можно, если ник­то вро­де как ничего не хра­нит на сво­их сер­верах? Ука­зан­ная фун­кция у Keeper пред­полага­ет запоми­нание сек­ретной фра­зы, шиф­рующей мас­тер‑пароль, который затем отправ­ляет­ся на сер­вер вен­дора. Но LastPass не был бы LastPass’ом, если бы не стал еще и сох­ранять эту сек­ретную фра­зу на устрой­стве поль­зовате­ля без уве­дом­ления кли­ента о подоб­ном сер­висе. Все дру­гие ОМП фун­кци­ей вос­ста­нов­ления дос­тупа не обла­дают.

Выводы

Пе­тя про­делал боль­шой путь и понял глав­ное — по сути, ОМП по срав­нению с ХПБ поз­воля­ют:

Для обе­их этих катего­рий прог­рамм при­сущи одни и те же типы угроз, но ата­ковать ОМП для зло­умыш­ленни­ка куда слож­нее, чем ХПБ. А если под тебя про­водит­ся целевая ата­ка, то будь уве­рен, что дос­туп к хра­нили­щу зло­умыш­ленник точ­но получит. В любом слу­чае ХПБ — это нам­ного луч­ше, чем сти­кер на экра­не, а ОМП — это еще луч­ше, чем ХПБ. При этом не все ОМП рож­дены рав­ными, поэто­му, будешь ли ты исполь­зовать ХПБ или ОМП и какой имен­но выберешь баланс меж­ду удобс­твом исполь­зования и рис­ками, зависит толь­ко от тебя.

Бра­узер­ные Об­лачные
Бес­плат­ный + +–
Ра­бота из короб­ки + +–
Прос­той интерфейс + +
Ав­тозапол­нение + +
Уяз­вимос­ти авто­запол­нения Есть Есть
Уяз­вимость к вре­донос­ному ПО Есть Есть
Уяз­вимость физичес­кого дос­тупа Есть
Уяз­вимость к фишин­гу
Очис­тка буфера обме­на +
Ав­товыход/блок +
Ка­тего­рии дан­ных +
Ана­лиз паролей +
Дос­туп на всех устрой­ствах +
Шиф­рование БД +
Толь­ко локаль­ная БД Не­извес­тно +–
Толь­ко локаль­ное содер­жание БД Не­извес­тно +–
Толь­ко локаль­ный мас­тер‑пароль N/A +–

Иде­аль­ного решения не сущес­тву­ет, но пос­тара­юсь соб­рать все рекомен­дации воеди­но.

Пом­ни, что менед­жер паролей — это ком­мерчес­кий про­дукт, который сде­лан людь­ми. Исполь­зуй толь­ко тот, которо­му искрен­не доверя­ешь, ина­че спо­кой­но спать ты точ­но не смо­жешь.