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
F176451244: D58284.diff
Sun, Oct 18, 11:27 PM
Unknown Object (File)
Sat, Oct 17, 12:35 AM
Unknown Object (File)
Fri, Oct 16, 10:22 AM
Unknown Object (File)
Sun, Oct 11, 2:09 AM
Unknown Object (File)
Thu, Oct 8, 4:38 AM
Unknown Object (File)
Tue, Oct 6, 12:43 AM
Unknown Object (File)
Fri, Oct 2, 10:28 AM
Unknown Object (File)
Thu, Oct 1, 1:49 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.