Radicle раскрыла две критические уязвимости в сетевом протоколе
Radicle, децентрализованный, локально-первый стек для совместной работы с кодом поверх Git, 23 сентября 2026 года опубликовал раскрытие двух критических уязвимостей в сетевом протоколе, который используют узлы (nodes) системы. Обе уязвимости затрагивают все версии Radicle, выпущенные на данный момент, и на момент публикации исправление ещё не готово.
Первая уязвимость касается конфиденциальности: трафик между узлами передаётся в открытом виде, не зашифрован и не аутентифицирован. Подписанные ссылки (Signed References) по-прежнему позволяют обнаружить, если кто-то на сетевом пути подменил объекты при передаче, поэтому подделать код или репозитории злоумышленник не может. Но любой, кто способен наблюдать за сетевым трафиком между двумя узлами, может прочитать передаваемые данные. Для публичных репозиториев это не критично, а вот для приватных, серьёзная проблема. Об уязвимости сообщил Konstantinos Maninakis 24 июня 2026 года.
Вторая уязвимость, в рукопожатии аутентификации пиров: оно сломано и позволяет подделать (impersonate) Node ID. Приватные репозитории раздаются только узлам из разрешённого списка (allow-list) по их Node ID; злоумышленник, узнавший или угадавший чужой Node ID из этого списка, может напрямую скачать приватный репозиторий, даже не находясь на пути сетевого трафика. Сама по себе эта уязвимость сложнее в эксплуатации: список разрешённых Node ID не публичен, и злоумышленнику, не находящемуся на пути соединения, приходится его угадывать. Но на практике обе проблемы особенно опасны в связке: атакующий на сетевом пути видит Node ID обеих сторон соединения (обычно оба входят в allow-list), может читать данные «на лету», а затем использовать подсмотренный Node ID, чтобы по запросу скачать весь репозиторий целиком. Об этой уязвимости сообщил пользователь под ником cryptocode 12 августа 2026 года.
Из-за отсутствия механизма согласования версий протокола и несовместимости исправления по формату передачи данных сделать обратно совместимый патч невозможно, релиз с фиксом будет breaking (ломающим совместимость) и получит номер новой мажорной версии. Конкретных сроков выхода команда не называет, отмечая лишь, что работа уже ведётся.
Пользователям рекомендовано прекратить использование приватных репозиториев по сети до выхода обновления: остановить их раздачу командой rad block <RID> (предпочтительнее, чем rad unseed, если политика раздачи узла установлена в «allow»), при этом необязательно удалять их из локального хранилища, это позволит возобновить раздачу после выхода исправленной версии. Любой приватный репозиторий, уже передававшийся по сети, следует считать «утёкшим»: если в нём хранились незашифрованные ключи, токены или учётные данные, их нужно ротировать. Дополнительное шифрование транспорта через Tor, I2P, другие оверлейные сети или VPN не решает проблему полностью: оно скрывает трафик от наблюдателя на сетевом пути, но не предотвращает подмену Node ID, поэтому целенаправленная атака всё равно может привести к утечке содержимого приватного репозитория.
Команда отдельно перечислила три ограничения того, что даёт остановка раздачи репозитория: она не удаляет локальную копию данных из хранилища узла; она не затрагивает копии, которые уже успели скачать другие авторизованные узлы (их тоже нужно попросить заблокировать репозиторий); и она никак не отменяет уже произошедшую утечку, данные, синхронизированные по сети ранее, следует считать раскрытыми.
Обе уязвимости находятся на уровне транспорта узлов, а не в модели данных репозитория: объекты Git и подписанные ссылки по-прежнему проверяются на уровне хранилища, поэтому подделать код или личность через эти дыры нельзя. В качестве решения Radicle заменит нынешний протокол, собственную разработку на основе Noise, на open-source стек iroh, переход на который планировался и раньше; помимо устранения уязвимостей, iroh также добавит обход NAT и повысит устойчивость сети. Такое изменение транспортного уровня неизбежно ломает совместимость и на переходный период разделит сеть на кластеры обновлённых и необновлённых узлов, которые не смогут связываться друг с другом; команда обещает по возможности сохранить формат локального хранилища совместимым. В завершение проект поблагодарил Konstantinos Maninakis и cryptocode за ответственное раскрытие уязвимостей.
Ключевые факты
- Radicle раскрыл две критические уязвимости сетевого протокола, затрагивающие все выпущенные версии продукта.
- Трафик между узлами не шифруется и не аутентифицирован, наблюдатель на сетевом пути может прочитать данные приватного репозитория (сообщено 24.06.2026).
- Сломанное рукопожатие аутентификации пиров позволяет подделать Node ID и напрямую скачать приватный репозиторий, минуя сетевой путь (сообщено 12.08.2026).
- Пользователям рекомендовано прекратить использование приватных репозиториев по сети до выхода фикса, заблокировать их раздачу и ротировать утёкшие ключи/токены.
- Исправление потребует breaking-релиза с переходом на протокол iroh вместо текущего на основе Noise; сроков выхода команда пока не называет.
Почему это важно
Radicle, децентрализованная альтернатива GitHub/GitLab, построенная на идее приватных peer-to-peer репозиториев без центрального сервера. Раскрытые уязвимости бьют именно по этому обещанию: незашифрованный трафик и возможность подделать личность узла означают, что приватность приватных репозиториев на деле не гарантирована ни в одной из выпущенных версий.
Кому это важно
Прежде всего пользователям Radicle, которые хранят или синхронизируют приватные репозитории по сети, а также специалистам по безопасности и разработчикам других децентрализованных peer-to-peer инструментов, где похожие ошибки в протоколе аутентификации и шифрования транспорта могут повторяться.
Как это применить
Проверить список приватных репозиториев командой rad ls --private --all, остановить их раздачу командой rad block <RID> (а не rad unseed, если политика раздачи узла установлена в allow), при желании полностью остановить узел (rad node stop), считать любой ранее переданный по сети приватный репозиторий скомпрометированным и ротировать хранившиеся в нём незашифрованные ключи, токены или учётные данные.
Можно ли доверять
Это официальное раскрытие от самого проекта Radicle с указанием точных дат обращения исследователей (24.06.2026 и 12.08.2026), их никнеймов и технических деталей обеих уязвимостей. В источнике нет CVE-номера, сроков выхода фикса и данных о том, сколько узлов или репозиториев реально пострадало, проект прямо говорит, что публикует раскрытие как предупреждение о риске, а не как подтверждённый случай утечки.
Риски и подводные камни
VPN, Tor, I2P и другие оверлейные сети не решают проблему полностью, они прячут трафик от наблюдателя на пути, но не мешают подделать Node ID. Остановка раздачи репозитория не удаляет его локальную копию автоматически, не затрагивает копии, уже скачанные другими узлами, и никак не отменяет уже случившуюся ранее утечку данных. Предстоящий breaking-релиз с переходом на iroh временно разделит сеть на несовместимые кластеры обновлённых и необновлённых узлов.
«Мы рекомендуем прекратить использовать приватные репозитории, пока не выйдет исправление.»
— проект Radicle