Как мой умный торговый бот подарил хакерам $4,200 за 18 минут, или почему AI-разработчики забывают про базу

Как мой умный торговый бот подарил хакерам $4,200 за 18 минут, или почему AI-разработчики забывают про базу

Я помню октябрь 2021 года во всех деталях. За окном шел мерзкий дождь, а я сидел перед монитором и смотрел, как баланс моего смарт-контракта тает со скоростью профессионального гонщика. 4200 долларов. Именно столько улетело с моего кошелька за 18 минут. Для кого-то копейки, для меня тогда — огромные деньги и сильнейший удар по эго.

Самое обидное? Мой торговый алгоритм отработал идеально. Он нашел связку, просчитал ликвидность и за секунду провел арбитражную сделку. Но деньги ушли не мне. Они ушли парню, который нашел уязвимость в простейшем веб-интерфейсе, через который я мониторил работу бота. Обычный IDOR (Insecure Direct Object Reference) позволил ему подменить адрес вывода средств в WebSocket-запросе. Бот послушно перевел прибыль на чужой кошелек.

Сейчас мы в NEXUS учим людей строить сложные торговые системы и пишем тяжелых AI-агентов под ключ. Наш публичный трек-рекорд на nexus-bot.pro/proof/rvv/ доказывает, что мы научились работать с объемами и держать стабильность. Но эта стабильность была выжжена на костях моих прошлых ошибок.

Слепая зона создателей AI-агентов

Сегодня все сошли с ума по искусственному интеллекту. Разработчики часами спорят в Discord о промптах, тонкой настройке LLM и векторных базах данных. Они создают агентов, которые могут самостоятельно анализировать рынок, принимать решения и отправлять транзакции. Это круто. Но есть одна проблема.

Любой AI-агент — это не сферический конь в вакууме. Это обычный софт. Он крутится на сервере, общается с внешним миром через API, принимает вебхуки и отдает данные в веб-интерфейсы. И если ваша базовая web security хромает, ваш гениальный искусственный интеллект превращается в очень дорогую и очень послушную марионетку в руках злоумышленника.

Когда я только начинал копать в эту сторону после своего факапа, я совершил классическую ошибку новичка. Я думал, что достаточно прочитать пару статей и запустить автоматический web security scanner, который покажет зеленый свет. Спойлер: не покажет. Точнее, покажет, но это будет иллюзия безопасности.

Где ломается логика

Я потратил сотни часов, изучая матчасть. Проходил лабы в легендарной web security academy от PortSwigger, штурмовал практические комнаты уровня web security essentials tryhackme, искал готовые web security essentials answers на профильных форумах. И понял одну вещь.

Автоматические сканеры и шпаргалки из категории web security essentials thm отлично находят стандартные дыры вроде устаревших библиотек или открытых портов. Но они абсолютно слепы к логическим ошибкам. А именно на стыке AI и веба рождаются самые изощренные векторы атак.

Представьте сценарий. У вас есть AI-агент, который управляет портфелем. Вы общаетесь с ним через веб-интерфейс. Злоумышленник проводит атаку класса Prompt Injection через текстовое поле ввода. Он не ломает вашу базу данных напрямую. Он просто заставляет модель поверить, что она должна выполнить системную команду. Модель генерирует запрос к вашему API. API, доверяя «своему» AI-агенту, выполняет транзакцию без должной валидации на бэкенде. Все, вы приехали.

Если открыть официальный web security testing guide (WSTG) от OWASP, там черным по белому написано: никогда не доверяйте входящим данным. Даже если эти данные сгенерировал ваш собственный, невероятно умный и дорогой ИИ. Для бэкенда модель — это точно такой же потенциально опасный клиент, как и анонимный пользователь из интернета.

Как не повторить мою ошибку

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

Вот три правила, которые спасли мои проекты от повторения судьбы того злополучного бота на $4,200:

  1. Разделение сред обитания. Никогда не держите API-ключи с правами на вывод средств на том же сервере, где крутится веб-интерфейс или сама языковая модель. Разделяйте логику принятия решений и логику исполнения.
  2. Жесткая валидация на выходе. Модель может решить, что нужно перевести все средства на определенный контракт. Но на уровне системного бэкенда должны стоять жесткие лимиты (человеческий мультисиг, лимиты на суточный объем, белый список адресов), которые никакой промпт-инжиниринг не сможет обойти.
  3. Регулярный аудит. Вы можете бесконечно штудировать материалы в web security space, но взгляд изнутри всегда замыливается. Нужен внешний аудит.

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

Если вы прямо сейчас пишите код, деплоите смарт-контракты или настраиваете веб-интерфейсы для своих ботов — остановитесь на полчаса. Отвлекитесь от оптимизации алгоритмов. Закажите базовый анализ у тех, кто умеет ломать то, что вы строите. Команда GuardLabs делает отличный, честный Web Audit — скан безопасности, который покажет реальные дыры в вашей защите до того, как их найдет кто-то другой.

Originally posted at https://nexus-bot.pro/articles/web-audit-202606.html

Комментарии

Популярные сообщения из этого блога

I shipped a 12-question crypto security audit in 2 hours