Pull to refresh

Comments 50

Ещё можно было бы ввести ограничения на пользовательский контрольный вопрос, запретив там указание телефонов, Email и URL и соответственно фильтровать. Плюс разумное ограничение на длину вопроса.

Разумно, да. Хотя вот новые рекомендации NIST вообще security question не рекомендуют ( https://pages.nist.gov/800-63-FAQ/#q-b07 ). Вспоминаю анекдот, про то как парень решил посмотреть почтовый ящик девушки, и там был вопрос, ответ на который нельзя никак нагуглить, узнать - девушка его бы даже под пытками не выдала. "Изменяла ли я Вадику?".

теоретически там всего два варианта ответа. вот если бы был вопрос "сколько раз".

пришлось бы брутфорсилку писать!

С кем, отсортировав по имени или дате

А там ответ " один раз с футбольной командой"

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

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

 которая в каких-то случаях типа сброса пароля внезапно становится однофакторной

У гугла, кстати, сейчас вроде бы правильно сделано. Разработчикам Госуслуг следовало бы, наверное, целиком содрать все возможности. Гугл сейчас просит/может использовать...(заглядываем на страницу "безопасность")

  • Пароль;

  • приложение-OTP генератор;

  • подтверждение на другом телефоне, залогиненном в учетку;

  • SMS-ку на резервный телефон;

  • SMS-ку на (другой) телефон -- для одноразовых кодов;

  • код доступа присылаемый на почту;

  • кучку резервных кодов;

  • аппаратный токен.

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

И да, номер телефона не обязателен, хотя они его и клянчат. А если он есть - то его одного будет недостаточно.

И да, номер телефона не обязателен, хотя они его и клянчат.

По-моему очень даже обязателен. Не уверен, про восстановление или аккаунт целиком вы говорите. Уже нет никаких лазеек (типа старого телефона на Android) создать гугловский акк без номера. Один мой старый аккаунт (без телефона), к которому я ввожу правильный пароль сразу "блокирует" и просит номер телефона (которого никогда не было емнип). Мне кажется для привязки, но еще не пробовал. Надо будет уж закрыть любопытства ради вопрос.

Про вход сам уже натыкался на проверки. Гугл высылал проверку на телефон с microG - то есть его видит - который этот вопрос никак не реализовал.

Каждому рекомендую самостоятельно пройти восстановление важных аккаунтов, посмотреть какие способы есть, какие запасные методы прикрутить, а где обновить секретный вопрос. А то не видать вам своего аккаунта в случае чего. Также понять как сервис реагирует на подключение невесть откуда (VPN третьей страны). Раньше в лучшем случае отсылали письмо о "странном" входе, но пускали неизвестное лицо (что Google, что Facebook).

У гугла я недавно пробовал. И очень удивился, что он не стал настаивать на наличии номера телефона. Работало где-то так:

  • Регистрируемся на одном смарте(без SIM-ки). Новым. Никакого телефона оно не спросило. Смарт одновременно на эту учетку привязывается.

  • Заходим в эту же учетку (когда play store попросил) другим смартом тоже без SIM-ки.

  • Заходим в учетку на десктопе и начинаем включать OTP.

В процессе он предложил телефон добавить, но можно выбрать 'другой способ' — после этого он заставил сгенерировать и записать коды восстановления а также подтвердить действия всплывашкой на смартфонах.

Теперь в учетке есть

  • Пароль

  • Настроенное OTP

  • Настройка 'Google Prompt' на двух смартфонах.

  • Резервные коды

Ни резервной почты, ни номера телефона нет и оно их ни разу не видело.

Оно, конечно, ноет и рекомендует и про телефон и про резервную почту. Но рук по их поводу не выкручивает.

Процедура восстановления (случай 'забыл пароль') проходит так:

  • Вводишь имя учетки

  • Говоришь 'я забыл пароль'

  • Оно спрашивает "хочешь подтвердить себя устройством?"

  • На смартфонах всплывает "тут учетку восстанавливают, это ты был?" Ты подтверждаешь. (Раз фактор)

  • Форма логина спрашивает OTP (Два фактор)

  • Предлагает либо поставить новый пароль, либо продолжить так.

Процедура восстановления (случай 'забыл OTP') происходит так:

  • В форму вводишь логин+пароль. (Раз фактор)

  • Оно опять же предлагает подтвердить себя либо на устройстве, либо ввести резервный код. (Два фактор)

  • После этого тебя пускают.

  • Идешь в настройки Security и делаешь 'Change authenticator app'

И там и там, если судить по диалогам, можно не каким-то активным смартом воспользоваться, а резервным кодом.

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

Спасибо за столь подробное описание! Каких версий были Андроиды? Тоже хочу попробывать.

Точно уже не помню, увы. Но достаточно новые.

EDIT: 11-ый и 12-ый. И там и там - регистрация внутри Shelter/Island/Work profile

Вместо нового телефона (девайса), наверное, и виртуальный подошел бы, из genymotion ? там можно хардварные ID рандомизировать.

А как же насчет ответа "с другой девушкой не считается"? :)

