[openssh-commits] [openssh] 49/87: upstream: don't let SSH_MSG_PONG replies pile up if the peer
git+noreply at mindrot.org
git+noreply at mindrot.org
Fri Oct 30 20:21:26 AEDT 2026
This is an automated email from the git hooks/post-receive script.
djm pushed a commit to branch master
in repository openssh.
commit 2c34666e084654943319a687227caca35536daa2
Author: djm at openbsd.org <djm at openbsd.org>
AuthorDate: Fri Oct 30 05:21:48 2026 +0000
upstream: don't let SSH_MSG_PONG replies pile up if the peer
isn't sending ACKs and there is a significant amount of data in data in out
transport obuf. Avoids an obscure post-auth soft memory DoS
Anthropic ANT-2026-Z4SZFUYY
OpenBSD-Commit-ID: 55eb6b4d171008321f5c16cf1b1fdfeeadc7cff8
---
PROTOCOL | 8 +++++---
packet.c | 7 ++++++-
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/PROTOCOL b/PROTOCOL
index 06081f82a..1ca2dfd83 100644
--- a/PROTOCOL
+++ b/PROTOCOL
@@ -110,8 +110,10 @@ ping:
byte SSH_MSG_PONG
string data
-Replies are sent in order. They are sent immediately except when rekeying
-is in progress, in which case they are queued until rekeying completes.
+Replies are sent in order. No reply is sent to a ping that is received
+before authentication has completed, while rekeying is in progress or
+while the peer has not yet read a significant amount of previously sent
+data.
The server advertises support for these messages using the
SSH2_MSG_EXT_INFO mechanism (RFC8308), with the following message:
@@ -718,4 +720,4 @@ master instance and later clients.
OpenSSH extends the usual agent protocol. These changes are documented
in the PROTOCOL.agent file.
-$OpenBSD: PROTOCOL,v 1.60 2026/02/09 22:09:48 dtucker Exp $
+$OpenBSD: PROTOCOL,v 1.61 2026/10/30 05:21:48 djm Exp $
diff --git a/packet.c b/packet.c
index 462df2847..bf556c680 100644
--- a/packet.c
+++ b/packet.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: packet.c,v 1.347 2026/10/30 04:36:21 djm Exp $ */
+/* $OpenBSD: packet.c,v 1.348 2026/10/30 05:21:48 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo at cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo at cs.hut.fi>, Espoo, Finland
@@ -1947,6 +1947,11 @@ ssh_packet_read_poll_seqnr(struct ssh *ssh, u_char *typep, uint32_t *seqnr_p)
DBG(debug("Won't reply to PING during KEX"));
break;
}
+ /* Don't let replies pile up if the peer isn't reading */
+ if (!ssh_packet_not_very_much_data_to_write(ssh)) {
+ DBG(debug("Won't reply to PING with backlog"));
+ break;
+ }
if ((r = sshpkt_start(ssh, SSH2_MSG_PONG)) != 0 ||
(r = sshpkt_put_string(ssh, d, len)) != 0 ||
(r = sshpkt_send(ssh)) != 0)
--
To stop receiving notification emails like this one, please contact
djm at mindrot.org.
More information about the openssh-commits
mailing list