Я сделал API для скриншотов сайтов, а какой-то парень начал майнить через него криптовалюту

в 14:41, , рубрики: api, ApiLeap, Coinhive, PHP curl, selenium, безопасность, информационная безопасность, майнинг, скриншоты

Просто хотел поделиться этой историей. Знаю, я мог бы лучше подготовиться к этому инциденту, но так уж получилось. :)

Сегодня утром я открыл почтовый ящик и обнаружил около 150 предупреждений из программы мониторинга лога. Я подумал, что случайно запушил какой-то баг в продакшн — и быстро начал расследование. Но вскоре стало понятно, что некий парень очень быстро создаёт новые учетные записи на нашем сервисе API скриншотов ApiLeap и быстро расходует весь кредит бесплатного плана на каждом аккаунте.

Я сделал API для скриншотов сайтов, а какой-то парень начал майнить через него криптовалюту - 1

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

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

Я: Здравствуйте. Пожалуйста, прекратите создавать несколько учётных записей на ApiLeap, вы нарушаете условия предоставления услуг.

Он: Откуда ты знаешь?

Я: Из нашего интерфейса администратора, у нас есть метрики для мониторинга использования.

Он: Значит вы отследили мой IP? Вау!!!

Я: У нас есть юридические обязательства по сбору данных от наших клиентов.

Он: О, простите. Я использовал ваш сервер для майнинга криптовалют. Извините, я остановлю его.

Я: Спасибо.

Он: Будут какие-то судебные разбирательства? :D

Я: Если остановитесь сейчас, нет. Если продолжите, то да.

Он: Но вы сами виноваты. Вы не внедрили никаких механизмов для предотвращения ботов или автоматического доступа.

Я: Мы позволяем пользователям свободно создавать учётные записи, но у нас есть различные инструменты для бана. У нас также есть подрядчик, который может подготовить судебный иск, если понадобится.

Он: Ладно, я понимаю. Но это ваша обязанность — убедиться, что автоматизированный софт не может создать аккаунт на вашем сайте.

Я: Мы можем добавить меры безопасности, если нужно.

Он: Я тоже веб-разработчик, могу помочь. Я ведь только что создал инструмент на php для автоматического создания аккаунтов на вашем сайте.

Я: Мы это поняли. Selenium?

Он: Неа, PHP curl. Могу помочь вам, если хотите. Так что, вы вообще не разбираетесь в веб-безопасности или просто лень её реализовывать? Поставьте хоть капчу, она защитит он таких ботов.

Я: Спасибо за совет. Наш сайт первый, на который вы напали?

Он: Нет… :D
Это мое хобби. Ради удовольствия и прибыли.

Я: Вы зарабатываете приличные деньги на Coinhive?

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

Я: Всё в порядке, мы ничего не потеряли. Есть куча других сервисов для скриншотов, которые вы можете попробовать.

Он: :D
Это использует их вычислительные ресурсы, ты же понимаешь.

Я: Да, это майнинг Monero в браузере.

Он: Кстати, а почему ты хочешь, чтобы я попробовал другие веб-сайты? Просто чтобы нанести им какой-то ущерб? :D

Я: Нет, не надо. Я просто пошутил. :)

Он: Ладно. Возьмёте меня на работу?

Я: Извините, у нас уже есть штатный разработчик.

Он: ;)
В любом случае, было приятно познакомиться.

Я: Уверен, ты отличный парень глубоко внутри. Существует куча лучших способов заработать деньги в качестве разработчика. Приятно было познакомиться. Удачи! Надеюсь, у тебя будет всё замечательно! :)

Он: Спасибо. Пока :)

Думаю, это один из самых мирных способов, каким я устранил атаку — и хакер оказался не таким уж плохим парнем, в конце концов.

Автор: m1rko

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js