]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: When using a combination of a Yubikey+GnuPG+remote
authormestre@openbsd.org <mestre@openbsd.org>
Wed, 24 Jul 2019 08:57:00 +0000 (08:57 +0000)
committerDamien Miller <djm@mindrot.org>
Tue, 30 Jul 2019 05:06:27 +0000 (15:06 +1000)
forwarding the gpg-agent (and options ControlMaster+RemoteForward in
ssh_config(5)) then the codepath taken will call mux_client_request_session
-> mm_send_fd -> sendmsg(2). Since sendmsg(2) is not allowed in that codepath
then pledge(2) kills the process.

The solution is to add "sendfd" to pledge(2), which is not too bad considering
a little bit later we reduce pledge(2) to only "stdio proc tty" in that
codepath.

Problem reported and diff provided by Timothy Brown <tbrown at freeshell.org>

OK deraadt@

OpenBSD-Commit-ID: 7ce38b6542bbec00e441595d0a178e970a9472ac

clientloop.c

index 7f32871f807139c19fcf968843c09ca078a243fe..b5a1f70385ff1315c67b982092e159abdad6f030 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: clientloop.c,v 1.326 2019/06/28 13:35:04 deraadt Exp $ */
+/* $OpenBSD: clientloop.c,v 1.327 2019/07/24 08:57:00 mestre Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1251,7 +1251,7 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg,
        if (options.control_master &&
            !option_clear_or_none(options.control_path)) {
                debug("pledge: id");
-               if (pledge("stdio rpath wpath cpath unix inet dns recvfd proc exec id tty",
+               if (pledge("stdio rpath wpath cpath unix inet dns recvfd sendfd proc exec id tty",
                    NULL) == -1)
                        fatal("%s pledge(): %s", __func__, strerror(errno));