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

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

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

Начать курс

Критическая уязвимость в популярной Go (Golang) библиотеке net/http

Сообщество разработчиков на Go (Golang) обеспокоено обнаружением критической уязвимости в стандартной библиотеке net/http. Эта библиотека является основой для построения веб-серверов, HTTP-клиентов и микросервисов на Go, а значит, проблема затрагивает миллионы приложений по всему миру.

Уязвимость, получившая идентификатор CVE-2024-XXXX, была обнаружена исследователями безопасности и классифицирована как критическая с оценкой 9.8 балла из 10 по шкале CVSS. Проблема связана с некорректной обработкой HTTP/2 потоков, что может привести к утечке памяти (memory leak) и, в конечном итоге, к отказу в обслуживании (DoS).

Как работает уязвимость?

Суть проблемы заключается в том, что при обработке определенных типов HTTP/2 запросов, библиотека net/http не освобождает память, выделенную под внутренние буферы. Злоумышленник может отправить серию специально сформированных запросов, что вызовет неконтролируемый рост потребления памяти на сервере. Когда память заканчивается, сервер аварийно завершает работу или становится недоступным для легитимных пользователей.

Важно отметить, что для эксплуатации уязвимости не требуется аутентификация — атака может быть проведена удаленно.

Какие версии под угрозой?

Проблема затрагивает все версии Go, начиная с 1.20 и заканчивая 1.22.2 (включительно).

  • Go 1.20.x — все подверсии уязвимы.
  • Go 1.21.x — все подверсии уязвимы.
  • Go 1.22.0 — 1.22.2 — уязвимы.
  • Go 1.22.3 и выше — исправлены.

Что делать разработчикам?

Команда Go уже выпустила патчи в версиях 1.22.3 и 1.21.10. Разработчикам настоятельно рекомендуется:

  • Немедленно обновить компилятор Go до последней стабильной версии (1.22.3 или 1.21.10+).
  • Пересобрать все бинарные файлы ваших приложений с новой версией компилятора.
  • Проверить конфигурацию CI/CD пайплайнов — убедитесь, что сборка использует актуальную версию Go.
  • Протестировать приложения после обновления на предмет регрессий.

Влияние на экосистему

Данная уязвимость особенно опасна для высоконагруженных микросервисов, API-шлюзов и прокси-серверов, написанных на Go. Атака может быть проведена с минимальными ресурсами со стороны злоумышленника, что делает её привлекательной для массовых атак на облачные инфраструктуры.

Рекомендуем также временно отключить поддержку HTTP/2 на критически важных серверах, если обновление невозможно выполнить немедленно. Это можно сделать с помощью настройки Server.TLSNextProto.

Следите за обновлениями на официальном сайте Go и в репозитории GitHub. Безопасность ваших проектов — в ваших руках!

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