Присоединяйся к обсуждению

Больше материалов, обсуждений и эксклюзивного контента — на нашем форуме.

Две уязвимости в NoPorts sshnpd позволяли обойти защиту SSH и получить доступ к любому серверу

Специалист компании 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 иллюстрирует более общую закономерность в архитектуре безопасности удалённого доступа. Удаление открытого прослушивающего порта не устраняет необходимости в авторизации — оно просто переносит эту необходимость в другое место архитектуры. Иными словами, отказ от открытых портов сам по себе не гарантирует безопасность, если логика проверки прав доступа на стороне даемона содержит ошибки.