ban user/hostnames with most shell metacharacters
authordjm <djm@openbsd.org>
Mon, 18 Dec 2023 14:47:44 +0000 (14:47 +0000)
committerdjm <djm@openbsd.org>
Mon, 18 Dec 2023 14:47:44 +0000 (14:47 +0000)
commitba05a7aae989020b8d05cc93cc6200109bba5a7b
treeaa3b12136de323b09bab936d313cfbb42e74712f
parent0d76a31f7445394c46dbe6548d1f7ac268237d97
ban user/hostnames with most shell metacharacters

This makes ssh(1) refuse user or host names provided on the
commandline that contain most shell metacharacters.

Some programs that invoke ssh(1) using untrusted data do not filter
metacharacters in arguments they supply. This could create
interactions with user-specified ProxyCommand and other directives
that allow shell injection attacks to occur.

It's a mistake to invoke ssh(1) with arbitrary untrusted arguments,
but getting this stuff right can be tricky, so this should prevent
most obvious ways of creating risky situations. It however is not
and cannot be perfect: ssh(1) has no practical way of interpreting
what shell quoting rules are in use and how they interact with the
user's specified ProxyCommand.

To allow configurations that use strange user or hostnames to
continue to work, this strictness is applied only to names coming
from the commandline. Names specified using User or Hostname
directives in ssh_config(5) are not affected.

feedback/ok millert@ markus@ dtucker@ deraadt@
usr.bin/ssh/ssh.c