Linux Manual Pages development
 help / color / mirror / Atom feed
* 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