8 октября 2026 года команда Go выпустила версии 1.27.2 и 1.26.9, устранив 15 уязвимостей в инструментах языка и стандартной библиотеке. Исправления затронули HTTP-серверы, обратные прокси, TLS-соединения, HTML-шаблоны и проверку загружаемых компонентов. Среди раскрытых проблем — способы перегрузить сервер специально сформированными запросами и нарушить обработку ответов при работе через прокси.

HTTP/2-серверы на Go были уязвимы к сбоям и перерасходу памяти
Одна из исправленных ошибок, CVE-2026-97032, могла завершить работу HTTP/2-сервера. Для передачи заголовков HTTP/2 использует механизм сжатия HPACK. Во время обработки запросов сервер мог одновременно кодировать заголовки ответа и менять размер таблицы HPACK после получения управляющего кадра SETTINGS. Две горутины обращались к одному кодировщику без необходимой синхронизации. Злоумышленник мог повторять запросы и менять параметры таблицы, провоцируя сбой процесса. В новых версиях изменение размера таблицы откладывается до безопасного момента перед записью очередного кадра.
CVE-2026-78659 затрагивала другой сценарий: клиент HTTP/2 мог объявить множество полей в заголовке Trailer. На их хранение сервер выделял память, хотя существующие ограничения Server.MaxHeaderValueCount и Server.MaxHeaderBytes не учитывали такие объявления должным образом. Теперь лимиты распространяются и на эти поля. Для приложения, которое принимает большое количество запросов по одному HTTP/2-соединению, это устраняет отдельный путь к чрезмерному расходу памяти.
Ещё две ошибки касались управления потоками HTTP/2. При CVE-2026-78669 серия изменений SETTINGS_INITIAL_WINDOW_SIZE могла заставить клиент или сервер многократно перерассчитывать параметры большого числа потоков и интенсивно расходовать процессорное время. Обработка такого изменения теперь выполняется за постоянное время вместо времени, растущего с количеством потоков. При CVE-2026-78663 сервер в определённых обстоятельствах дважды возвращал один и тот же объём данных в счётчик управления потоком, позволяя обойти настроенный лимит буфера соединения. Механизм возврата счётчика изменили.
Отдельно исправлена CVE-2026-78667, связанная с запросами частей файла. Функции FileServer, ServeContent и ServeFile могли тратить слишком много ресурсов процессора на заголовок Range с большим количеством коротких диапазонов. Теперь запросы с более чем 200 диапазонами игнорируются в части обработки Range; порог управляется параметром GODEBUG=httpservecontentmaxranges.
Ошибки CONNECT создавали риск подмены ответов через прокси
Два исправления затронули метод HTTP CONNECT, который используется для установления туннельного соединения. В CVE-2026-56866 клиентский http.Transport мог отправить CONNECT с телом запроса, а после отказа сервера вернуть соединение в пул повторного использования. Оставшиеся в соединении байты могли быть восприняты как следующий HTTP-запрос. Следующий пользователь общего соединения в некоторых условиях получал ответ, предназначенный для другой операции.
Теперь HTTP/1-транспорт закрывает соединение после отправки CONNECT независимо от кода ответа. Компонент httputil.ReverseProxy дополнительно отклоняет входящие запросы CONNECT с кодом 405 Method Not Allowed. Это конкретное изменение поведения может быть заметно в приложениях, которые раньше пропускали такие запросы через стандартный обратный прокси.
Похожая ошибка на стороне HTTP/1-сервера получила номер CVE-2026-94439. Если обработчик возвращал успешный ответ на CONNECT, но не переводил соединение в режим туннеля, сервер мог продолжить читать из него обычные HTTP-запросы. Промежуточный прокси при этом мог трактовать соединение иначе, создавая условия для контрабанды запросов (request smuggling). После ответа на CONNECT соединение теперь закрывается и на серверной стороне.
Ещё одно исправление, CVE-2026-78660, касается передачи некорректных HTTP-заголовков из HTTP/2 в HTTP/1 через обратный прокси. Транспорт Go теперь удаляет неподходящие заголовки, связанные с границами сообщений, прежде чем передать ответ дальше. Это уменьшает риск расхождения в трактовке ответа между двумя участниками цепочки.
Поддельные модули могли обходить проверку целостности Go
В версии 1.27.2 и параллельной ветке 1.26.9 закрыли две ошибки инструмента go, связанные с проверкой загружаемых модулей. В обеих случаях требовались специальные условия: работа внутри вредоносного проекта и использование контролируемого злоумышленником прокси модулей. Такие ограничения существенны для оценки реального сценария атаки.
При CVE-2026-94444 проект мог подменить встроенный модуль golang.org/fips140, связанный с криптографической реализацией Go. Исправление добавило проверку с помощью доверенной контрольной суммы, включённой в поставку инструментария. При CVE-2026-94447 поддельная запись go.sum могла помочь обойти ожидаемую проверку модуля golang.org/toolchain. Теперь инструмент запрашивает каноническую контрольную сумму из сети.
Эти случаи выделяются среди серверных уязвимостей: они относятся к процессу получения компонентов и сборки программы. Сетевой сервис может вообще не обрабатывать подозрительный HTTP-запрос, но цепочка сборки остаётся отдельной областью, где Go должен проверять происхождение кода и инструментария.
Исправления TLS, HTML-шаблонов и операций с файлами в Windows
В crypto/tls закрыли CVE-2026-97031. Специально подготовленное сообщение с некорректными ссылками на расширения Encrypted Client Hello (ECH) могло вызвать чрезмерное выделение памяти на сервере. Новая реализация отвергает такие ссылки как ошибочные. ECH — механизм, предназначенный для защиты части сведений об имени сервера при установлении защищённого соединения.
В html/template устранены CVE-2026-94448 и CVE-2026-97030. Они относились к контекстному экранированию данных внутри JavaScript-кода в HTML-шаблонах: в отдельных последовательностях выражений и при использовании ключевого слова yield шаблонизатор неверно определял контекст. Теперь эти конструкции обрабатываются корректнее. Ошибки экранирования важны для страниц, где сервер объединяет шаблон с данными, которые могут содержать специальные символы.
CVE-2026-94440 затрагивала обработку MIME-заголовков при приёме составных форм (multipart): когда до установленного ограничения памяти оставалось менее 400 байт, парсер в определённом случае мог прочитать очень длинную строку. Проверку лимита исправили.
Для Windows отдельно раскрыта CVE-2026-56857 в os.Root.Mkdir и os.Root.MkdirAll. Эти методы предназначены для операций внутри ограниченного корневого каталога. Если последняя часть пути была точкой соединения каталогов (junction), указывающей за пределы корня, программа могла создать каталог вне разрешённой области. Теперь такое перенаправление блокируется. Ошибка касалась именно определённого расположения junction в пути, поэтому затрагивала не всякую работу с каталогами Windows.
Версия установленного Go и версия работающего сервиса могут различаться
Go 1.27.2 пришёл на смену Go 1.27.1 от 1 сентября, в которой команда проекта описывала главным образом исправления ошибок компилятора, среды выполнения и библиотек. Для ветки 1.26 аналогичным предыдущим выпуском была версия 1.26.8. Октябрьские обновления имеют самостоятельный смысл из-за опубликованных 15 исправлений безопасности в нескольких механизмах обработки недоверенных данных.
Есть и техническая особенность распространения исправлений. Команда go version без аргументов показывает версию доступного инструментария, а go version -m путь/к/программе — версию Go, которой собран конкретный исполняемый файл, и сведения о модулях, когда они доступны. Поэтому установленная на сервере версия компилятора и версия уже запущенного приложения могут отличаться. Замена инструментария сама по себе не изменяет ранее собранный исполняемый файл.
Для разных приложений значимы разные части этого релиза. HTTP-сервисы затрагивают ошибки обработки соединений, заголовков и потоков; сборочные окружения — проверка модулей; Windows-программы с ограниченными файловыми операциями — поведение os.Root. Официальное объявление описывает условия каждой уязвимости, поэтому принадлежность приложения к экосистеме Go сама по себе не показывает, доступны ли в нём конкретные уязвимые пути выполнения.