From: Alejandro Colomar <alx+linux-man@kernel.org>
To: Rich Felker <dalias@libc.org>
Cc: Walter Harms <wharms@bfs.de>,
"linux-man@vger.kernel.org" <linux-man@vger.kernel.org>,
libc-alpha@sourceware.org, musl@lists.openwall.com,
~hallyn/shadow@lists.sr.ht
Subject: Re: [musl] Re: RFC: how to document musl-crypt failure ?
Date: Mon, 9 Nov 2026 16:50:58 +0100 [thread overview]
Message-ID: <avHqKtsxQQDkZX90@devuan> (raw)
In-Reply-To: <20261109131732.GM23438@brightrain.aerifal.cx>
[-- 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 --]
next prev parent reply other threads:[~2026-11-09 15:51 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
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 message]
2026-11-12 14:37 ` Alejandro Colomar
2026-11-12 14:45 ` Rich Felker
2026-11-12 15:01 ` Alejandro Colomar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=avHqKtsxQQDkZX90@devuan \
--to=alx+linux-man@kernel.org \
--cc=dalias@libc.org \
--cc=libc-alpha@sourceware.org \
--cc=linux-man@vger.kernel.org \
--cc=musl@lists.openwall.com \
--cc=wharms@bfs.de \
--cc=~hallyn/shadow@lists.sr.ht \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.