Системы удалённого доступа без открытых портов должны сокращать поверхность атаки, но одна ошибка в проверке прав может вернуть риск на уровень приложения. Специалист UltraViolet Cyber обнаружил две уязвимости в C-демоне sshnpd платформы Atsign NoPorts, которые вместе могли позволить владельцу любой действующей atSign-идентичности получить неразрешённый доступ по SSH.
NoPorts не публикует SSH-службу в сети, а строит зашифрованный сеанс через ретрансляционную инфраструктуру после криптографической проверки отправителя. В уязвимой C-реализации sshnpd сообщение проверялось на подлинность, однако демон не сверял отправителя со списком доверенных менеджеров перед обработкой запросов на сеанс, SSH и туннель.
Вторая ошибка проявлялась при запуске демона с флагом -s, который разрешает передачу открытых SSH-ключей. Функция должна была проверять допустимый префикс ключа, но из-за нескольких ошибок сравнение работало наоборот: неподходящие данные считались корректными. В результате присланный злоумышленником материал мог дойти до кода, записывающего ключ в authorized_keys.
Связка двух ошибок создавала технически возможную цепочку. Владелец любой валидной atSign-идентичности мог запросить сеанс без административных прав, передать свой SSH-ключ, добиться его записи в authorized_keys и затем через ретранслятор NoPorts подключиться к localhost:22 с добавленным ключом. Кража паролей, повреждение памяти или изменение протокола не требовались.
Проблема особенно затрагивала системы, где NoPorts использовали именно для отказа от входящих SSH-подключений, VPN и открытых интерфейсов управления. Обычное сетевое сканирование такую уязвимость не показало бы, поскольку слабое место находилось в логике обработки сообщений. UltraViolet Cyber описывает техническую цепочку и не сообщает о подтверждённых атаках в реальных средах.
Atsign получил сообщение 21 августа и выпустил исправленную версию 25 августа 2026 года, запрос на присвоение CVE ещё рассматривается. UltraViolet Cyber советует срочно обновить C-демон, проверить установленную версию, просмотреть authorized_keys на неизвестные ключи и сверить список --manager. Для подобных систем также рекомендуют проверять, что пользователи без нужных прав получают отказ.
