Pavel Medvedev
25 518
Блоги

ВТБ, «Сбербанк», официальный сайт мэра Москвы — утечки данных пользователей продолжаются

В связи с последними скандалами по утечке персональных данных решили написать статью, где подробно объясним, почему это происходит и как с этим бороться. Рассказывает SEO-специалист, эксперт по поисковым системам в Rush Agency Павел Медведев.

Поделиться

В избранное

В избранном

Павел Медведев

На фоне всеобщей истерии в ленте по поводу «Google Документов» и Power Bi я ввёл старый запрос 2011 года, чтобы посмотреть, изменилась ли ситуация, и ужаснулся.

Раньше проблемы были в основном у мелких интернет-магазинов, сейчас информацию сливают и такие гиганты, как ВТБ, «Сбербанк», департамент транспорта Москвы, агрегаторы авиабилетов и многие другие. Я считаю, это связано с тем, что из-за кризиса многие хорошие специалисты и разработчики переориентировались на Запад, и качество кадров в ИТ снизилось. Примеры данных, которые можно найти в поисковой выдаче:

Распечатки билетов с travel.vtb.ru
Данные транзакций через «Сбербанк»
«Сбербанк»
Пример пользовательских данных из заказа интернет-магазина
«Единый транспортный портал Москвы», dt-window.mos.ru
«Единый транспортный портал Москвы», dt-window.mos.ru
«Единый транспортный портал Москвы». Можно даже скачать сканы документов, паспортов пользователей в высоком разрешении

Вышеописанные три домена ВТБ, «Сбербанка» и «Единого транспортного портала Москвы» пренебрегают элементарными требованиями защиты данных — у них даже отсутствует файл robots.txt.

Как могло произойти так, что персональные данные — «Google Таблицы», отчёты с финансовыми показателями компаний в Power Bi могли попасть в выдачу поисковых систем?

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

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

Если быть более точным, то 18 миллиардов триллионов триллионов триллионов триллионов триллионов триллионов триллионов триллионов лет для перебора всех возможных вариантов. Звучит надёжно.

Как это работает: вам на email или в SMS приходит сообщение с такой ссылкой, и вроде бы логично, что только вы можете воспользоваться ей для просмотра, корректировки своих данных.

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

Поисковые системы регулярно переобходят даже самые малопосещаемые и никому неизвестные сайты, если они доступны для индексации роботам. Такая ссылка рано или поздно проиндексируется, и страница с личной информацией попадёт в индекс. В 2011 году был скандал с попавшими в выдачу SMS «Мегафона». Тогда я даже провёл семантический анализ текстов этих SMS.

Мало кто хотел бы, чтобы эта информация попадала в общий доступ, то есть ссылки точно на них не расставляли. Много измен, думаю, тогда было раскрыто. Дальше я в том же 2011 году решил проверить, как хранят персональные данные другие сайты, и сразу же обнаружил множество открытых данных с заказами в интернет-магазинах. Новость тогда прогремела, и запрос для поиска попал в топ-20 самых популярных запросов дня по Liveinternet. Пользователей почему-то больше всего заинтересовали данные покупателей секс-шопов. Хотя если человек покупал в магазине лопату и из-за этого утекли его ФИО, адрес, телефон и иногда паспорта — по-моему, такой же вопиющий провал.

Системы аналитики (счётчики, которые устанавливают на каждой странице сайта для исследования поведения посетителей на нём). Самые популярные в России — «Яндекс.Метрика» и Google Analytics.

Заходим в настройки любого счётчика «Метрики» и видим по умолчанию такие опции:

То есть все просмотренные пользователями страницы по умолчанию отправляются на индексацию, если не указать запрет

Но даже если установить запрет, приватные страницы всё равно попадают в индекс. Потому что это один из множества источников данных поисковых систем.

У Google есть браузер Chrome, у «Яндекса» — «Яндекс.Браузер». На них приходится более 70% всех посетителей.

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

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

Помимо этого, поисковые системы могут покупать анонимизированные данные о трафике, просмотренных сайтах или страницах, как это делает известный сервис SimilarWeb.

Ваша секретная ссылка уже не выглядит такой защищённой?
Представьте ситуацию: вы купили авиабилет с вылетом через полгода, вам пришла SMS с ссылкой для просмотра и редактирования информации в личном кабинете. Вы перешли на неё в телефоне, проверили и забыли.

