Page MenuHomeFreeBSD

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

Authored by jlduran on Thu, Jul 16, 3:55 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Aug 11, 3:43 AM
Unknown Object (File)
Mon, Aug 10, 2:22 PM
Unknown Object (File)
Mon, Aug 10, 3:40 AM
Unknown Object (File)
Sat, Aug 8, 7:09 AM
Unknown Object (File)
Fri, Aug 7, 10:38 AM
Unknown Object (File)
Wed, Aug 5, 5:39 AM
Unknown Object (File)
Mon, Aug 3, 1:37 AM
Unknown Object (File)
Wed, Jul 29, 1:46 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.