Критическая уязвимость в Go-библиотеке net/http: угроза для миллионов серверов

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Найдена критическая уязвимость в стандартной библиотеке Go (Golang): угроза для миллионов серверов

Сообщество разработчиков на Go (Golang) всколыхнула новость об обнаружении критической уязвимости в стандартной библиотеке net/http. Уязвимость, получившая идентификатор CVE-2023-XXXX (заменено для примера), затрагивает обработку HTTP-запросов и может привести к серьезным последствиям — от обхода политик безопасности до полного компрометации серверов.

Проблема относится к классу атак типа HTTP Request Smuggling («контрабанда запросов»). Она возникает из-за некорректной обработки заголовков Transfer-Encoding и Content-Length в парсере HTTP-запросов Go. Злоумышленник может отправить специально сформированный запрос, который будет интерпретирован сервером Go иначе, чем прокси-сервером или балансировщиком нагрузки, стоящим перед ним.

В чем заключается опасность?

Используя данную уязвимость, атакующий может:

  • Обходить авторизацию и аутентификацию — внедрять вредоносные запросы, которые сервер обработает как легитимные действия от имени другого пользователя.
  • Перехватывать сессионные данные — «отравлять» кэш прокси-серверов и получать доступ к закрытым ресурсам.
  • Проводить XSS-атаки — внедрять скрипты в ответы сервера, которые будет выполнять браузер жертвы.
  • Достичь отказа в обслуживании (DoS) — отправлять запросы, которые приводят к зависанию или аварийному завершению работы приложения.

Особую опасность уязвимости придает тот факт, что net/http — это стандартная библиотека, используемая подавляющим большинством Go-проектов, от простых API до крупных микросервисных архитектур. По оценкам экспертов, под угрозой находятся миллионы серверов по всему миру.

Кто подвержен риску?

Уязвимость затрагивает все версии Go до 1.20.6 и 1.21.0. В зоне риска находятся:

  • Веб-серверы и API, написанные на Go без использования обратного прокси.
  • Приложения, использующие встроенные возможности net/http для обработки запросов.
  • Серверы, работающие за балансировщиками нагрузки или WAF, которые могут по-разному парсить заголовки.

Как защититься?

Разработчики языка Go оперативно выпустили патч. Для защиты вашего проекта необходимо немедленно предпринять следующие шаги:

  1. Обновить Go до версии 1.20.6 или 1.21.0 (в зависимости от вашей мажорной ветки).
  2. Пересобрать все бинарные файлы с новой версией компилятора.
  3. Проверить зависимости — если вы используете сторонние библиотеки, обертки над net/http, убедитесь, что они также обновлены и совместимы.
  4. Внедрить WAF (Web Application Firewall) как дополнительный уровень защиты, способный фильтровать подозрительные запросы.

Команда PythonLib настоятельно рекомендует всем Go-разработчикам не откладывать обновление. Уязвимость является крити

Рекомендуем библотеки