Тем временем ваш мобильный «Яндекс.Браузер», Android или счётчик метрики сообщил поисковику, что появилась неизвестная ранее страница, робот проверил — страница работает, проиндексировал её через какое-то время.

Потом злоумышленник вбивает в поиск запрос вроде «билет на Бали октябрь изменить бронирование» — попадает в ваш личный кабинет, переписывает фамилию на свою и через полгода улетает вместо вас. (Можно представить, что и такие сайты существуют, которые даже не предупредят об изменении и не запросят дополнительное подтверждение или авторизацию.)

Легально ли, что поисковики собирают такую информацию

Поисковый робот не знает — персональные ли данные в файле. Коммерческая ли тайна в таблицах с финансовыми показателями или, наоборот, вы хотели бы делиться этой информацией со всеми. Он переходит по страницам, доступ к которым не закрыт владельцами сайта.

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

Кто виноват в сложившейся ситуации

Я считаю, что 80% вины лежит на владельцах сайтов, которые не обеспечивают должного качества разработки и оптимизации. Как специалист по поисковой оптимизации сайтов с 12-летним опытом могу сказать, что большинство сайтов до доработки SEO-специалистами выглядят плачевно, владельцы словно живут в параллельном мире без киберугроз, без поисковых систем, ботов, которые могут проиндексировать личные данные пользователей.

20% отдал бы поисковикам за то, что они недостаточно освещают свои механизмы ранжирования и индексации. Часто сталкиваешься с непониманием от разработчиков сайтов: «Как же поисковые системы проиндексируют страницу, ведь у них нет ссылки этой страницы?». Такие же вопросы часто слышу даже от специалистов по SEO.

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

Ещё есть проблема в том, что разные поисковые системы по-разному используют директивы, их рекомендации по индексации иногда противоречат и взаимоисключаемы. То есть разработчики, сделав всё по инструкции Google, будут удивлены, когда в «Яндексе» директивы, наоборот, перестали работать, из-за чего в индекс попало множество документов, которые не должны были индексироваться.

Последний случай с индексацией персональных данных в «Google Документах»

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

Мои рекомендации для владельцев и разработчиков сайтов

  • Любые чувствительные данные максимально закрывать от посторонних с помощью авторизации.
  • Всегда запрещать роботам индексировать любую конфиденциальную информацию. Причём использовать не только один из рекомендуемых поисковой системой способов, а дублировать, используя все методы защиты, такие как robots.txt, clean-param, meta-noindex.
  • Проверять, чтобы методы защиты были универсальными и работали во всех поисковых системах.
  • Помимо этого, определять роботов по user-agent и блокировать им доступ к любой приватной информации, отдавая ответ сервера 4хх.
  • Обращаться к профессионалам SEO для экспертизы поисковой оптимизации сайта.

Рекомендации для поисковых систем и крупных сервисов вроде PowerBi, «Google Документов»

Чаще прислушиваться к мнению и просьбам специалистов по SEO. Например, в «Яндексе» работа некоторых директив индексации отличается от Google — из-за чего приходится делать сложные схемы обхода, например, с междоменными canonical. Из-за этого у мелких сайтов без высококлассных специалистов могут быть проблемы — закрытые страницы массово попадают в индекс, а там могут быть и частные данные.

Google же считает, что она единственная в мире поисковая система и не учитывает при разработке своих сервисов что есть такие системы, как «Яндекс» с их продвинутыми алгоритмами индексации. Из-за этого в индекс попали документы Google, доступные только по ссылке.

Если бы разработчики Google были более компетентны и учитывали работу всех поисковых роботов, они бы добавили в документы доступные по ссылке запрет индексации с помощью метатега robots noindex. А также блокировали бы доступ поисковых роботов к таким документам.

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

Обновлено редакцией 14 июля. Представители «Сбербанка» сообщили vc.ru, что банк разбирается с описанной в статье ситуацией. «Уже сейчас можем сказать, что данных, которые могут нанести ущерб банку или клиентам здесь нет», — сказали они.

#приёмная

{ "author_name": "Pavel Medvedev", "author_type": "self", "tags": ["\u043f\u0440\u0438\u0451\u043c\u043d\u0430\u044f"], "comments": 144, "likes": 116, "favorites": 80, "is_advertisement": false, "section_name": "blog", "id": "41908", "is_wide": "1" }
{ "is_needs_advanced_access": false }

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

Популярные

По порядку

0

Прямой эфир

Подписаться на push-уведомления
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } } ]