Skip to content

Limit the kex deferred packet queue length - #454

Merged
mkj merged 1 commit into
mainfrom
pr/reply-queue-limit
Jul 3, 2026
Merged

Limit the kex deferred packet queue length#454
mkj merged 1 commit into
mainfrom
pr/reply-queue-limit

Conversation

@mkj

@mkj mkj commented Jul 3, 2026

Copy link
Copy Markdown
Owner

During a key exchange, non-transport sent packets are enqueued since they are not allowed to be sent. The queue is theoretically unbounded, which could cause unbounded memory use.

In normal operation not many packets would be expected from a peer before a reply KEXINIT, but a coincidental flood of channel open requests from a client at the same instant as a rekey begins could cause numerous replies. Perhaps that could happen with hectic SOCKS forwarding, so the limit is set to MAX_CHANNELS.
Only reply packets would be enqueue, all of those are relatively small.

The rekey KEX can't be directly triggered by a malicious peer, it has to wait for a rekey KEXINIT to be sent by Dropbear (client or server), after 1GB of data or 8 hours. It can only occur post-auth, none of the allowed pre-auth packets can trigger an enqueued reply. Memory is used by the session dropbear process, so the OOM killer would usually sort it out.

During a key exchange, non-transport sent packets are enqueued since
they are not allowed to be sent. The queue is theoretically unbounded,
which could cause unbounded memory use.

In normal operation not many packets would be expected from a peer
before a reply KEXINIT, but a coincidental flood of channel open
requests from a client at the same instant as a rekey begins could cause
numerous replies. Perhaps that could happen with hectic SOCKS forwarding,
so the limit is set to MAX_CHANNELS.
Only reply packets would be enqueue, all of those are relatively small.

The rekey KEX can't be directly triggered by a malicious peer, it has to
wait for a rekey KEXINIT to be sent by Dropbear (client or server),
after 1GB of data or 8 hours. It can only occur post-auth, none of the
allowed pre-auth packets can trigger an enqueued reply.
Memory is used by the session dropbear process, so the OOM killer would
usually sort it out.
@mkj
mkj merged commit d35cf53 into main Jul 3, 2026
35 checks passed
@mkj
mkj deleted the pr/reply-queue-limit branch July 3, 2026 12:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant