Возможная уязвимость Яндекс.Карт на сторонних ресурсах

Изменено: 24 марта 2020 г., 12:03

В начале февраля 2019 г. на некоторых сайтах из топа Яндекса, которые использовали сервис Яндекс.Пробки для отображения карты с пробками, перестала загружаться карта. В консоли браузера видно, что сервис Яндекс.Карт выдаёт ошибку 403 (доступ закрыт).

В клубе Яндекс.Карт я задал вопрос по поводу данной проблемы, но там предложили задать вопрос по почте paid-api-maps@yandex-team.ru. Ответа не последовало и, как впоследствии выяснилось, его и не должно было быть. Данный почтовый адрес предназначен для переговоров по оплате доступа к платным сервисам Яндекса.

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

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

В API установлен лимит на общее число запросов к сервисам геокодирования, маршрутизации и панорам Яндекса. Запросы считаются суммарно по следующей формуле:

число запросов в Геокодер + число запросов в Маршрутизатор + 5 × число запросов к Панорамам

В бесплатной версии API суммарное число запросов не должно превышать 25000 в сутки. В коммерческой версии этот лимит устанавливается тарифом.

В коммерческой версии лимит до 1000 запросов в сутки будет стоить 120000 рублей в год или 330 рублей в день. Чем больше лимит вы покупаете, тем дешевле будет стоить запрос. Понятно, что это коммерческая тема не для владельцев простеньких сайтов с небольшими заработками.

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

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

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

Предполагаю, что при использовании, например, элемента поиска происходит лимитированный запрос к Геокодеру. Например, когда вы набираете в поиске "Москва" и нажимаете "Найти" Геокодер преобразует название объекта в координаты.

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

Для выполнения одного цикла указанных действий вполне может хватить 5 секунд. Наверняка в программах можно регулировать скорость. При этом за один цикл происходит два запроса к Геокодеру.

За 1 час можно выполнить 720 циклов. За 24 часа можно выполнить 17280 циклов, что соответствует 34560 запросам к Геокодеру.

Вот так легко и просто можно заблокировать доступ к Яндекс.Картам для любого сайта.

Владельцам сайтов могу порекомендовать убрать любые элементы управления картой, которые в теории могут обращаться к Геокодеру. Это могут быть такие элементы как, например, "routeEditor", "searchControl", "geolocationControl".

myMap = new ymaps.Map ('map', {

center: [59.938531,30.313497],

zoom: 11,

controls: ['fullscreenControl', 'searchControl', 'routeEditor', 'zoomControl']

});

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

Добавить комментарий

Поле "Ваше имя" можно оставить пустым.

LiveInternet