SSH принимал любой пароль длиной 257 байт. Вот почему
SynapByte
0:00 / 0:00
SSH принимал любой пароль длиной 257 байт. Вот почему
21 просмотр · 10 ч назад
SynapByte
800 подписчиков
21 просмотр · 10 ч назад
На некоторых серверах Linux любой пароль длиной от 257 до 1024 байт позволял войти в учетную запись, у которой вообще не было пароля. В этом видео показано, как этот единственный пароль, введенный с клавиатуры, срабатывает при выполнении одной операции strcmp(), и точно показано, как ошибка musl crypt() ("*") совпала с заблокированной теневой записью ("*").
Попутно вы увидите, как Linux на самом деле хранит пароли (/etc/shadow, соль $6$ и хеш, 5000 раундов), как sshd проверяет вход без PAM, почему sshd заимствует соль у другой учетной записи (ошибка синхронизации 2016 года) и что изменилось в OpenSSH 10.6p2. Вы также узнаете, что нужно делать: обновить и перезапустить sshd или отключить вход по паролю и использовать ключи.
Кого затрагивает уязвимость: sshd, собранный или запущенный без PAM на основе musl libc (например, стандартный openssh-server Alpine), с включенной аутентификацией по паролю, учетная запись, у которой поле shadow равно "*", и другая учетная запись с хешем $5$/$6$. Системы glibc и sshd с включенной PAM не затронуты. На момент публикации уведомления уязвимость CVE не была присвоена.
Разделы
0:00 - Невозможный вход в систему
0:30 - Сервер Прии
0:55 - Внутри /etc/shadow: соль + хеш
1:40 - Как sshd проверяет вход в систему (crypt + strcmp)
2:14 - Учетная запись Asterisk
2:46 - Заимствование соли (ошибка синхронизации 2016 года)
3:25 - криптографический модуль musl: ограничение в 256 байт и "*" при ошибке
3:58 - Коллизия: "*" равно "*"
4:35 - Карта VOID (внутриполосная сигнализация)
5:06 - Предупреждение 2016 года
5:46 - Исправление: 10.6p2, перезапуск sshd, использование ключей
6:25 - Что на самом деле сломалось
Источники
Примечания к выпуску OpenSSH 10.6p2 (05.11.2026): https://www.openssh.org/releasenotes....
Исправление OpenSSH: https://github.com/openssh/openssh-po...
Рекомендации по безопасности Alpine Linux (05.11.2026): https://alpinelinux.org/posts/2026-11...
Статья о sshhole (Озгюн Кюльтекин, Уэйкфилд): https://sshhole.com
OpenSSH auth-passwd.c: https://github.com/openssh/openssh-po...
OpenSSH xcrypt.c (pick_salt): https://github.com/openssh/openssh-po...
CVE-2016-6210 (старая ошибка синхронизации): https://nvd.nist.gov/vuln/detail/CVE-...
musl crypt_sha512.c: https://git.musl-libc.org/cgit/musl/t...
коммит musl "make crypt return an unmatchable hash instead of NULL on failure" (2012): https://git.musl-libc.org/cgit/musl/c...
список рассылки musl, Solar Designer (27.03.2016): https://www.openwall.com/lists/musl/2...
Страница руководства shadow(5): https://man7.org/linux/man-pages/man5...
Страница руководства crypt(3): https://man7.org/linux/man-pages/man3...
libxcrypt crypt(3)/crypt(5): https://github.com/besser82/libxcrypt...
Спецификация SHA-crypt (Ульрих Дреппер): https://www.akkadia.org/drepper/SHA-c...
Fedora 35 yescrypt default: https://fedoraproject.org/wiki/Change...
Debian 11 yescrypt default: https://lists.debian.org/debian-doc/2...
Музыка: "Agoraphobia" от HoliznaCC0 (CC0, Free Music Archive)
#SSH #Linux #CyberSecurity
Подпишитесь на SynapByte. Где каждая концепция понятна.
SSH Linux Кибербезопасность OpenSSH AlpineLinux Проектирование систем