Краулер OpenAI ChatGPT можно использовать для DDoS-атак

Добро пожаловать на наш форум!

Спасибо за посещение нашего сообщества. Пожалуйста, зарегистрируйтесь или войдите, чтобы получить доступ ко всем функциям.


Gibby

Автор
Команда проекта

Регистрация
Сообщений
1,635
Репутация
45
Сделок
На GitHub Microsoft была опубликована статья ИБ-специалиста Бенджамина Флеша (Benjamin Flesch), который рассказал, что всего один HTTP-запрос к API ChatGPT может использоваться для DDoS-атаки на целевой сайт. Атака будет исходить от краулера ChatGPT (а именно ChatGPT-User).

2.png

Флеш пишет, что атака получается не особенно мощной, но все равно представляет угрозу и свидетельствует о явном просчете, допущенном разработчиками OpenAI. Так, всего один API-запрос можно «разогнать» до 20–5000 и более запросов к сайту жертвы в секунду.

«API ChatGPT имеет серьезный недостаток, связанный с обработкой HTTP POST-запросов к https://chatgpt.com/backend-api/attributions», — поясняет Флеш.

Исследователь объясняет, что этот эндпоинт API используется для получения данных о веб-источниках, упомянутых в ответах бота. Когда ChatGPT ссылается на определенные сайты, он использует attributions со списком URL-адресов, по которым проходит краулер и собирает информацию. Если же передать API длинный список URL, немного отличающихся друг от друга, но указывающих на один и тот же ресурс, краулер начнет обращаться сразу ко всем.

«API ожидает список гиперссылок в параметре urls. Но очевидно, что ссылки на один сайт можно записать по-разному. Из-за плохого программирования OpenAI не проверяет, встречается ли ссылка на один и тот же ресурс несколько раз. Также OpenAI не ограничивает количество гиперссылок в параметре urls, что позволяет передавать тысячи ссылок в одном HTTP-запросе».

То есть злоумышленник может использовать Curl и отправить HTTP POST-запрос на эндпоинт ChatGPT (без какого-либо токена аутентификации), и серверы OpenAI в Microsoft Azure ответят, инициировав HTTP-запросы для каждой переданной в urls ссылки. Если все они указывают на один сайт, это может вызвать DDoS-эффект. Причем краулер, проксируемый Cloudflare, каждый раз будет заходить на сайт с нового IP-адреса.

«Жертва даже не поймет, что произошло, просто увидит запросы от бота ChatGPT с примерно 20 разных IP-адресов одновременно, — говорит Флеш и добавляет, что даже если жертва заблокирует диапазон IP-адресов, бот все равно продолжит отправлять запросы. — Один неудачный или заблокированный запрос не помешает боту ChatGPT снова обратиться к сайту всего через миллисекунду. Из-за этой амплификации злоумышленник может отправить всего несколько запросов к API ChatGPT, но жертва получит огромное количество запросов».

Флеш рассказывает, что сообщал об этой уязвимости по самым разным каналам (через платформу BugCrowd, на почту команды безопасности OpenAI, в Microsoft и на HackerOne), но так и не получил ответа.

Также специалист рассказал изданию The Register и о другой связанной проблеме. По его словам, тот же API оказался уязвим к инъекциям промптов. Эта проблема позволяет краулеру отвечать на запросы через тот же API attributions. То есть можно задавать чат-боту вопросы, и он будет отвечать на них, хотя его задача — просто извлекать данные с сайтов.

В беседе с журналистами исследователь выразил выражает недоумение тем, что в боте OpenAI не реализованы простые и надежные методы правильной дедупликации URL-адресов, а для размера списка отсутствуют ограничения. Также он задается вопросом, почему здесь не исправлены уязвимости, связанные с инъекциями промптов, которые давно устранены в основном интерфейсе ChatGPT.

«Мне кажется, этот API — тестовый проект ИИ-агентов ChatGPT, который должен парсить URL из предоставленных пользователем данных, а затем обращаться к Azure за информацией, — пишет специалист. — Но разве “ИИ-агент” не должен иметь встроенные защитные механизмы? Очевидно, что этот агент, обрабатывавший urls[], не учитывал возможное исчерпание ресурсов и не понимал, почему отправлять тысячи запросов в секунду на один домен — это плохая идея. Разве он не должен понимать, что victim.com/1 и victim.com/2 ведут на один и тот же сайт? И если victim.com/1 не отвечает, зачем тут же запрашивать victim.com/2? Ведь это базовые проверки, которые разработчики давно внедряют в свои системы, чтобы предотвращать подобные атаки».
 
Сверху