Как стать автором
Обновить

Поисковик Bing ходит по всем приватным ссылкам из Outlook. И это проблема

Время на прочтение3 мин
Количество просмотров12K
Всего голосов 36: ↑34 и ↓2+32
Комментарии38

Комментарии 38

Призывают использовать более безопасные и удобные методы 2FA. Среди альтернативных вариантов — авторизация через «волшебные ссылки», то есть через почтовый ящик.

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

Собственно, Firefox уже давно только так и авторизует пользователей

Одна из причин настраивать себе свой собственный почтовый сервер. Чтобы никакие боты не ходили по ссылкам.

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

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

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

если честно лень суетиться и периодически пытаться понять почему письма с твоего сервера у кого-то в спаме

Никогда такого не было за 10 лет использования своих серверов.

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

Да, именно их. Поддержка постоянная, конечно. То там подпилить, то там. Сначала был spamassassin с RBL, потом на Rspamd перешёл - тоже работа. Обновления ОС, конечно же, включая апгрейды версий - с дебиана 7 до 11. Но за это время и расположение менялось пару раз, разные VPS, теперь виртуалка дома.

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

Мне лично нравится туториал https://123qwe.com/tutorial-debian-10/ - я по сути по ней свой почтовик поднял (с некоторыми доработками под себя, но тем не менее), описано вполне понятно что, куда и почему.

А толку от своего, если пользователь может использовать Outlook, который и сольет ссылки. Тут и почтовый клиент нужно проверять, что он с почтой делает.

А, ну в этом плане я (почему-то) доверяю своему Roundcube.

Или использовать почтовый сервис который хотя бы заявляет что думает про приватность и что не может читать переписку (Ну там — ProtonMail и прочие Tutanota).
А сервисам — внедрять опциональнуювозможность добавления ключа PGP пользователя в явном виде или хотя бы поиска по keyserver'ам(ProtonMail, keys.opengp.net) + через WKD и шифровки писем пользователя — этим ключом. Если пользователя ключ есть — наверно у него и на клиенте настроена возможность сразу расшифровать. Даже если он gmail использует. Facebook нечто подобное умеет(но там надо в явном виде ключ задать).

Как вариант купить платный сервис типа Fastmail.

По ссылке "Unsubscribe" он тоже сам переходит и отписывает от всех рассылок? Удобная функция)

А заодно ещё по всем "Subscribe" тоже ходит и подписывается.

Вот именно поэтому (в том числе) GET-запрос не должен ничего изменять.

Видимо, именно поэтому каждый раз нужно на самой странице нажать кнопку «unsubscribe”.

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

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

Интерфейс именно для этого механизма эта кнопка и предоставляет.

В качестве быстрого фикса я добавил функцию истечения срока действия токенов

О, мсье желает, чтобы его посетители соревновались в скорости реакции с ботом? Мсье знает толк в куртуазных развлечениях! Быстрый фикс это:

RewriteCond %{HTTP_USER_AGENT} bingbot
RewriteRule ^.* - [F]

А для гуглового бота где быстрый фикс?

Может он надеялся, что ms bot не очень быстрый?

Да эта проблема глобальнее. Любая система, принимаюшая ссылку делает гет запрос.

Ктото скриншот делает, ктото еше как но смысл тот же. одноразовые ссылки уже проблема.

ваибер, гмаил и много кто еше.

Проблема в непонимании принципов семантики Http. GET запрос не должен изменять состояние системы.

Стандарты это хорошо но вот Вам пример, упрошенный но все же. Посылаете платежный линк. Гмаил прошел по нему и банковский софт открыл сессию. Потом зашел клиент и открылась вторая сессия.

Никто ничего не менял ;)

Клиент заплатил и в систему вернулось подтверждение. А на первую сессию идет отказ. Вот и думаи потом что и почему :) И приходится делать промежуточные линки и тому подобное.

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

Вот поэтому никаких сессий на GET не должно «открываться».

Вы путаете rest api и http

Как минимум:
1. Ссылка с токеном
2. Страница по ссылке
3. На странице кнопка подтвердить (а лучше капча, а ещё лучше ещё раз первый фактор)
4. При нажатии подтвердить (валидации введённых данных) - POST запрос

а robots.txt настроены правильно на домене? Если robots.txt разрешают скачивать https://example.com/auth?... документы, то вебмастер сам себе редиска.

Ну и как справедливо выше заметили, GET запрос не должен валидировать пользователя.

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

Изучение логов показало: все фантомные входы генерирует Bingbot, то есть бот поисковой системы Bing от Microsoft!

Bingbot автоматически переходил по этим ссылкам и автоматически входил в учётные записи новых пользователей.

такое чувство что здесь было бы очень к месту “подтвердите, что вы не робот”?

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

С чего это вдруг оно единственное? Выше уже привели рабочие решения:

  • не ломать семантику GET-запроса и использовать POST для подобных действий;

  • проверять User Agent.

И оба этих решения лучше, чем костылить JS, который:

  1. Не будет работать у пользователя, если у него отключен JS.

  2. Не факт, что остановит бота. Бот вполне себе может поддерживать JS.

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

Потому при переходе по ссылке надо показывать кнопку с формой и посылать данные на изменения явно через POST с проверкой токена со ссылки и даже не забывать о csrf.

Плевать на токены. Там могут быть приватные ссылки на ресурсы с доступом по ссылке. Выходит, что bing их индексирует?

вообще он туда ходит чтобы антивирусом почекать и предпросмотр странички подгрузить
буквально недавно, на прошлой работе мы переделывали из-за этого валидатор почты у нашего сервиса, потому что реально очень много таких пользователей как в статье
Зарегистрируйтесь на Хабре, чтобы оставить комментарий