8 июня 2026 года корпорация Microsoft опубликовала бюллетени безопасности, в которых сообщила о двух уязвимостях в стандартной библиотеке Go (Golang, язык программирования). Проблемы затрагивают пакет mime (отвечающий за работу с MIME-типами) и net/textproto (реализующий текстовые протоколы). Уязвимости получили идентификаторы CVE-2026-42504 и CVE-2026-42507 (CVE - общедоступные уязвимости и воздействия). Обе обнаружены в коде, который входит в состав дистрибутива Azure Linux (azl3) версии Go 1.26.3-1. Пользователям настоятельно рекомендуется обновиться до версии 1.26.4-1, где проблемы исправлены.
Детали уязвимостей
Значение этого события трудно переоценить. Go активно применяется в облачной инфраструктуре Microsoft Azure, а также в системах контейнеризации, микросервисах и сетевых утилитах. Уязвимости в столь фундаментальных компонентах - это прямой риск для множества сервисов, использующих Go. К счастью, обе уязвимости не являются критическими в классическом понимании (например, не позволяют удалённо выполнить код), но их эксплуатация может привести к серьёзным побочным эффектам.
Начнём с первой проблемы - CVE-2026-42504. Она касается функции "WordDecoder.DecodeHeader" в пакете mime. Суть уязвимости в том, что при декодировании специально подготовленного MIME-заголовка, содержащего множество некорректных закодированных слов, процессор начинает потреблять чрезмерные ресурсы центрального процессора. Это называется квадратичной сложностью: время обработки растёт пропорционально квадрату длины входных данных. Злоумышленник, отправив вредоносный почтовый заголовок или HTTP-запрос с подобным содержимым, может вызвать отказ в обслуживании (DoS, denial of service) на сервере, обрабатывающем такие данные. В контексте облачных сервисов это чревато длительными простоями и дополнительными затратами на масштабирование.
Вторая уязвимость - CVE-2026-42507 - обнаружена в пакете net/textproto. Этот пакет используется для реализации базовых текстовых протоколов, таких как SMTP, HTTP, FTP и других. Проблема в том, что при формировании сообщений об ошибках функции пакета включают в вывод переданные им входные данные без какого-либо экранирования. Иными словами, если злоумышленник передаст строку, содержащую вредоносные символы или ложную информацию, эта строка попадёт в лог ошибок или в сам ответ сервера. Это открывает возможность для инъекций в логи: атакующий может подменить содержимое логов, внедрить туда ложные предупреждения, сбить с толку администраторов или даже встроить в запись команды, которые потом будут неверно интерпретированы системами мониторинга. Хотя напрямую выполнить код таким образом нельзя, подобное искажение логов может стать первым шагом в более сложной атаке, например, при автоматическом анализе логов скриптами.
Важно подчеркнуть, что обе уязвимости относятся не к каким-то редким edge-случаям, а к стандартной библиотеке Go, которую ежедневно используют миллионы разработчиков. Пакеты mime и net/textproto считаются доверенными и входят в ядро языка. Поэтому их недостатки, пусть и не самые опасные по шкале CVSS, затрагивают огромную пользовательскую базу. Microsoft, как один из крупнейших потребителей Go в своих облачных продуктах (Azure Functions, Kubernetes, многие внутренние сервисы), оперативно выпустила исправления и уведомила сообщество.
В случае с CVE-2026-42504 наибольший ущерб может быть связан с длительным простоем почтовых или веб-серверов, использующих MIME-декодирование. Для компании это потерянные транзакции и ухудшение пользовательского опыта. CVE-2026-42507, хотя и менее заметна, опасна тем, что подрывает доверие к системам мониторинга и аудита. Если злоумышленнику удастся внедрить в логи ложные записи, служба безопасности может потратить часы на расследование несуществующих инцидентов или, наоборот, пропустить реальную атаку.
Специалистам по кибербезопасности стоит немедленно проверить версии Go, используемые в их окружениях. Если вы работаете с Azure Linux (azl3) или любыми образами на основе Go, обновите пакет до версии 1.26.4-1 или новее. Разработчикам, использующим Go напрямую, достаточно обновить компилятор и пересобрать проекты. В качестве временной меры, если обновление невозможно прямо сейчас, можно ограничить приём входных данных, содержащих длинные MIME-заголовки, либо настроить мониторинг аномальной нагрузки на CPU. Для компонентов, использующих net/textproto, стоит рассмотреть изоляцию логов в отдельное хранилище с проверкой на подозрительные символы.
В целом, эти уязвимости - ещё одно напоминание о том, что даже проверенные временем библиотеки не застрахованы от ошибок. Go позиционируется как язык, безопасный по памяти, но, как видно, проблемы могут возникать на уровне логики обработки данных. Пользователям Azure Linux и всех продуктов Microsoft, использующих Go, рекомендуется не откладывать установку патчей. Документация с полным описанием и ссылками на бюллетени доступна на портале MSRC и в реестре CVE.
Ссылки