Уязвимость в 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.

Яндекс начнёт останавливать исходящие звонки мошенникам ещё до разговора

Яндекс расширил возможности своего определителя номера: теперь сервис предупреждает пользователей, если они сами пытаются позвонить на номер, который используется мошенниками. Новая функция доступна всем владельцам смартфонов на Android.

Ранее определитель номера в приложении «Яндекс с Алисой» и мобильном Яндекс Браузере фокусировался в основном на входящих вызовах и заранее сигнализировал о спаме и подозрительных звонках.

Однако злоумышленники адаптировались и стали действовать иначе — всё чаще они вынуждают людей звонить им самостоятельно.

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

Чтобы «остановить взлом», человека просят перезвонить по указанному номеру. И, как показывают данные Яндекса, в начале января 67% разговоров со злоумышленниками происходили именно по инициативе самих пользователей.

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

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

По сути, определитель номера теперь работает не только как фильтр для входящих вызовов, но и как дополнительная «проверка на паузе» — в момент, когда пользователь сам готов сделать шаг навстречу мошеннику.

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