Как загадочный разработчик снизил затраты на AWS на 90%, а потом исчез

в 11:36, , рубрики: Amazon Web Services, AWS, Блог компании QIWI, задачки, облачные сервисы, хранение данных
Как загадочный разработчик снизил затраты на AWS на 90%, а потом исчез - 1

Недавно я завершил аудит своего SaaS-клиента. Его история достойна рассказа. Это история о жадности, лжи и красоте хакинга.

Это история о том, как благодаря мой клиент снизил свои ежемесячные траты на AWS на 90 тысяч долларов благодаря таинственному разработчику, который исчез, как только работа была сделана.

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

И разгадка оказалась совершенно сумасшедшей!

Исходные данные

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

В этой истории важную роль сыграют два аспекта.

Данные распределены по множеству сторонних приложений без API (промышленные машины), поэтому мой клиент разработал расширение для Chrome, которое собирает их (наподобие RPA) и отправляет в инстансы AWS для потребления.

Работа AI-модели стоит достаточно дорого, из-за чего в среднем затраты на вычислительные ресурсы составляли около 100 тысяч долларов в месяц.

Злодей

Почти год назад с директором по ИТ моего клиента связался фриланс-разработчик, заявивший, что поможет сэкономить 90% от затрат на облачные сервисы. Его предложение отклонили.

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

Для нового директора по ИТ это был дешёвый способ показать себя с лучшей стороны перед руководством. Он дал разработчику добро.

Трюк

С этого началось моё расследование. Первым делом я увидел, что разработчик не вносил никаких коммитов, кроме как в расширение Chrome. Оно было довольно простым: скрейпило интерфейсы разных приложений, извлекало данные, отправляло их в облако и запускало обработку.

После того, как над ним потрудился разработчик, объём его кодовой базы удвоился. Появились сотни новых файлов. В частности, моё внимание привлёк один из них, большой файл «accounts.yaml», содержавший примерно 1 миллион аккаунтов Google.

Какого чёрта здесь происходит? Все аккаунты казались фальшивыми, похоже, их купили в даркнете за сотню баксов.

Этот файл позволил мне разрешить головоломку.

Разработчик больше не загружал данные в облако клиента. Он создавал пробные аккаунты GCP при помощи одного из миллиона аккаунтов Google, затем загружал туда модель, данные, запускал выполнение, и завершал работу после получения результата.

Это было возможно только благодаря… расширению Chrome, которое не позволяло сработать проверке безопасности Google и отказать в создании аккаунта.

Разработкой ПО для клиента в основном занимались сторонние партнёры, поэтому труд разработчика никто не контролировал. Он отчитывался напрямую перед директором по ИТ, поэтому никто не оспаривал его работу и даже не проверял код.

Как и было обещано, затраты упали на 90%. Ему заплатили 50 тысяч долларов. А потом он пропал. Полностью.

Счастливый директор по ИТ хотел дать этому гению новые задачи. Но тот испарился. Не отвечал на электронные письма и голосовые сообщения по телефону, удалил аккаунт в LinkedIn. Исчез.

Провал

Несколько месяцев спустя затраты снова начали расти. Каждый раз, когда бесплатный аккаунт GCP не срабатывал, данные отправлялись старой системе AWS. Похоже, что у кода закончились валидные аккаунты Google и/или Google начал лучше справляться с отловом автоматизированного создания аккаунтов.

Автор:
boris-the-blade

Источник

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


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