CVE: CVE-2026-105221
Продукт: Ubuntu
Дата публикации: 05.10.2026
Критичность: CRITICAL
CVSS: 9.1 (4.0)
EPSS: 0,18%; процентиль 6,74%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В RubyGem gist до версии 6.1.0 функция
http_connection в файле lib/gist.rb задает режим VERIFY_NONE и полностью отключает проверку TLS-сертификата сервера. Атакующий на пути трафика (on-path) может предъявить любой сертификат, перехватить HTTPS-соединение с GitHub API и получить OAuth-токен и учетные данные жертвы, а затем читать и изменять её gists.В Ubuntu уязвимый пакет
gist присутствует в релизах от 16.04 LTS до 26.04 LTS. Ubuntu оценивает проблему как medium, тогда как CVSS v4.0 от VulnCheck даёт 9.1 (CRITICAL) из-за высоких показателей конфиденциальности и целостности.Основные характеристики
Суть риска: утилита
gist отправляет запросы к GitHub API по HTTPS, но не проверяет подлинность сервера. Тот, кто контролирует сетевой путь между машиной и GitHub — оператор Wi-Fi, скомпрометированный шлюз — может подставить сервер и забрать OAuth-токен жертвы.Ключевые параметры:
- Тип ошибки: CWE-295 (improper certificate validation); код явно задает
VERIFY_NONE.
- CVSS v4.0: 9.1, CRITICAL, вектор
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N— атака по сети, высокая сложность эксплуатации, полная компрометация конфиденциальности и целостности данных GitHub API.
- Оценка Ubuntu: medium — вендор учитывает условия эксплуатации, прежде всего необходимость позиции на сетевом пути.
- EPSS: 0,178% (0.00178), процентиль 0.06743 — текущая вероятность эксплуатации оценивается как низкая.
- CISA KEV: в переданных данных отсутствует; включение в каталог не подтверждено.
Какие продукты и версии затронуты
Уязвим RubyGem gist всех версий до 6.1.0 (диапазон «introduced: 0» — уязвимы все ранние версии). В Ubuntu по данным OSV-записи UBUNTU-CVE-2026-105221 затронут исходный пакет
gist в следующих релизах:- Ubuntu 16.04 LTS (xenial):
gist4.5.0-2
- Ubuntu 18.04 LTS (bionic):
gist4.6.1-1
- Ubuntu 20.04 LTS (focal):
gist5.0.0-4ubuntu1
- Ubuntu 22.04 LTS (jammy):
gist6.0.0-2
- Ubuntu 24.04 LTS (noble):
gist6.0.0-3
- Ubuntu 26.04 LTS (resolute):
gist6.0.0-3build1
Поле
availability для всех записей не заполнено, поэтому наличие исправленных сборок в репозиториях конкретных релизов по переданным данным однозначно не подтверждено — статус обновлений следует проверять на странице Ubuntu Security.Причина уязвимости
Причина — отключенная проверка сертификата сервера. В версии 6.0.0 код в
lib/gist.rb (строки 466–468) при создании HTTP-соединения задает VERIFY_NONE для http_connection. SSL/TLS-контекст при этом принимает любой предъявленный сертификат: цепочка доверия, срок действия и соответствие имени хоста не проверяются.Проверка сертификата — базовая гарантия TLS: клиент обязан убедиться, что соединяется именно с github.com, а не с подставным сервером. Отключив её, gist превращает защищенный канал в канал, который любой on-path атакующий может перехватить и расшифровать. Ошибка классифицируется как CWE-295.
Исправление внесено коммитом
07ccc1a6d46e9d36f0e85d0b1c5d795890ae6bcf в версии 6.1.0; обсуждение проблемы велось в issue #373 репозитория defunkt/gist.Как работает атака
Путь данных выглядит так: утилита
gist формирует запросы к GitHub API (создание и чтение gists, аутентификация) и отправляет их по HTTPS. Внутри lib/gist.rb функция http_connection создает TLS-соединение с параметром VERIFY_NONE — клиентская сторона не проверяет сертификат сервера.Атакующий, расположенный на сетевом пути (ARP-спуфинг в локальной сети, контроль точки доступа, компрометация прокси или шлюза), перехватывает исходящее соединение. Поскольку проверка отключена, он предъявляет жертве любой, в том числе самоподписанный, сертификат — клиент примет его без предупреждений. Соединение терминируется на стороне атакующего, и трафик становится виден ему в открытом виде.
Результат: через канал проходят OAuth-токен и учетные данные GitHub API. Атакующий может читать их, а также модифицировать запросы и ответы — например, подменять содержимое gists, которые создает или читает жертва. Доступность GitHub API при этом не нарушается (VA:N в векторе), ущерб концентрируется на конфиденциальности и целостности данных жертвы.
Условия успешной эксплуатации
По описанию уязвимости для успешной эксплуатации необходимы:
- Позиция на сетевом пути: возможность перехватывать трафик между машиной жертвы и GitHub (MITM-позиция). Это отражено в метрике AC:H — условие нетривиальное.
- Уязвимая версия gist: RubyGem gist до 6.1.0, в котором
http_connectionзадаетVERIFY_NONE.
- Использование утилиты в момент атаки: трафик с токеном и учетными данными должен фактически пройти через контролируемую точку.
Права в системе жертвы, предварительная аутентификация и взаимодействие пользователя не требуются (PR:N, UI:N). Требование AT:P дополнительно указывает на необходимость устойчивого удержания позиции перехвата.
Возможный сценарий атаки
Защитный сценарий на основе описанной механики (не зафиксированный инцидент): атакующий в той же сети — например, в офисной Wi-Fi-сети или через скомпрометированный роутер — переводит трафик жертвы через себя. Пользователь запускает
gist для публикации или чтения заметки на GitHub.Клиент устанавливает HTTPS-соединение, но принимает подставной сертификат атакующего без предупреждений. Атакующий расшифровывает запрос, извлекает OAuth-токен и учетные данные GitHub, после чего может от имени жертвы читать и изменять её gists.
Токен GitHub может давать доступ и к другим ресурсам аккаунта, однако конкретный scope токена в переданных источниках не раскрыт — расширять вывод о последствиях за пределы gists оснований нет.
Есть ли публичный эксплойт
В переданном пакете доказательств сведений о публичном PoC, готовом эксплойте или подтвержденной эксплуатации в реальных атаках нет. Advisory VulnCheck и записи NVD/Ubuntu описывают только техническую суть ошибки и уязвимый код.
Отсутствие данных об эксплойте не означает его отсутствия: механика MITM с отключенной проверкой сертификата хорошо известна, поэтому риск следует оценивать по условиям эксплуатации, а не по наличию публичного кода. CISA KEV в переданных данных отсутствует.
Признаки эксплуатации
Специфичные IOC для этой уязвимости в переданных источниках не опубликованы: атака происходит на сетевом уровне и не оставляет следов в самой системе. Практически полезны только неспецифичные точки контроля:
- журналы сетевого оборудования и прокси на предмет перехвата TLS-соединений к
api.github.com;
- предупреждения о смене сертификата или цепочки доверия для github.com в инфраструктуре;
- нетипичная активность OAuth-токенов GitHub (неожиданные изменения gists, обращения с незнакомых адресов) — косвенный признак уже свершившейся компрометации токена, а не самой уязвимости.
Как обнаружить атаку
Обнаружить уязвимую конфигурацию проще, чем саму атаку. На уровне хоста проверяется версия пакета
gist (см. раздел проверки версии) и, при наличии исходников gem, факт VERIFY_NONE в lib/gist.rb.На сетевом уровне контролируйте исходящие TLS-соединения к GitHub API: egress-фильтрация, обязательный выход через корпоративный прокси с проверкой, мониторинг аномалий сертификатов. Эти меры неспецифичны для CVE-2026-105221, но позволяют выявить MITM-условия, при которых уязвимость реализуема.
Для выявления последствий проверяйте журналы безопасности GitHub: обращения к аккаунту с незнакомых IP, изменения gists, которые не инициировал владелец. Если токен мог пройти через недоверенную сеть, его стоит отозвать превентивно.
Как проверить свою версию
Проверьте релиз Ubuntu и версию установленного пакета
gist:bash
cat /etc/os-release
uname -r
apt-cache policy gist
ubuntu-security-status
Вывод
apt-cache policy gist покажет установленную версию и доступную в репозитории. Сверьте её со списком затронутых версий: например, в Ubuntu 22.04 LTS уязвима 6.0.0-2, в 24.04 LTS — 6.0.0-3.Утилита
ubuntu-security-status дополнительно покажет статус поддержки пакета с точки зрения безопасности.Исправление
Полное устранение — обновление gist до версии 6.1.0 или выше, где проверка сертификата восстановлена (коммит
07ccc1a6d46e9d36f0e85d0b1c5d795890ae6bcf). В Ubuntu порядок действий:- обновите индекс пакетов:
sudo apt update;
- обновите пакет:
sudo apt upgrade gist(илиsudo apt install --only-upgrade gist);
- если исправленная сборка для вашего релиза еще не опубликована, отслеживайте статус на странице Ubuntu Security — поле
availabilityв переданных данных не подтверждает наличие исправлений для перечисленных релизов;
- если пакет установлен как RubyGem вне apt, обновите его средствами gem до версии не ниже 6.1.0.
После обновления отзовите и перевыпустите OAuth-токены GitHub, которые могли использоваться через уязвимую версию, — они могли быть перехвачены ранее.
Временные меры защиты
Если обновление пока недоступно, снизить риск можно организационными и сетевыми мерами (это защитные выводы, а не подтвержденные рекомендации вендора):
- не использовать
gistиз недоверенных сетей — публичный Wi-Fi, гостевые сегменты, сети с неизвестным контролем пути;
- выпускать трафик к GitHub только через доверенный контролируемый прокси или VPN-туннель, где MITM маловероятен;
- ограничить scope OAuth-токенов, используемых утилитой, и хранить их так, чтобы перехват минимизировал ущерб;
- временно удалить пакет, если функциональность не нужна:
sudo apt remove gist.
Отключение проверки сертификата нельзя «смягчить» настройкой на стороне клиента — уязвимость в коде, поэтому сетевые ограничения остаются единственным временным барьером.
Как проверить устранение уязвимости
После обновления убедитесь, что уязвимая версия ушла из системы:
bash
apt-cache policy gist
Установленная версия должна быть исправленной (6.1.0 или соответствующая сборка вашего релиза, если Ubuntu выпустила backport). Дополнительно:
- проверьте
ubuntu-security-status— пакет не должен числиться с известной уязвимостью;
- при установке из gem выполните
gem list gistи убедитесь, что активна версия не ниже 6.1.0;
- зафиксируйте в журналах факт обновления и отзыва старых OAuth-токенов.
Вывод
CVE-2026-105221 — пример того, как одна строка с
VERIFY_NONE обесценивает весь TLS: формально трафик идет по HTTPS, фактически сервер не аутентифицирован. Для администратора Ubuntu практический вывод двоякий: проверить, установлен ли пакет gist и в какой версии, и оценить, проходит ли его трафик через доверенные сети.Оценка Ubuntu «medium» отражает высокую сложность эксплуатации, но последствия — кража OAuth-токена GitHub — оправдывают приоритетное обновление до 6.1.0 или исправленной сборки дистрибутива и ротацию токенов, если уязвимая версия использовалась в недоверенных сетях.
Официальные источники
История обновлений статьи
- 06.10.2026 — Опубликована первая версия материала.
- 07.10.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
