IT-новости в области права

уязвимость в chatgpt

29.03.2023

Команда OpenAI 27 марта исправила критическую уязвимость ChatGPT, которая позволяет без ведома жертвы завладеть её аккаунтом, просмотреть историю чатов и получить доступ к платежной информации. Об ошибке компании сообщил багхантер Nagli и предоставил видео-демонстрацию. Уязвимость в ChatGPT позволяла одним нажатием украсть аккаунт и раскрыть конфиденциальные данные. Исследователю удалось провести атаку «Web Cache Deception» (обман веб-кэша). Изучая запросы, обрабатывающие поток аутентификации ChatGPT, специалист заметил GET-запрос, который может раскрыть информацию о пользователе: «https: //chat.openai.com/api/auth/session». При каждом входе в экземпляр ChatGPT, приложение извлекает данные учетной записи: адрес электронной почты, имя, изображение и маркер доступа (Access Token) с сервера. Эксперт смоделировал ситуацию, когда жертва получает от злоумышленника ссылку на несуществующий ресурс с расширением файла, добавленным к конечной точке: «chat.openai.com/api/auth/session/test.css». OpenAI возвращает чувствительные данные в JSON после добавления расширения файла «css». Это могло быть связано с ошибкой регулярного выражения или просто с тем, что разработчики не учитывали этот вектор атаки. Далее специалист поменял заголовок ответа «CF-Cache-Status» на значение "HIT". Это означает, что данные были кэшированы, и они будут возвращены при следующем запросе по тому же адресу. В результате злоумышленник получает необходимые данные для перехвата токена жертвы. Таким образом атака происходит по следующему алгоритму:

  1. Злоумышленник создает выделенный путь «.css» к конечной точке «/api/auth/session»;

  2. Хакер распространяет ссылку (напрямую жертве или публично);

  3. Жертва переходит по ссылке;

  4. Ответ кэшируется;

  5. Киберпреступник получает учетные данные JWT (JSON Web Token) и получает полный доступ к аккаунту цели.

 

Рекомендации по исправлению:

  • C помощью регулярного выражения проинструктировать кэширующий сервер не перехватывать конечную точку (OpenAI исправила ошибку с помощью этого метода);

  • Не возвращать конфиденциальный ответ JSON, если вы напрямую не запрашиваете желаемую конечную точку.

Яндекс.Метрика