Профиль: Аноним (вход | регистрация) неRU opennet.me  
OpenNET

[ новости /+++ | форум | теги |    ]



"SSHole - уязвимость, позволяющая подключиться по SSH без пароля в системах с Musl"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"SSHole - уязвимость, позволяющая подключиться по SSH без пароля в системах с Musl"  +/–
Сообщение от opennews (?), 05-Ноя-26, 21:53 
Разработчики OpenSSH опубликовали экстренное обновление OpenSSH 10.6p2, в котором добавлена защита от критической уязвимости (CVE не назначен), получившей кодовое имя "SSHole" и позволяющей обойти аутентификацию. В системах с библиотекой Musl уязвимость позволяет подключиться к пользователю, для которого не установлен пароль, введя любой пароль, содержащий больше чем 256 символов. Проблема затрагивает дистрибутивы Linux, использующие стандартную библиотеку musl, но не использующие PAM (Pluggable Authentication Modules), такие как OpenWRT, Alpine, Buildroot и Yocto. Особую опасность представляет то, что часто вход по паролю блокируется для пользователя root, что даёт возможность любому удалённо подключиться с правами администратора...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=66627

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от aSSHole (?), 05-Ноя-26, 21:53 
>после выявления данной уязвимости, вместо хэша пароля был выставлен знак "!". Но его наличие блокировало вход по SSH-ключам, поэтому с 2022 года символ для блокировки входа по паролю был заменён на "*".

Непонятно, то есть уязвимость была выявлена в 22 году или как?

Ответить | Правка | Наверх | Cообщить модератору

3. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +2 +/–
Сообщение от Аноним (3), 05-Ноя-26, 22:01 
Скорее пытались интуитивно исправить, но забыли что исправляли.
Ответить | Правка | Наверх | Cообщить модератору

2. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  –2 +/–
Сообщение от Аноним (2), 05-Ноя-26, 21:57 
Необходимо вообще в принципе по умолчанию убрать вход по паролю: обменялись ключами и все хорошо.
Ответить | Правка | Наверх | Cообщить модератору

4. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +8 +/–
Сообщение от Аноним (4), 05-Ноя-26, 22:06 
> в musl функция crypt() для хэшей SHA-512 возвращает символ "*", если
> длина переданного пароля превышает 256 байт (ограничение введено в 2012
> году для защиты от DoS-атак, так как при передаче больших значений
> возникает большая нагрузка на CPU)

Хочу посмотреть на гения, который это придумал.
Вместо того чтобы вернуть нормальную ошибку или хотя бы NULL, они возвращают строковый символ!

Ответить | Правка | Наверх | Cообщить модератору

6. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +1 +/–
Сообщение от Аноним (6), 05-Ноя-26, 22:09 
Видимо эти гении учились вместе с теми, что вместо хеша пароля в файле пишут ! или *
Ответить | Правка | Наверх | Cообщить модератору

9. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (9), 05-Ноя-26, 22:19 
Си не родной, да?
Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

18. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +3 +/–
Сообщение от Аноним (18), 05-Ноя-26, 22:48 
> Вместо того чтобы вернуть нормальную ошибку или хотя бы NULL, они возвращают строковый символ

Чувак, ты не поверишь! crypt() возвращал NULL в качестве ошибки еще с 90х годов. Но сишочные бракоделы из musl решили больше не возвращать нуль, потому что... другие сишочные бракоделы традиционно не проверяли возвращаемое значение на нуль и получали сегфолт в вызове strcmp().

https://git.musl-libc.org/cgit/musl/commit/?id=b3c4cc121f70f...

Одни халатные браколелы подстелили соломку другим халатным бракоделам, но что-то пошло не так. 😳

Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

44. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от aname (ok), 05-Ноя-26, 23:55 
Хотелось уточнить, на чём написана glibc
Ответить | Правка | Наверх | Cообщить модератору

29. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (29), 05-Ноя-26, 23:08 
именно эти строки и привлекли больше всего. это просто гениально - заглушка в проде
Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

5. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (6), 05-Ноя-26, 22:09 
>> Однако в musl функция crypt() для хэшей SHA-512 возвращает символ "*", если длина переданного пароля превышает 256 байт

Я так понимаю это не считается багом и править это не будут? Ну удачи им.

Ответить | Правка | Наверх | Cообщить модератору

7. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (7), 05-Ноя-26, 22:11 
musl как он есть.
Ответить | Правка | Наверх | Cообщить модератору

11. Скрыто модератором  +/–
Сообщение от Аноним (11), 05-Ноя-26, 22:25 
Ответить | Правка | Наверх | Cообщить модератору

8. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  –3 +/–
Сообщение от Bottle (?), 05-Ноя-26, 22:14 
Т.е. опять сишники расплатились корректностью за скорость?
Ответить | Правка | Наверх | Cообщить модератору

10. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  –3 +/–
Сообщение от Аноном (-), 05-Ноя-26, 22:22 
Ну... конечно не проверять пароль будет быстрее, но думаю тут проблема в убогом недоязычке в котором нельзя нормально обработать ошибку.
Примерно как кидать -1 из функции которая должна возвращать беззнаковое.
Ответить | Правка | Наверх | Cообщить модератору

12. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  –1 +/–
Сообщение от Аноним (11), 05-Ноя-26, 22:30 
>Т.е. опять сишники

Причем тут то сишники? Логическая проблема добавлена практически осознанно. Если бы шмазл переписывали, как водится, на ржавого, то эту проблему могли бы не добавить только, опять же, по ошибке. Как известно две подрят ошибки дают корректную работу ;)

Ответить | Правка | К родителю #8 | Наверх | Cообщить модератору

21. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (18), 05-Ноя-26, 22:51 
> Причем тут то сишники? Логическая проблема добавлена практически осознанно

Буквально при том, что эта "логическая проблема" была создана специально, чтобы сишочные бракоделы не сегфолтились на strcmp() - ведь сишочные бракоделы традиционно не проверяют возвращаемый результат на нуль.

https://git.musl-libc.org/cgit/musl/commit/?id=b3c4cc121f70f...

А вы продолжайте рассказывать, как вам не нужны нормальные языки.

Ответить | Правка | Наверх | Cообщить модератору

36. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (36), 05-Ноя-26, 23:21 
> Логическая проблема добавлена практически осознанно

это реальный бэкдор на уровне спеки!!!

Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

17. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (17), 05-Ноя-26, 22:48 
там нарушен контракт функции crypt, дважды, когда через соль стали передавать алгоритм хеширования и когда стали проверять размер, все это без (изначально предусмотренной)  возможности вернуть ошибку, классический лавров джпг
Ответить | Правка | К родителю #8 | Наверх | Cообщить модератору

24. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Норм (?), 05-Ноя-26, 22:55 
Какого у функции хеширования вообще ограничение размер данных?

Это как бы приложение должно решать какие у него ограничения на пароль.

Ответить | Правка | Наверх | Cообщить модератору

26. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (17), 05-Ноя-26, 22:58 
костыль защиты от ддос
Ответить | Правка | Наверх | Cообщить модератору

13. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (13), 05-Ноя-26, 22:32 

CVE назначен.
CVE-2026-123158

Ответить | Правка | Наверх | Cообщить модератору

14. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от IdeaFix (ok), 05-Ноя-26, 22:39 
Раст бы помог?:)
Ответить | Правка | Наверх | Cообщить модератору

15. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  –1 +/–
Сообщение от Аноном (?), 05-Ноя-26, 22:46 
Неа.
В расте точно так же возвращали бы *.
Почему? Потому что идъйоты (с)

Хотя в расте можно было бы в Result<String, Error> возвращать "password is longer than 256 FU"

Ответить | Правка | Наверх | Cообщить модератору

34. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (36), 05-Ноя-26, 23:20 
> Почему? Потому что идъйоты (с)

потому-что так задумано, в спеке так описано - это наичистейший бэкдор!!! Стоит вообще задуматься!!!

Ответить | Правка | Наверх | Cообщить модератору

40. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Халявщик не корпорастemail (?), 05-Ноя-26, 23:35 
- Стоит вообще задуматься!!!

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

Ответить | Правка | Наверх | Cообщить модератору

41. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (36), 05-Ноя-26, 23:44 
> Йищё бы.

Так и запишем. Опенсорс (далее опсос) считать по определению пробэкдоренным кодом! А всяк кто пишет такой код - тот "кто сидит в кр3мле"!

Ответить | Правка | Наверх | Cообщить модератору

19. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +1 +/–
Сообщение от Аноним (19), 05-Ноя-26, 22:50 
В каноническом расте функция бы возвращала бы Result<String, Error>.
Но т.е. функция делается для древности из семидесятых, то вернуть его было бы невозможно, пришлось бы возвращать Option<String>.

Проблема не только в том, что начали возращать что-то вместо NULL, а еще и причина.
И на сайте это прям пояснено

> if crypt() can't do its job, it returns NULL.
> except a lot of programs never check for NULL.
> they just compare whatever crypt() gives back with the stored field,
> hit the NULL, and crash

И отличие от си, там не верят на "мамой клянуся, там ни нал!" разработчика и обязывают проверить что вернулось из функции перед работой с Option.

Ответить | Правка | К родителю #14 | Наверх | Cообщить модератору

16. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +2 +/–
Сообщение от Аноним (36), 05-Ноя-26, 22:46 
> Однако в musl функция crypt() для хэшей SHA-512 возвращает символ "*", если длина переданного пароля превышает 256 байт (ограничение введено в 2012 году для защиты от DoS-атак, так как при передаче больших значений возникает большая нагрузка на CPU). Такой же символ используется в поле с хэшем пароля в "/etc/shadow" для обозначения учётных записей, для которых аутентификация по паролю заблокирована.

я так долго не смеялся, жесть :)))) с***ка это же функция возвращающая хеш, либо ошибку, с какого бодуна она должна возвращать символ * ? Какой альтернативно-одоренный до такого додумался? И почему именно *, а не какой-нибудь другой символ, это что на столько умственно-отсталым надо быть, чтобы даже не придумать что-то иное (тупо пустая строка), а взять лять символ затычку из файла /etc/shadow (n-раз фейспалм, мат высотой с бурдж-халифа)  

Ответить | Правка | Наверх | Cообщить модератору

20. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (20), 05-Ноя-26, 22:51 
> ? Какой альтернативно-одоренный до такого додумался? И почему именно *, а
> не какой-нибудь другой символ,

Они пробовали "!". Получилась какая-то (!)

> это что на столько умственно-отсталым надо быть, чтобы даже не придумать что-то иное (тупо пустая строка), а взять лять символ затычку из файла /etc/shadow (n-раз фейспалм, мат высотой с бурдж-халифа)

Ну... в мане crypt на арче с glibc:
    Upon successful completion, crypt, crypt_r, crypt_rn, and crypt_ra return a pointer to a string which encodes both the hashed passphrase, and the settings that were used to encode it. This string is directly usable as setting in other calls to crypt, crypt_r, crypt_rn, and crypt_ra, and as prefix in calls to crypt_gensalt, crypt_gensalt_rn, and crypt_gensalt_ra. It will be entirely printable ASCII, and will not contain whitespace or the characters ‘:’, ‘;’, ‘*’, ‘!’, or ‘\’.

    Upon error, crypt_r, crypt_rn, and crypt_ra write an invalid hash to the output field of their data argument, and crypt writes an invalid hash to its static storage area. This string will be shorter than 13 characters, will begin with a ‘*’, and will not compare equal to setting.

