Недавно я завершил аудит своего 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 начал лучше справляться с отловом автоматизированного создания аккаунтов.