| 1.1, aSSHole (?), 21:53, 05/11/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– | |
>после выявления данной уязвимости, вместо хэша пароля был выставлен знак "!". Но его наличие блокировало вход по SSH-ключам, поэтому с 2022 года символ для блокировки входа по паролю был заменён на "*".
Непонятно, то есть уязвимость была выявлена в 22 году или как?
| | |
| |
| 2.3, Аноним (3), 22:01, 05/11/2026 [^] [^^] [^^^] [ответить]
| +2 +/– |
Скорее пытались интуитивно исправить, но забыли что исправляли.
| | |
| |
| 3.47, Аноним (47), 00:07, 06/11/2026 [^] [^^] [^^^] [ответить]
| +/– |
так он в спеке изначально :), а в 2022 тупо чуть не спалились совсем.
| | |
|
|
| 1.2, Аноним (2), 21:57, 05/11/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Необходимо вообще в принципе по умолчанию убрать вход по паролю: обменялись ключами и все хорошо.
| | |
| 1.4, Аноним (4), 22:06, 05/11/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +11 +/– |
> в musl функция crypt() для хэшей SHA-512 возвращает символ "*", если
> длина переданного пароля превышает 256 байт (ограничение введено в 2012
> году для защиты от DoS-атак, так как при передаче больших значений
> возникает большая нагрузка на CPU)
Хочу посмотреть на гения, который это придумал.
Вместо того чтобы вернуть нормальную ошибку или хотя бы NULL, они возвращают строковый символ!
| | |
| |
| 2.6, Аноним (6), 22:09, 05/11/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
Видимо эти гении учились вместе с теми, что вместо хеша пароля в файле пишут ! или *
| | |
| 2.18, Аноним (18), 22:48, 05/11/2026 [^] [^^] [^^^] [ответить]
| +7 +/– | |
> Вместо того чтобы вернуть нормальную ошибку или хотя бы NULL, они возвращают строковый символ
Чувак, ты не поверишь! crypt() возвращал NULL в качестве ошибки еще с 90х годов. Но сишочные бракоделы из musl решили больше не возвращать нуль, потому что... другие сишочные бракоделы традиционно не проверяли возвращаемое значение на нуль и получали сегфолт в вызове strcmp().
https://git.musl-libc.org/cgit/musl/commit/?id=b3c4cc121f70faea45389fe7ddc1127
Одни халатные браколелы подстелили соломку другим халатным бракоделам, но что-то пошло не так. 😳
| | |
| 2.29, Аноним (29), 23:08, 05/11/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
именно эти строки и привлекли больше всего. это просто гениально - заглушка в проде
| | |
|
| 1.5, Аноним (6), 22:09, 05/11/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– | |
>> Однако в musl функция crypt() для хэшей SHA-512 возвращает символ "*", если длина переданного пароля превышает 256 байт
Я так понимаю это не считается багом и править это не будут? Ну удачи им.
| | |
| |
| 2.10, Аноном (-), 22:22, 05/11/2026 [^] [^^] [^^^] [ответить]
| –6 +/– |
Ну... конечно не проверять пароль будет быстрее, но думаю тут проблема в убогом недоязычке в котором нельзя нормально обработать ошибку.
Примерно как кидать -1 из функции которая должна возвращать беззнаковое.
| | |
| 2.12, Аноним (11), 22:30, 05/11/2026 [^] [^^] [^^^] [ответить]
| +/– | |
>Т.е. опять сишники
Причем тут то сишники? Логическая проблема добавлена практически осознанно. Если бы шмазл переписывали, как водится, на ржавого, то эту проблему могли бы не добавить только, опять же, по ошибке. Как известно две подрят ошибки дают корректную работу ;)
| | |
| |
| |
| 4.52, Аноним (45), 00:34, 06/11/2026 [^] [^^] [^^^] [ответить]
| +/– |
тут нужны нормальные программисты, одно радует иишка заменит ненужных
| | |
|
| 3.36, Аноним (47), 23:21, 05/11/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Логическая проблема добавлена практически осознанно
это реальный бэкдор на уровне спеки!!!
| | |
|
| 2.17, Аноним (45), 22:48, 05/11/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
там нарушен контракт функции crypt, дважды, когда через соль стали передавать алгоритм хеширования и когда стали проверять размер, все это без (изначально предусмотренной) возможности вернуть ошибку, классический лавров джпг
| | |
| |
| 3.24, Норм (?), 22:55, 05/11/2026 [^] [^^] [^^^] [ответить]
| –1 +/– | |
Какого у функции хеширования вообще ограничение размер данных?
Это как бы приложение должно решать какие у него ограничения на пароль.
| | |
| |
| |
| 5.49, нах. (?), 00:13, 06/11/2026 [^] [^^] [^^^] [ответить]
| +/– | |
Которая тоже должна быть в приложении, читающем данные извне, а не где попало.
ну в общем все что надо было знать про musl мы уже и так знаем.
| | |
| |
| 6.55, Аноним (55), 00:57, 06/11/2026 [^] [^^] [^^^] [ответить]
| +/– |
Поэтому должно быть на уровне контракта понятно кто обосрaлся - реализация или вызываемая сторона. Например через систему типов. Погодитика, прямо как в расте
| | |
|
| 5.68, Ананимер (?), 03:04, 06/11/2026 [^] [^^] [^^^] [ответить]
| +/– |
systemd-синдром, в свою херабору напихивать чужие функции, для которых есть во-первых fail2ban, а во вторых это проще было бы в ssh длину пароля проверять.
А crypt должен считать и не выделываться, мало ли для каких ещё задач апликуха может его вызвать.
| | |
|
|
| 3.65, Варение (?), 01:58, 06/11/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
> все это без (изначально предусмотренной) возможности вернуть ошибку
Ну почему, еще в man по 4.3BSD английским по белому написано "returns a pointer to the encrypted value on success and NULL on failure", а в POSIX.1-2008 так еще и errno упоминают: "Upon successful completion, crypt() shall return a pointer to the encoded 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."
| | |
|
|
| |
| 2.15, Аноном (?), 22:46, 05/11/2026 [^] [^^] [^^^] [ответить]
| +/– |
Неа.
В расте точно так же возвращали бы *.
Почему? Потому что идъйоты (с)
Хотя в расте можно было бы в Result<String, Error> возвращать "password is longer than 256 FU"
| | |
| |
| 3.34, Аноним (47), 23:20, 05/11/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
> Почему? Потому что идъйоты (с)
потому-что так задумано, в спеке так описано - это наичистейший бэкдор!!! Стоит вообще задуматься!!!
| | |
| |
| 4.40, Халявщик не корпораст (?), 23:35, 05/11/2026 [^] [^^] [^^^] [ответить]
| +/– |
- Стоит вообще задуматься!!!
Йищё бы. Мир не без добрых людей и самые добрые из них - корпорасты, сама щедрость просто. :) А про некоторых доброжелателей не из тех ваще писать не хочется, особенно в свете нынешних международных сношений...
| | |
| |
| 5.41, Аноним (47), 23:44, 05/11/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Йищё бы.
Так и запишем. Опенсорс (далее опсос) считать по определению пробэкдоренным кодом! А всяк кто пишет такой код - тот "кто сидит в кр3мле"!
| | |
|
|
|
| 2.19, Аноним (19), 22:50, 05/11/2026 [^] [^^] [^^^] [ответить]
| +3 +/– |
В каноническом расте функция бы возвращала бы 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.
| | |
| |
| |
| 4.64, Аноним (18), 01:53, 06/11/2026 [^] [^^] [^^^] [ответить]
| +/– |
>> И отличие от си, там не верят на "мамой клянуся, там ни нал!" разработчика и обязывают проверить что вернулось из функции перед работой с Option.
> И функции unwrap там не существует,
Ну так unwrap ты хотя бы явно пишешь "мамой клянусь". А если по-человечески обрабатываешь, то у тебя вместо unwrap нормальный match. То есть при любом раскладе лучше сишочного "и так сойдет".
> которая приведет к тому же крэшу что и strcmp на NULL?
Нет, не к "такому же", а к явному разворачиванию стека. А segfault при NULL в strcmp может произойти, а может и молча дать тебе очередной RCE/root.
| | |
|
|
|
| |
| |
| |
| 4.30, Аноним (47), 23:10, 05/11/2026 [^] [^^] [^^^] [ответить]
| +/– |
Тут по ссылке //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. */
| | |
|
|
| 2.23, Аноним (47), 22:53, 05/11/2026 [^] [^^] [^^^] [ответить]
| +/– | |
//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;
}
| | |
| 2.25, Норм (?), 22:58, 05/11/2026 [^] [^^] [^^^] [ответить]
| +/– |
Каждый день проверяю не первое ли Апреля. А до конца года еще два месяца.
| | |
| 2.27, Аноним (27), 23:03, 05/11/2026 [^] [^^] [^^^] [ответить]
| +/– | |
Ну по логу то видно кто добавил, а вот додумался он сам или нет - вопрос.
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.
| | |
| |
| 3.32, Аноним (47), 23:16, 05/11/2026 [^] [^^] [^^^] [ответить]
| +/– |
расцениваю как явный бэкдор!!! и никакое не первое апреля и случайное совпадение.
| | |
| 3.50, нах. (?), 00:16, 06/11/2026 [^] [^^] [^^^] [ответить]
| +/– | |
э... это точно тот комит?
Тогда, хотя я обычно категорически неодобряю носящих тут шапки и трусики из фольги, похоже таки на бэкдор в натуральную величину.
"cleanup", ога. (Где умный человек прячет лист?)
Ну про тыщи шоколадных глаз молча проглотившие такой "cleanup" уже и не будем.
| | |
| |
| 4.62, Аноним (47), 01:28, 06/11/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Date: Fri Sep 7 00:48:25 2012 -0400
пятницу, ночью, выражение "с какого бодуна" - ни к месту.
| | |
|
|
| 2.33, Аноним (33), 23:20, 05/11/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> функция возвращающая хеш, либо ошибку
Возвращает ошибку? В Си? И давно там тип данных для ошибки завеззли? Функция-то, кстати, права, действительно возвращает либо хэш, либо ерунду, которая на хэш даже с бодуна не похожа. Но обезьяний цирк под руководством Тео решил что и так подёт, нет времени проверять что там функция возвращает, это ж не OCaml какой-то, прости господи.
| | |
| |
| 3.38, Аноним (47), 23:29, 05/11/2026 [^] [^^] [^^^] [ответить] | +/– | Вы не знаете как в Си ошибки возвращают Вот пример как это делали вот тут peo... большой текст свёрнут, показать | | |
| 3.59, Аноним (-), 01:21, 06/11/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Возвращает ошибку? В Си? И давно там тип данных для ошибки завеззли?
В принципе можно и на си допустим return какой-нибудь struct делать. Не очень эстетично анализировать потом vs олдовые методы, но так можно было.
| | |
|
|
| 1.22, Аноним (22), 22:52, 05/11/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Классический musl, это примерно то, чего мы ожидаем от т.н. security-focused дистрибутивов на musl.
| | |
| |
| 2.31, Аноним (47), 23:14, 05/11/2026 [^] [^^] [^^^] [ответить]
| +/– |
это скорее классический бэкдор, судя по тому к чему он приводит, а вопросов много, от спеки до имплементации.
| | |
| 2.35, Аноним (33), 23:21, 05/11/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
Проблема в OpenSSH, уже разобрались. Но хейтить это мешать не должно, факт.
| | |
| 2.60, Аноним (-), 01:22, 06/11/2026 [^] [^^] [^^^] [ответить]
| +/– |
> Классический musl, это примерно то, чего мы ожидаем от т.н.
> security-focused дистрибутивов на musl.
И вот вы наконец получили security который заслужили :D :D :D
| | |
|
| 1.37, Аноним (37), 23:24, 05/11/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Это не звёздочка, это снежинка! Ну а в целом надо сразу делать PasswordAuthentication no в не зависимости от.
| | |
| 1.58, Аноним (-), 01:19, 06/11/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> Проблема затрагивает дистрибутивы Linux,
> использующие стандартную библиотеку musl, но не использующие PAM
> (Pluggable Authentication Modules), такие как OpenWRT, Alpine, Buildroot и Yocto.
Кажется security officer Alpine ака Ariadna сегодня покушает г-на...
| | |
| 1.61, жявамэн (ok), 01:24, 06/11/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Опять рутом можно заходить просто введя 300 буковок?
Это прям из 90-х баги
| | |
|