Нормальные разработчики забивают несколько типовых/стандартных Контрольных вопросов, чтобы пользователь ничего не выдумывал эдаково)

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

А в случае госуслуг - давно надо выпустить какие-нибудь скретч-карты, которую покупаешь в магазине, регистрируешь(принудительно) в учетке и потом можешь использовать для восстановления доступа. Если уж выдать нормальные аппаратные токены не получается.

А ведь раньше доступ на Госуслуги получали через заказное письмо, где тебе лично приходит логин и пароль. Так что скретч-карты, наверное, вернут к истокам:D

Ну, не совсем. Скретч-карта в том виде, что я описал - она все-таки анонимная и никому не нужная, пока ее в учетку не добавили. Нужна в общем только для того, чтобы не было 'человеку может быть негде печатать коды восстановления'.

Меня бы просто устроила галка: "Я надежно храню свой логин, пароль и секрет для TOTP, если я потеряю или забуду что-то из этого я соглашаюсь с тем, что единственным способом получить доступ к аккаунту будет личная явка с паспортом в МФЦ по адресу постоянной регистрации".

Но лучше всего возможность привязки аппаратных токенов (только не надо изобретать православные на ГОСТе). Причем, чтобы юзер, имея хотя бы один токен, мог добавить/удалить сколько угодно резервных.

Ну как "негде"... По хорошему, их можно распечатать только на своем принтере в своей квартире. У меня вот когда принтера не было, и были варианты - сходить с флешкой в копи-центр (но тогда у них будут мои рекавери-коды!) или выслать их друзьям-родне, чтобы распечатали (им я доверяю, но тогда коды засветятся в почте или мессенджере). Они должны нигде не светиться, пройти минимальный путь от получения до бумаги, нигде не сохранившись. Скретч карта тут в самом деле хорошо подходит.

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

А еще как вариант, что если со второй карты угоняют акк, то первой (мастер-картой) его можно как-то вернуть, код с нее приоритетнее.

Технически можно просто переписать, но юзабилити такого - брр...

 Если вдруг у меня квартира сгорит - я у них возьму. Да, есть риск, что близкий человек украдет мой гитхаб

Для варианта нескольких карт можно секрет делить. Минимум - три штуки карточек. На работе, дома, у кого-то еще. Двух достаточно, чтобы восстановить доступ. Одной - нет. Для параноиков - делаем вариант 3-из-5.

ну вот даже эти варианты, как мне кажется, надо чтобы юзер выбирал. Потому что есть, допустим, моя секретная коллекция чего-нибудь нехорошего. И вот пусть лучше она сгорит, чем ее кто-то откроет. Для нее риск, что уведут - опасен. А риск потери - нет.

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

Для восстановления доступа к семейным фото - достаточно одной карты. (Но при этом какой-то ограниченный режим, когда после восстановления доступа нельзя удалять файлы, и я чтобы видел, что это такой вот режим - чтоб если кто-то злоупотребил картой - я заметил и мог исправить).

А ведь раньше доступ на Госуслуги получали через заказное письмо

Которое нерадивые почтальоны просто бросали в почтовый ящик.

где тебе лично приходит логин и пароль.

Там не логин и пароль приходит, а код верификации аккаунта. Зарегистрироваться можно было и без письма.

Идея звучит очень интересной! А это где-то применяется уже или вы только что придумали? Но это только для тех, у кого нет принтера? Потому что рекавери коды можно просто распечатать и положить в сейф, в шкаф в папочке. И пофиг, что они не замазаны сверху краской.

