CVE-2026-77408: критическая уязвимость в RabbitMQ amqp091-go приводит к тихому искажению данных
В Go-клиенте RabbitMQ amqp091-go обнаружена уязвимость CVE-2026-77408 с оценкой CVSS 9.1 (CRITICAL). Из-за целочисленного переполнения при сериализации коротких строк (shortstr) приложение может незаметно отправлять усечённые метаданные сообщений. Проблема затрагивает все версии до 1.13.0 и может нарушить корреляцию запросов и ответов, маршрутизацию и трассировку.
Подробности
Уязвимость присутствует в функции writeShortstr, расположенной в файле write.go. В версиях amqp091-go до 1.13.0 эта функция приводит длину значения свойства типа shortstr к типу uint8, не проверяя предварительно, превышает ли значение 255 байт. Тип shortstr в AMQP 0.9.1 предполагает хранение длины в одном байте, поэтому значения длиннее 255 байт не могут быть представлены корректно. Если приложение принимает от пользователя или из внешнего источника слишком длинное значение одного из следующих свойств — CorrelationId, ReplyTo, MessageId, Expiration, UserId, AppId, ContentType, ContentEncoding или Type, — клиент сериализует «обёрнутую» длину (результат переполнения) и лишь усечённый префикс строки. При этом никакой ошибки не возвращается. Итогом становится так называемое тихое искажение метаданных (silent metadata corruption). На практике это может ломать корреляцию запросов и ответов (например, если пострадал CorrelationId или ReplyTo), нарушать маршрутизацию сообщений, ломать трассировку и приводить к некорректной обработке сообщений на стороне потребителей. Поскольку ошибка не сигнализируется, диагностировать проблему крайне сложно. Уязвимость затрагивает продукт rabbitmq amqp091-go. Исправление выпущено в версии 1.13.0.Что делать
Основная рекомендация — обновить библиотеку amqp091-go до версии 1.13.0 или выше. Это единственный надёжный способ устранить проблему на уровне клиента. Дополнительно стоит рассмотреть следующие меры: - Провести валидацию длины значений свойств сообщений (CorrelationId, ReplyTo, MessageId, Expiration, UserId, AppId, ContentType, ContentEncoding, Type) на стороне приложения до их передачи в клиент. Убедитесь, что длина не превышает 255 байт. - Не допускать попадания неконтролируемых пользовательских данных в эти свойства без предварительной проверки. - Проверить логи и механизмы обработки ошибок: если в вашей инфраструктуре уже наблюдались случаи потери корреляции запросов и ответов или странного поведения при маршрутизации, это может быть следствием эксплуатации данной уязвимости. - После обновления провести проверку зависимостей (например, через go list -m all или аналогичные инструменты), чтобы убедиться, что во всех сервисах используется исправленная версия.Итог
CVE-2026-77408 — серьёзная уязвимость с оценкой CVSS 9.1, способная незаметно повреждать метаданные сообщений в приложениях на Go, работающих с RabbitMQ через amqp091-go. Отсутствие явной ошибки при сериализации делает такие сбои труднообнаружимыми и потенциально опасными для корректности бизнес-логики. Единственное надёжное решение — обновление до версии 1.13.0, дополненное валидацией длины строковых свойств на стороне приложения.Источник: CVE Project (cvelistV5)