Т.е технически они имели право возвращать звездочку.

С другой стороны man posix crypt утверждает что надо возвращать NULL
RETURN VALUE
       Upon  successful  completion, crypt() shall return a pointer to the en‐
       coded string. The first two bytes of the returned value shall be  those
       of the salt argument. Otherwise, it shall return a null pointer and set
       errno to indicate the error.


Ответить | Правка | Наверх | Cообщить модератору

28. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (36), 05-Ноя-26, 23:04 
if (!p || q != testbuf || memcmp(testbuf, testhash, sizeof testhash))
        return "*";

эта хня у них еще и в crypt_sha256.c, crypt_md5.c, crypt_blowfish.c

/*
* public domain sha512 crypt implementation
*
* original sha crypt design: http://people.redhat.com/drepper/SHA-crypt.txt
* in this implementation at least 32bit int is assumed,
* key length is limited, the $6$ prefix is mandatory, '\n' and ':' is rejected
* in the salt and rounds= setting must contain a valid iteration count,
* on error "*" is returned.
*/

Говрю же, альтернативно-одаренные.

> Т.е технически они имели право возвращать звездочку.

This string will be shorter than 13 characters, will begin with a ‘*’

строки то нет, строка судя по формальному описанию должна быть *0 как минимальная хеш инвалид строка. Потому-что в самом правильном хеше не должно быть * "and will not contain whitespace or the characters ‘:’, ‘;’, ‘*’, ‘!’, or ‘\’.".

* - префикс строки которую нужно вернуть.

Ответить | Правка | Наверх | Cообщить модератору

30. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (36), 05-Ноя-26, 23:10 
Тут по ссылке //people.redhat.com/drepper/SHA-crypt.txt
все как должно быть.

