LINUX.ORG.RU

Обход аутентификации сервера OpenSSH на системах musl

 , ,


1

4

OpenSSH позволяет войти в систему под пользователем, парольный вход в систему которому был выключен путем установки ‘*’ в поле хеша пароля. Для того нужно передать любой пароль длиннее 256 символов. Уязвимы только системы с включенной парольной аутентификацией и выключенным PAM. Затронуты все системы, основанные на musl: Alpine Linux, OpenWRT, buildroot — с настройками по умолчанию — и другие. Проблема существует с 2016 года, исправлена в openssh 10.6p2.

>>> Подробнее

anonymous

Проверено: maxcom ()
Последнее исправление: maxcom (всего исправлений: 2)
Ответ на: комментарий от Skullnet

Вход по паролю - зло. Нормальные люди уже давно сделали вход по ssh-ключу.

Ты его наизусть помнишь?

anc ★★★★★
()
Ответ на: комментарий от anc

а что его запоминать то, 5 строчек всего

$ cat ~/.ssh/id_ed25519
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjECCCCBG5vbMUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACCRNrAmI3IJFOZb88Xoz6mhwTpD1AFE/dILEmHUSo7gpQAAAJhLUDJmS1Ay
ZgAAAAtzc2gtZWQyNTUxOQAAACCRNr1mI3IJFOZb8wXoz6mhwTpD1AFE/dILEmHUSo7gpQ
AAAEDLZpSWE8qfAQ7pUjGk5zM1Vk0Cbl/Gv19wE3OljvFHF5E2vWYjcgkU5lvzBejPqaHB
ACPUAUT90gsSYdRKjuCl888AE3J5YWJpbi5zc0BnbWFpbC5jb20BAg==
-----END OPENSSH PRIVATE KEY-----

gagarin0 ★
()
Ответ на: комментарий от anc

Нет, у тебя ключ хранится на диске, просто делаешь ssh хост.

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

Skullnet ★★★★★
()
Последнее исправление: Skullnet (всего исправлений: 1)

musl

Однажды в размышлении «не воткнуть ли вместо glibc» (@Iron_Bug, помнится, на нём сидела), стал смотреть, с ходу нарвался на какое-то дико покоценное API (уж и не вспомню, может тупо на юникод), изумился как этим вообще кто-то пользуется как оно вообще работает, и больше туда не смотрел.

dimgel ★★★★★
()
Последнее исправление: dimgel (всего исправлений: 1)
Ответ на: комментарий от Skullnet

Дядь ты меня за слабоумного держишь?

anc ★★★★★
()

Для того нужно передать любой пароль длиннее 256 символов.

if (strlen(pass) > 256) return «fuck you»;

dynamic_cast ★
()

Надо было прогнать код на сишке через PVS-Studio или Valgrind может быть это бы им помогло, но скорее всего там код разрабатывали вчерашние студенты за пачку доширака ¯\_(ツ)_/¯

doomer
()
Ответ на: комментарий от MKuznetsov

Баг возник из-за путаницы. А путаница возникла из-за того, что значение и метаданные над этим значением решили совместить в одном поле.

Manhunt ★★★★★
()
Ответ на: комментарий от liksys

This string will be shorter than 13 characters, will begin with a ‘*’, and will not compare equal to setting.

Это API - просто эталонное говнище. Вместо того, чтобы всегда возвращать NULL, оно заставляет тебя дрочить вприсядку.

кмк этот код надо переписать на растишке безопасных плюсах, там как раз есть std::optional, которая должна бить по рукам за прямое обращение к значению (хотя в плюсах ради подрожания сишке всё-таки можно небезопасно обратиться напрямую через *).

tnray ★
()
Ответ на: комментарий от Manhunt

метаданные над этим значением

Это ты так buzzвордово * в /etc/shadow назвал?

Shadow ★★★★★
()
Ответ на: комментарий от dimgel

Вот это чтоли?

The iconv implementation musl is very small and oriented towards being unobtrusive to static link. Its character set/encoding coverage is very strong for its size, but not comprehensive like glibc’s

Contrary to POSIX, glibc iconv generates EILSEQ when a character is not representable in the destination charset. musl, in accordance with POSIX, performs an implementation-defined conversion and returns the number of such inexact conversions performed. At present, it replaces the character with an asterisk

кстати к вопросу о баге. Ну тут уж как говорится извините, что в POSIX приняли - то они и делают. Плюс в любом случае, возможность работать нужным образом с локалями и кодировками в софт на мюсле добавить можно, а вот возможность статически линковаться в жлибц - нет.

Lrrr ★★★★★
()

Шел 2026 год, люди все ещё используют мусорный musl, а также отсутствие верификации TLA+/Lean для ключевого софта.

ac130kz ★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.