Рекомендуем
Clipia AI — 60+ нейросетей для творчества и работы Создавайте изображения, видео, презентации и озвучку с помощью ИИ. Все инструменты в одном сервисе.
Попробовать

Go 1.27.4 закрывает 12 уязвимостей — защита сборки и HTTP-серверов

10 ноября 2026 года команда Go выпустила версию 1.27.4 с исправлениями 12 уязвимостей. Одиннадцать из них затрагивают инструменты сборки, компилятор и компоновщик: вредоносный пакет мог использовать особенности cgo для выполнения команд во время сборки. Ещё одно исправление устраняет возможность аварийного завершения HTTP/1-сервера при обработке запросов с ограниченным размером тела.

Go 1.27.4 закрывает 12 уязвимостей
Go 1.27.4 закрывает 12 уязвимостей

Вредоносные зависимости могли выполнять команды во время сборки Go-проекта

Основная часть исправлений Go 1.27.4 связана с cgo — механизмом, который позволяет программам на Go взаимодействовать с кодом на C и другими библиотеками, использующими системные компиляторы. В определённых условиях специально подготовленный пакет мог передать опасные параметры компилятору или компоновщику. Это создавало риск выполнения посторонних команд ещё до запуска готового приложения.

Проблема затрагивала процесс разработки и автоматической сборки. Например, когда CI-система собирает проект с зависимостями из внешних репозиториев, она запускает инструменты Go и, при использовании cgo, системный компилятор. Уязвимые механизмы проверки параметров позволяли вредоносной зависимости влиять на действия этих инструментов. Сам факт использования cgo не указывает на заражение проекта: для описанных атак требовались специально подготовленные входные файлы, директивы или библиотеки.

Команда Go описала 11 связанных с инструментами сборки проблем под номерами CVE-2026-97033 — CVE-2026-97043. Среди них:

  • CVE-2026-97033: разрешённые ранее флаги cgo могли направить компилятор к подконтрольным атакующему файлам и инструментам. В обновлении часть параметров запретили, для других ввели дополнительные проверки.
  • CVE-2026-97034: через файлы конфигурации GCC в каталогах поиска библиотек возникал риск выполнения команд при компоновке. Теперь Go проверяет такие каталоги.
  • CVE-2026-97038 и CVE-2026-97040: специально подготовленные объектные файлы .syso позволяли обходить ограничения компоновщика или передавать ему непроверенные параметры. В Go 1.27.4 усилили проверку форматов и содержимого этих файлов.
  • CVE-2026-97039: директивы pkg-config могли подключать недоверенные файлы .pc и обходить фильтрацию аргументов сборки. Допустимые параметры и пути теперь ограничены строже.

Часть других исправлений относится к обработке аргументов компоновщика в Windows и macOS, именам импортируемых библиотек и специальным директивам компилятора. Общий механизм риска одинаков: данные из собираемого пакета попадали в инструменты сборки без достаточной проверки.

Ошибка в net/http могла завершить работу HTTP/1-сервера

Отдельная уязвимость CVE-2026-97054 затрагивала приложения, использующие стандартный пакет net/http. Она проявлялась в HTTP/1-серверах, где размер тела запроса ограничивают функциями MaxBytesReader или MaxBytesHandler.

Когда запрос превышал установленный лимит, сервер автоматически добавлял заголовок Connection: close. Если обработчик одновременно читал тело запроса и записывал заголовки ответа, операции могли конфликтовать. При таком совпадении возникала паника времени выполнения (panic), способная привести к аварийному завершению серверного процесса.

Представим API, которое принимает загружаемые файлы и ограничивает размер запроса. Если обработчик читает данные и параллельно формирует ответ, превышение лимита могло запустить описанную ошибку. Уязвимость была связана с конкретным сочетанием условий; разработчики Go не утверждали, что любой слишком большой запрос приводил к падению сервера.

В Go 1.27.4 исправлена работа с заголовком соединения в этом сценарии. Проблема зарегистрирована в системе разработки Go под номером 82563.

Как проверить версию Go и уже собранного приложения

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

Текущую версию установленного инструментария показывает команда:

go version

Версию Go, которой собрали конкретный исполняемый файл, можно узнать отдельно:

go version -m ./server

Вторую команду выполняют для существующего Go-бинарника; вместо ./server указывают путь к нужной программе. Такой способ позволяет различить версию Go, установленную на машине сейчас, и версию, использованную при выпуске уже работающего сервиса. Команда описана в официальной документации Go.

Исправления одновременно получили Go 1.27 и Go 1.26

Вместе с Go 1.27.4 разработчики выпустили Go 1.26.11 с теми же 12 исправлениями безопасности. Для двух поддерживаемых веток это позволяет закрыть перечисленные уязвимости без перехода на другую основную версию языка.

Помимо проблем безопасности, Go 1.27.4 содержит исправления ассемблера, компилятора, среды выполнения и начальной сборки инструментария. В официальной истории релизов также перечислены изменения пакетов crypto/fips140, crypto/hkdf, crypto/rsa, crypto/tls и net. Детали отдельных исправлений приведены в задачах релиза; команда не публиковала универсальных измерений прироста производительности для Go 1.27.4.

Предыдущая версия, Go 1.27.3 от 19 октября, была посвящена исправлениям безопасности crypto/x509. Ноябрьский выпуск затрагивает другой набор рисков: обработку недоверенных данных во время сборки и устойчивость HTTP-серверов к определённому сценарию запросов. Поэтому последствия обновления различаются для систем сборки и для уже развёрнутых приложений.

Источники

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

Вам также может понравиться