Специалист компании UltraViolet Cyber Aaron, известный под псевдонимом «Zonifer», обнаружил две критические уязвимости в C-реализации даемона sshnpd — ключевого компонента платформы NoPorts от Atsign, которая предназначена для организации удалённого доступа без открытых сетевых портов. Уязвимости были раскрыты в C-даемоне (sshnpd) продукта NoPorts от Atsign — платформы удалённого доступа, которая заменяет открытые SSH-порты моделью подключения, основанной на криптографической идентификации.
Как работает NoPorts и в чём заключался расчёт на безопасность
NoPorts обычно применяется в средах, где администраторам нужен удалённый доступ к инфраструктуре, намеренно скрытой от публичного интернета — серверам за строгими файрволами дата-центров без входящих SSH-слушателей, VPN-терминации и открытых сервисов управления. Компании выбирают такую модель именно для сокращения поверхности атаки: вместо открытия порта и настройки правил файрвола или VPN-шлюзов устройство только инициирует исходящие соединения, а даемон NoPorts сам решает, кому разрешено запрашивать сессию, основываясь на криптографической идентичности. Такой подход привлекателен для продакшн-систем, инфраструктуры CI/CD, внутренних инструментов и любых узлов, где прямое открытие SSH, даже за VPN, считается неприемлемым риском.
Однако именно на этом даемоне и держалась вся модель безопасности продукта. Как отмечают в отчёте, вся архитектура зависит от того, правильно ли даемон проверяет права доступа — и именно в этой проверке нашлась слабость.
Суть уязвимостей
Корневой причиной проблемы стала отсутствующая проверка авторизации в пути диспетчеризации запросов в сочетании с инвертированной функцией валидации, из-за которой проверка SSH-публичных ключей срабатывала «наоборот» — пропускала недопустимые ключи вместо их отклонения.
При объединении двух дефектов злоумышленник с любым действительным идентификатором atSign — не обязательно с правами авторизованного администратора-менеджера — мог:
- запросить сессию от имени неавторизованной идентичности;
- отправить вредоносный публичный SSH-ключ, который сломанная проверка принимала как легитимный;
- добиться записи этого ключа в файл authorized_keys на целевой системе;
- использовать собственный релей даемона NoPorts, чтобы достучаться до localhost:22 и авторизоваться подготовленным ключом.
Таким образом атакующий, обладающий любой действительной идентичностью atSign, а не только правами авторизованного менеджера, мог внедрить вредоносный SSH-ключ в файл authorized_keys целевой системы и получить доступ к её SSH-сервису через собственный релей NoPorts, несмотря на то что сервис никогда не был доступен из сети.
Особенность атаки в том, что она не требовала эксплуатации памяти, кражи учётных данных или манипуляций с протоколом. Не требовалось ни повреждения памяти, ни кражи учётных данных, ни манипуляций с протоколом — злоумышленник использовал штатную логику работы продукта именно так, как она была задумана, что делало цепочку одновременно простой в исполнении и трудной для обнаружения обычными средствами.
Проблема на уровне архитектуры
Исследование показало, что аутентификация и авторизация в C-реализации не проверялись совместно, что позволяло аутентифицированной, но неавторизованной идентичности получать доступ к функциям, зарезервированным для доверенных администраторов.
Особенно уязвимыми оказались именно те организации, которые сделали ставку на NoPorts как на замену традиционных периметровых средств защиты, а не как на дополнение к ним. Для предприятий, которые внедрили NoPorts именно как замену традиционным средствам защиты периметра, а не как дополнение к ним, системы, наиболее зависимые от NoPorts в плане защиты — именно потому, что у них не было других открытых путей доступа — оказались и наиболее уязвимыми перед этим дефектом.
Реакция Atsign и статус исправления
Atsign устранила проблему в течение четырёх дней после раскрытия информации, присвоение CVE-идентификатора находится в процессе, однако любой организации, использующей C-реализацию, рекомендуется рассматривать обновление как приоритетную задачу.
Специалисты UltraViolet Cyber уже начали работу по выявлению следов возможной эксплуатации уязвимости у клиентов. Команда UVCyber Threat Intelligence and Detection Engineering приступила к внедрению правил детектирования этой уязвимости и проведению поиска угроз в инфраструктуре Atsign у клиентов компании.
Эксперты подчёркивают, что случай с NoPorts иллюстрирует более общую закономерность в архитектуре безопасности удалённого доступа. Удаление открытого прослушивающего порта не устраняет необходимости в авторизации — оно просто переносит эту необходимость в другое место архитектуры. Иными словами, отказ от открытых портов сам по себе не гарантирует безопасность, если логика проверки прав доступа на стороне даемона содержит ошибки.