static char *
sha512_crypt_r (const char *key, const char *salt, char *buffer, int buflen)
{
........

if (buflen <= 0)
    {
      errno = ERANGE;
      buffer = NULL;
    }
  else
    *cp = '\0';        /* Terminate the string.  */

Ответить | Правка | Наверх | Cообщить модератору

23. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (36), 05-Ноя-26, 22:53 
//git.musl-libc.org/cgit/musl/tree/src/crypt/crypt_sha512.c

char *__crypt_sha512(const char *key, const char *setting, char *output)
{
    static const char testkey[] = "Xy01@#\x01\x02\x80\x7f\xff\r\n\x81\t !";
    static const char testsetting[] = "$6$rounds=1234$abc0123456789$";
    static const char testhash[] = "$6$rounds=1234$abc0123456789$BCpt8zLrc/RcyuXmCDOE1ALqMXB2MH6n1g891HhFj8.w7LxGv.FTkqq6Vxc/km3Y0jE0j24jY5PIv/oOu6reg1";
    char testbuf[128];
    char *p, *q;

    p = sha512crypt(key, setting, output);
    /* self test and stack cleanup */
    q = sha512crypt(testkey, testsetting, testbuf);
    if (!p || q != testbuf || memcmp(testbuf, testhash, sizeof testhash))
        return "*";
    return p;
}

Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

25. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Норм (?), 05-Ноя-26, 22:58 
Каждый день проверяю не первое ли Апреля. А до конца года еще два месяца.
Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

27. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (27), 05-Ноя-26, 23:03 
Ну по логу то видно кто добавил, а вот додумался он сам или нет - вопрос.

commit b9bb8f67bbac9bab5314fb00974ad469476e936e
Author: Rich Felker <dalias@aerifal.cx>
Date:   Fri Sep 7 00:48:25 2012 -0400

    cleanup src/linux and src/misc trees, etc.
    
    previously, it was pretty much random which one of these trees a given
    function appeared in. they have now been organized into:
    
    src/linux: non-POSIX linux syscalls (possibly shard with other nixen)
    src/legacy: various obsolete/legacy functions, mostly wrappers
    src/misc: still mostly uncategorized; some misc POSIX, some nonstd
    src/crypt: crypt hash functions
    
    further cleanup will be done later.

Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

32. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (36), 05-Ноя-26, 23:16 
расцениваю как явный бэкдор!!! и никакое не первое апреля и случайное совпадение.
Ответить | Правка | Наверх | Cообщить модератору

33. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (33), 05-Ноя-26, 23:20 
> функция возвращающая хеш, либо ошибку

Возвращает ошибку? В Си? И давно там тип данных для ошибки завеззли? Функция-то, кстати, права, действительно возвращает либо хэш, либо ерунду, которая на хэш даже с бодуна не похожа. Но обезьяний цирк под руководством Тео решил что и так подёт, нет времени проверять что там функция возвращает, это ж не OCaml какой-то, прости господи.

Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

38. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (36), 05-Ноя-26, 23:29 
> Возвращает ошибку? В Си?

Вы не знаете как в Си ошибки возвращают?

Вот пример как это делали вот тут //people.redhat.com/drepper/SHA-crypt.txt
именно на этот код ссылались разработчики мусли.

if (buflen <= 0)
    {
      errno = ERANGE;
      buffer = NULL;
    }
  else
    *cp = '\0';        /* Terminate the string.  */

  /* Clear the buffer for the intermediate result so that people
     attaching to processes or reading core dumps cannot get any
     information.  We do it in this way to clear correct_words[]
     inside the SHA512 implementation as well.  */
  sha512_init_ctx (&ctx);
  sha512_finish_ctx (&ctx, alt_result);
  memset (temp_result, '\0', sizeof (temp_result));
  memset (p_bytes, '\0', key_len);
  memset (s_bytes, '\0', salt_len);
  memset (&ctx, '\0', sizeof (ctx));
  memset (&alt_ctx, '\0', sizeof (alt_ctx));
  if (copied_key != NULL)
    memset (copied_key, '\0', key_len);
  if (copied_salt != NULL)
    memset (copied_salt, '\0', salt_len);

  return buffer;

> Функция-то, кстати, права, действительно возвращает либо хэш, либо ерунду, которая на хэш даже с бодуна не похожа.

Спеку открой по алгоритму хеширования. Обычно либо указатель на хеш возвращает, либо нулевой указатель - NULL.

Ответить | Правка | Наверх | Cообщить модератору

22. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (22), 05-Ноя-26, 22:52 
Классический musl, это примерно то, чего мы ожидаем от т.н. security-focused дистрибутивов на musl.
Ответить | Правка | Наверх | Cообщить модератору

31. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (36), 05-Ноя-26, 23:14 
это скорее классический бэкдор, судя по тому к чему он приводит, а вопросов много, от спеки до имплементации.
Ответить | Правка | Наверх | Cообщить модератору

35. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (33), 05-Ноя-26, 23:21 
Проблема в OpenSSH, уже разобрались. Но хейтить это мешать не должно, факт.
Ответить | Правка | К родителю #22 | Наверх | Cообщить модератору

43. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (22), 05-Ноя-26, 23:46 
Ну там в тот раз ACE в printf было, уровень уже задан.
Ответить | Правка | Наверх | Cообщить модератору

37. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (37), 05-Ноя-26, 23:24 
Это не звёздочка, это снежинка! Ну а в целом надо сразу делать PasswordAuthentication no в не зависимости от.
Ответить | Правка | Наверх | Cообщить модератору

39. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от Аноним (36), 05-Ноя-26, 23:31 
а че не новомодным словом токен?
Ответить | Правка | Наверх | Cообщить модератору

42. "SSHole - уязвимость, позволяющая подключиться по SSH без пар..."  +/–
Сообщение от penetrator (?), 05-Ноя-26, 23:44 
как там контейнероводы поживают? обновляться будут?
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




XSQUARE
Inferno Solutions
Hosting by Hoster.ru
Хоcтинг: