* RFC: how to document musl-crypt failure ?
@ 2026-11-09 8:59 Walter Harms
2026-11-09 10:10 ` Alejandro Colomar
0 siblings, 1 reply; 6+ messages in thread
From: Walter Harms @ 2026-11-09 8:59 UTC (permalink / raw)
To: linux-man@vger.kernel.org
Hello list,
in case someone missed it: musl crypt() had an documented but unexpected behavier that caused
a lot of trouble. See: https://news.ycombinator.com/item?id=50377221 SSHHole.com CVE-2026-123158
Normaly i would step over it but in this special case ... it would like to start a discussion if we should mention
that in a note to crypt(). Perhaps recommending an additional check for '*' ? I am not sure but this is a very special case ...
CU
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: RFC: how to document musl-crypt failure ?
2026-11-09 8:59 RFC: how to document musl-crypt failure ? Walter Harms
@ 2026-11-09 10:10 ` Alejandro Colomar
2026-11-09 10:23 ` Andreas Schwab
2026-11-09 13:56 ` [musl] " Rich Felker
0 siblings, 2 replies; 6+ messages in thread
From: Alejandro Colomar @ 2026-11-09 10:10 UTC (permalink / raw)
To: Walter Harms
Cc: linux-man@vger.kernel.org, Rich Felker, libc-alpha, musl,
~hallyn/shadow
[-- Attachment #1: Type: text/plain, Size: 1178 bytes --]
Hi Walter,
> Date: 2026-11-09 08:59:19+0000
> From: Walter Harms <wharms@bfs.de>
>
> Hello list,
> in case someone missed it: musl crypt() had an documented but
> unexpected behavier that caused a lot of trouble. See:
> <https://news.ycombinator.com/item?id=50377221> SSHHole.com CVE-2026-123158
Indeed, I also wondered if we should change something in the
documentation after it happened. Unfortunately, the bug has been
treated with some secrecy in the first days (reasonable), so I couldn't
really understand what went wrong.
I've CCed Rich and also musl and glibc, since they probably want to
comment. I've also CCd shadow-utils.
> Normaly i would step over it but in this special case ... it would
> like to start a discussion if we should mention that in a note to
> crypt().
Thanks!
> Perhaps recommending an additional check for '*' ? I am not sure but
> this is a very special case ...
Rich, now that some time has passed and I guess everyone has a patched
SSH, would you mind clarifying what happened, and what should be
documented about it?
Have a lovely day!
Alex
> CU
--
<https://www.alejandro-colomar.es>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: RFC: how to document musl-crypt failure ?
2026-11-09 10:10 ` Alejandro Colomar
@ 2026-11-09 10:23 ` Andreas Schwab
2026-11-09 11:24 ` Sam James
2026-11-09 13:56 ` [musl] " Rich Felker
1 sibling, 1 reply; 6+ messages in thread
From: Andreas Schwab @ 2026-11-09 10:23 UTC (permalink / raw)
To: Alejandro Colomar
Cc: Walter Harms, linux-man@vger.kernel.org, Rich Felker, libc-alpha,
musl, ~hallyn/shadow
On Nov 09 2026, Alejandro Colomar wrote:
> I've CCed Rich and also musl and glibc, since they probably want to
> comment. I've also CCd shadow-utils.
libcrypt is no longer part of glibc, it is now provided by libxcrypt.
--
Andreas Schwab, SUSE Labs, schwab@suse.de
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: RFC: how to document musl-crypt failure ?
2026-11-09 10:23 ` Andreas Schwab
@ 2026-11-09 11:24 ` Sam James
0 siblings, 0 replies; 6+ messages in thread
From: Sam James @ 2026-11-09 11:24 UTC (permalink / raw)
To: Andreas Schwab
Cc: Alejandro Colomar, Walter Harms, linux-man@vger.kernel.org,
Rich Felker, libc-alpha, musl, ~hallyn/shadow
[-- Attachment #1: Type: text/plain, Size: 781 bytes --]
Andreas Schwab <schwab@suse.de> writes:
> On Nov 09 2026, Alejandro Colomar wrote:
>
>> I've CCed Rich and also musl and glibc, since they probably want to
>> comment. I've also CCd shadow-utils.
>
> libcrypt is no longer part of glibc, it is now provided by libxcrypt.
Indeed. But while we're here..
For libxcypt, it's determined by the configure option:
--disable-error-tokens. By default, error tokens are enabled.
I've switched Gentoo to use --disable-*. Fedora already did many years
ago so package failures should be smoked out by now:
* https://src.fedoraproject.org/rpms/libxcrypt/c/853ed305cd53c67bb2827dce78b889c8d187e1e0?branch=rawhide
* https://bugzilla.redhat.com/show_bug.cgi?id=1611784
Debian uses the libxcrypt default. I didn't check other distros yet.
sam
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 418 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [musl] Re: RFC: how to document musl-crypt failure ?
2026-11-09 10:10 ` Alejandro Colomar
2026-11-09 10:23 ` Andreas Schwab
@ 2026-11-09 13:56 ` Rich Felker
2026-11-09 15:50 ` Alejandro Colomar
1 sibling, 1 reply; 6+ messages in thread
From: Rich Felker @ 2026-11-09 13:56 UTC (permalink / raw)
To: Alejandro Colomar
Cc: Walter Harms, linux-man@vger.kernel.org, libc-alpha, musl,
~hallyn/shadow
On Mon, Nov 09, 2026 at 11:10:56AM +0100, Alejandro Colomar wrote:
> Hi Walter,
>
> > Date: 2026-11-09 08:59:19+0000
> > From: Walter Harms <wharms@bfs.de>
> >
> > Hello list,
> > in case someone missed it: musl crypt() had an documented but
> > unexpected behavier that caused a lot of trouble. See:
> > <https://news.ycombinator.com/item?id=50377221> SSHHole.com CVE-2026-123158
>
> Indeed, I also wondered if we should change something in the
> documentation after it happened. Unfortunately, the bug has been
> treated with some secrecy in the first days (reasonable), so I couldn't
> really understand what went wrong.
>
> I've CCed Rich and also musl and glibc, since they probably want to
> comment. I've also CCd shadow-utils.
>
> > Normaly i would step over it but in this special case ... it would
> > like to start a discussion if we should mention that in a note to
> > crypt().
>
> Thanks!
>
> > Perhaps recommending an additional check for '*' ? I am not sure but
> > this is a very special case ...
>
> Rich, now that some time has passed and I guess everyone has a patched
> SSH, would you mind clarifying what happened, and what should be
> documented about it?
Have you seen my full analysis on the musl list?
https://www.openwall.com/lists/musl/2026/11/06/7
The correct usage of crypt for password authentication is asserting
that, if P is the candidate password and H is the account password
"hash", strcmp(crypt(P,H),H)==0. Allowing the user in without checking
that is potentially a password-authentication-bypass bug.
I put "hash" in quotation marks because it might not be an actual
hash; it can be a string chosen by the tooling or a user manually
editing the passwd/shadow files to produce something unmatchable. So
an application should not be making assumptions about its form.
Through at least 1.2.6, musl uses failure tokens "*" and "x" for cases
where the password should never match. These include unsupported
password length (for hash types that need to restrict it) and
unsupported or invalid setting/salt strings.
It isn't decided yet, but 1.2.7 will probably switch to using failure
tokens matching libxcrypt's ("*0" and "*1") which are slightly safer
against some forms of misuse by the caller. Future versions may drop
failure tokens entirely and switch to treating these conditions as
errors (returning null).
I would not document future behavior, and would document existing
behavior only as an implementation detail, not an application-facing
contract. The only contract with the application is that crypt(P,H)
will never return a string identical to H except on valid password (in
the absence of theoretical hash collisions) regardless of the validity
of P and H.
Rich
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [musl] Re: RFC: how to document musl-crypt failure ?
2026-11-09 13:56 ` [musl] " Rich Felker
@ 2026-11-09 15:50 ` Alejandro Colomar
0 siblings, 0 replies; 6+ messages in thread
From: Alejandro Colomar @ 2026-11-09 15:50 UTC (permalink / raw)
To: Rich Felker
Cc: Walter Harms, linux-man@vger.kernel.org, libc-alpha, musl,
~hallyn/shadow
[-- Attachment #1: Type: text/plain, Size: 3458 bytes --]
Hi Rich,
> Date: 2026-11-09 08:56:50-0500
> From: Rich Felker <dalias@libc.org>
>
> On Mon, Nov 09, 2026 at 11:10:56AM +0100, Alejandro Colomar wrote:
> > Hi Walter,
> >
> > > Date: 2026-11-09 08:59:19+0000
> > > From: Walter Harms <wharms@bfs.de>
> > >
> > > Hello list,
> > > in case someone missed it: musl crypt() had an documented but
> > > unexpected behavier that caused a lot of trouble. See:
> > > <https://news.ycombinator.com/item?id=50377221> SSHHole.com CVE-2026-123158
> >
> > Indeed, I also wondered if we should change something in the
> > documentation after it happened. Unfortunately, the bug has been
> > treated with some secrecy in the first days (reasonable), so I couldn't
> > really understand what went wrong.
> >
> > I've CCed Rich and also musl and glibc, since they probably want to
> > comment. I've also CCd shadow-utils.
> >
> > > Normaly i would step over it but in this special case ... it would
> > > like to start a discussion if we should mention that in a note to
> > > crypt().
> >
> > Thanks!
> >
> > > Perhaps recommending an additional check for '*' ? I am not sure but
> > > this is a very special case ...
> >
> > Rich, now that some time has passed and I guess everyone has a patched
> > SSH, would you mind clarifying what happened, and what should be
> > documented about it?
>
> Have you seen my full analysis on the musl list?
>
> https://www.openwall.com/lists/musl/2026/11/06/7
Not before, but thanks! Now I have read it.
I agree with the suggestion of using null+errno in the future, BTW.
FWIW, shadow-utils already handles well a null pointer.
> The correct usage of crypt for password authentication is asserting
> that, if P is the candidate password and H is the account password
> "hash", strcmp(crypt(P,H),H)==0. Allowing the user in without checking
> that is potentially a password-authentication-bypass bug.
>
> I put "hash" in quotation marks because it might not be an actual
> hash; it can be a string chosen by the tooling or a user manually
> editing the passwd/shadow files to produce something unmatchable. So
> an application should not be making assumptions about its form.
>
> Through at least 1.2.6, musl uses failure tokens "*" and "x" for cases
> where the password should never match. These include unsupported
> password length (for hash types that need to restrict it) and
> unsupported or invalid setting/salt strings.
>
> It isn't decided yet, but 1.2.7 will probably switch to using failure
> tokens matching libxcrypt's ("*0" and "*1") which are slightly safer
> against some forms of misuse by the caller.
Ok. Please CC linux-man@ when that happens.
> Future versions may drop
> failure tokens entirely and switch to treating these conditions as
> errors (returning null).
+1. Again, please CC linux-man@ when that happens.
> I would not document future behavior, and would document existing
> behavior only as an implementation detail, not an application-facing
> contract. The only contract with the application is that crypt(P,H)
> will never return a string identical to H except on valid password (in
> the absence of theoretical hash collisions) regardless of the validity
> of P and H.
Okay. Thank you very much! I'll work on a patch, and CC you when it's
ready.
Have a lovely day!
Alex
>
> Rich
>
--
<https://www.alejandro-colomar.es>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-11-09 15:51 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-09 8:59 RFC: how to document musl-crypt failure ? Walter Harms
2026-11-09 10:10 ` Alejandro Colomar
2026-11-09 10:23 ` Andreas Schwab
2026-11-09 11:24 ` Sam James
2026-11-09 13:56 ` [musl] " Rich Felker
2026-11-09 15:50 ` Alejandro Colomar
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox