Page MenuHomeFreeBSD

openssh: blocklist: Add the other fatal exit probe
Needs ReviewPublic

Authored by jlduran on Jul 16 2026, 3:55 PM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Sep 3, 2:43 PM
Unknown Object (File)
Thu, Sep 3, 2:33 PM
Unknown Object (File)
Wed, Sep 2, 3:18 PM
Unknown Object (File)
Mon, Aug 31, 10:34 PM
Unknown Object (File)
Thu, Aug 20, 7:58 AM
Unknown Object (File)
Mon, Aug 17, 3:48 AM
Unknown Object (File)
Sun, Aug 16, 1:00 PM
Unknown Object (File)
Thu, Aug 13, 7:32 PM
Subscribers

Details

Summary

To replicate:

ssh nonexistent@server & sleep 0.5; kill $!

Reported by: Jana Steuernagel

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 74852
Build 71735: arc lint + arc unit

Event Timeline

Sure enough (https://reviews.freebsd.org/D58083?id=181447#inline-344443).
The patch for NetBSD would be:

diff
--- a/crypto/external/bsd/openssh/dist/sshd-session.c
+++ b/crypto/external/bsd/openssh/dist/sshd-session.c
@@ -1346,7 +1346,9 @@ cleanup_exit(int i)
                pfilter_notify(1);
                _exit(EXIT_AUTH_ATTEMPTED);
        }
-       if (i == 255 && monitor_invalid_user())
+       if (i == 255 && monitor_invalid_user()) {
+               pfilter_notify(1);
                _exit(EXIT_INVALID_USER);
+       }
        _exit(i);
 }

I think this effectively leaves us (FreeBSD) open to a username enumeration vulnerability, because we do not have a blocklist probe in grace_alarm_handler().
I have been exploring simpler options to try to make our BLOCKLIST_NOTIFY() signal-safe.