Уязвимость в OpenSSH: имена пользователей позволяют выполнить код

Уязвимость в OpenSSH: имена пользователей позволяют выполнить код

Уязвимость в OpenSSH: имена пользователей позволяют выполнить код

Исследователь безопасности Дэвид Лидбитер обнаружил уязвимость в OpenSSH — CVE-2025-61984 — которая демонстрирует: даже мелкие особенности парсинга команд и поведения shell могут привести к удалённому выполнению кода.

Суть проблемы проста и неприятна: в OpenSSH (до версии 10.1) контрол-символы в именах пользователей, полученных из ненадёжных источников, могли не отфильтровываться.

Когда такое «имя» подставлялось в ProxyCommand (через переменную %r), OpenSSH формировал строку для exec, которую запускал через shell. Если в этой строке оказывались символы вроде $[ и символы новой строки, некоторые оболочки (например, bash) могли интерпретировать это так, что первая команда аварийно завершается, а затем выполняется то, что идёт после — то есть возможна инъекция команды.

Эксплуатация требует специфической связки: конфигурация, использующая ProxyCommand с %r, уязвимая оболочка и «входной» источник имени пользователя, который злоумышленник контролирует. Практический пример — злоумышленный .gitmodules, где в URL подставляют строку вроде:

[submodule "foo"]
  path = foo
  url = "$[+]\nsource poc.sh\n@foo.example.com:foo"

Если SSH-конфиг содержит строку вроде

ProxyCommand some-command %r@%h:%p

и вы запускаете git clone --recursive, то в подходящих условиях может выполниться source poc.sh — до установления самого соединения.

Важно понимать: условия для успешной атаки нишевые, но реальны — инструментальная цепочка Git → SSH → shell и автоматизация (CI/CD) дают атакующему много точек входа. Проблема усугубляется тем, что OpenSSH фильтровал многие метасимволы, но пропустил $ и [ — и это создало неожиданный вектор.

Исправление уже включено в OpenSSH 10.1: разработчики начали проверять и запрещать управляющие символы в именах пользователей через iscntrl() в ssh.c. То есть долгосрочное решение — обновиться до 10.1 или новее.

Если обновиться сразу нельзя, Лидбитер предлагает два практических временных шага. Во-первых, брать имя пользователя в одинарные кавычки в ProxyCommand, чтобы предотвратить подстановку:

ProxyCommand some-command '%r@%h:%p'

(Обратите внимание: одинарные кавычки нужны именно потому, что двойные не защитят от $[ — оболочка всё ещё будет их обрабатывать.) Во-вторых, по умолчанию отключить SSH-подмодули в Git и не позволять автоматические URL-хендлеры, которые могут передавать непроверенные SSH-команды:

git config --global protocol.ssh.allow user

Главный вывод — не полагаться на то, что «маленький» символ или строка не принесут беды: при передаче входа от ненадёжных источников через несколько инструментов даже неочевидная каверза в парсинге может стать критической. Рекомендуется как можно скорее обновить OpenSSH или применить временные защитные меры в конфигурациях ProxyCommand и политиках Git.

WhatsApp обещает защитить юзернеймы от фейков, клонов и мошенников

WhatsApp (принадлежит корпорации Meta, признанной экстремисткой и запрещённой в России) еще не успел полноценно запустить имена пользователей, а вокруг функции уже началась возня с регуляторами. По данным СМИ, власти Индии попросили корпорацию притормозить и объяснить, как мессенджер собирается бороться с мошенничеством и подделкой личностей.

Суть опасений понятна: если пользователи смогут общаться без передачи номера телефона, мошенникам якобы станет проще прятаться за никами, выдавать себя за людей, компании или госорганы и проворачивать привычные схемы уже в более анонимном формате.

WhatsApp с этим не согласен и утверждает, что защита от злоупотреблений уже заложена в дизайн функции. Представитель корпорации сообщил Android Authority, что возможность использовать юзернеймы пока не запущена для всех и будет внедряться постепенно.

По словам WhatsApp, самые заметные имена заранее зарезервированы: публичные персоны, госструктуры, знаменитости и верифицированные аккаунты Meta не смогут быть захвачены посторонними. Более того, похожие варианты известных имен тоже удерживаются.

Компания также подчёркивает: имена пользователей не заменят номер телефона полностью. Для создания и использования аккаунта WhatsApp по-прежнему потребуется телефонный номер. Ник нужен только как способ дать людям возможность связаться друг с другом без немедленного раскрытия номера.

Дополнительные ограничения тоже будут. Чтобы написать человеку по юзернейму, нужно знать его точное имя. WhatsApp обещает ограничивать количество новых контактов, которым может написать один аккаунт, блокировать массовый перебор никнеймов и использовать автоматические системы для поиска подозрительной активности и имперсонации.

Если незнакомец впервые напишет по имени, пользователь увидит больше контекста: новый ли это аккаунт, есть ли он в контактах, есть ли общая группа и из какой страны идет сообщение.

Иными словами, WhatsApp пытается усидеть на двух стульях: дать пользователям больше приватности, но не превратить юзернеймы в новый рай для мошенников. Получится ли? Станет понятно после запуска.

RSS: Новости на портале Anti-Malware.ru