Вообще, мне нравится идея сервисов аутентификации (их может быть много разных, коммерческих). Например, в одном (для гиков-параноиков) все можно настроить под себя. В другом (для бабушек) просто 1 надежный вариант с регистрацией-восстановлением только физически через визит на почту, в "пятерочку", в аптеку или МФЦ.

А дальше уже свои учетки (например, на хабре или госуслугах) привязываешь к тому сервису, который тебе удобнее.

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

Но это только для тех, у кого нет принтера?

Да.

И да, придумал. По аналогии с древними способами оплаты, когда такое для телефонных разговоров применялось.

Идея звучит очень интересной! А это где-то применяется уже или вы только что придумали?

Раньше некоторые банки выдавали карточки с одноразовыми кодами, которые нужно было вводить при совершении разных операций, как сейчас коды из смс вводят.

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

Я у разработчиков госуслуг тут на хабре спрашивал, почему нет кодов восстановления. Мне ответили, что это небезопасно, не то что смс )

Ответы на типовые контрольные вопросы тем более легко узнать или подобрать. Это в принципе порочная практика, опускающая стойкость к взлому ниже плинтуса.

В данном случае используя кастомный вопрос можно сделать ещё хуже. Например составить его так чтобы он содержал в себе ответ)

Можно и пароль себе поставить такой же как и логин или нафантазировать нигол :)

Я в таких случаях часто выбираю вопрос самый бредовый, типа Год рождения Оливера Кромвеля. А правильным ответом ставлю один из своих дефолт-паролей.

Представьте текст "Ваш аккаунт заблокирован" шрифтом комик-санс. Никто при всем желании не подумает, что это в самом деле от администрации.

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

люди пишут экаутнт заблокирован. шрифт атеншен делает.

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

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

"Ваш сохранённый контрольный вопрос" - более массивный текст, чем собственно вопрос.

"Ваш ответ на вопрос" - такого же размера.

А текст вопроса моноширинным, да на отделяющем фоне, чтоб выглядело чужеродно.

Это же "атака с повышением привилегий", только аналоговая, ну или социальная

По идее можно заменить текст "Контрольный вопрос" на "Контрольный вопрос (сформулирован самим пользователем в свободной форме):"

Возможно это привлекло бы дополнительное внимание к сообщению.

И ещё рукописный шрифт. Тогда может быть.

В Блюскай видел тред про это, в том случае было дальше ещё интереснее. Жертва пошла в МФЦ, чтобы восстановить доступ, а там ей сказали: ну вот же телефон, позвоните на него, там же написано.

Вообще развод шикарный, я сам со второго раза только понял, что не так на скрине. Там ещё автор написал что это на 100% настоящие Госуслуги и я думаю: и чего тогда по номеру не позвонить? А потом такой а-а-а-а-а.

Никакой технической уязвимости нет. Человек сам дал код, они просто вошли

Доступ куда-то по коду по смс, с возможностью сбросить пароль, это и есть уязвимость. По следующим причинам:

  • номер не принадлежит человеку

  • оператор сотовой связи может отобрать у человека этот номер и отдать его другому, без ведома предыдущего владельца

  • сим-карту с этим номером может перевыпустить и отдать мошеннику работник любого "салона" по продаже сим карт, без ведома человека

  • человек не имеет технической возможности отвязать номер от госуслуг, только поменять на другой российский номер (меняем шило на мыло)

  • человек не имеет технической возможности запретить получение доступа по смс, даже если использует TOTP в качестве второго фактора

  • человек не имеет технической возможности запретить получение доступа через один из банков-партнеров, которые тоже пологовно положили на безопасность и завязали всю безопасность на код из смс

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

Моего знакомого недавно так развели - представившись билайном, запудрили мозг и выцыганили одноразовый код и сказали "хаха, мы взломали твои госуслуги". Знакомый позвонил мне, я ему порекомендовал пойти в МФЦ и восстановить доступ. В МФЦ сбросили пароль, при этом на реплику знакомого "Как же я мог так глупо попасться" ответили "Вы далеко не первый".

По поводу UI окна с восстановлением пароля - возможно, имеет смысл не выводить сразу текст контрольного вопроса, а показать кнопку (/ссылку/спойлер) "Восстановить доступ с помощью установленного Вами контрольного вопроса", только после нажатия на которую появляются вопрос и поле для ответа, причем в надписях можно акцентировать внимание на то, что и вопрос, и ответ установлены пользователем: "Установленный Вами контрольный вопрос:" и "Установленный Вами ответ:".

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

Да тот, кто это придумал - чертов гений!

но при этом, наверное, сидит... не такой уж и гений!

В одном банке столкнулся еще с ситуацией. Получаю в офисе дебетовую карту. Где-то под конец менеджер говорит, что сейчас мне придет код в СМС и его нужно назвать. При этом в самом сообщении с кодом кроме цифр нет ничего -- ни информации о том, а для чего именно этот код, ни стандартного предупреждения никому его не называть. Вот и как мне понять, а называть его и правда безопасно?

Мне однажды при звонке в банк (по надежному 8800 номеру), пока я выслушивал их стандартные прелюдии, сказали очевидное - никому не сообщайте никакие коды из СМС. Ну я еще посмеялся - такие банальности... А при попытке подключить или отключить какую-то услугу, робот сказал - мы вам сейчас для подтверждения код выслали - введите на телефоне цифры из этой SMS....

Ну так и коды подтверждения на сайтах вводить нельзя получается, храни код в голове и вспоминай по ночам)). Единственная разница в том, что ты тут вроде как видишь сотрудника в офисе или же позвонил по надежному номеру и считается, что это "явно доверенное лицо". А вот когда тебе звонят из службы безопасности или случайный человек приходит домой, там нельзя установить безопасность такого человека и автоматически считается мошенником.

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

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

Да, звонить на номер банка, с офсайта (с сертификатом с EV валидацией, у них DNSSEC, у них certificate pinning, их сертификата нет в CRL и все такое) - достаточно надежно. Но это я понимаю, я в этой сфере работаю. А бабушка в HTTPS тоже должна разбираться?

Например, если мне пришел звонок с 8-800-... (номер банка, который на сайте у них, но звонил не я, а мне) - доверять или нет? "Тюремные колл-центры" не пользуются такой функцией, но, насколько я знаю - в принципе она есть (поэтому, может быть в 2023 не пользуются, а в 2024 начнут). Тут нужно немного знать про SS7, IP-телефонию, итд.

Исключен ли риск, что я по звоню по номеру 8800...11122... вместо 8800...11222.... (похожий "соседний" номер, специально арендованный мошенниками) и там сообщу код? Тут нужно знать, какие тарифы на эти номера, как верифицируют тех, кому дают их.

Исключен ли риск, что мой телефон затроянен, и звонки на оф-номер банка перенаправляются на +7905... ?

Если я позвонил на телефон банка, указанный на офсайте сбербанка, но сайт открылся через HTTP (не HTTPS) - то можно доверять или это MITM атака? (если что, одно время сбер работал без HTTPS, в 2022).

Если я звоню по номеру офсайта, сайт открылся, там HTTPS, но адрес сайта я не по памяти вбил, а нашел через яндекс по запросу "открыть кредит в сбербанке низкий процент тамбов"?

Если я звоню по номеру с сайта, но сайт не наш благославленный sber.ru, а какой-то богомерзкий sberbank.com, sberbank.github.io, sberbank.tk, sberbank.tambov.ru - какие из этих сайтов открыл сбербанк, а какие - пожилой одноногий гомосексуалист из Сенегала?

А если номер со sberbank.ru, https, но подписан сертификатом "плохого" CA, который сейчас уже отозван и вычищен из всех современных браузеров, но бабушка работает с БЭСМ-6, и последний апдейт делала в 1987 году, ее браузер устарел.

А если я позвонил на номер из приложения? Но приложение скачал не с google play а с другого магазина приложений, о котором сегодня впервые узнал (опять же - буквальная итория со сбером)

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

Поэтому критерий должен быть простой и однозначный, "понятный бабушке". Ваш пример с "позвонил по надежному номеру" - тоже не слишком надежен, как видите.

Как минимум в одном банке:

  • прямо в руки дают планшет и предлагают туда ввести полученный код (можно покликать к чему код - нормально относятся)

Sign up to leave a comment.

Articles