首先,很明显,如果 SSH 客户端存在错误,它可能允许服务器在那里执行代码。一个非常糟糕的错误甚至可能允许中间人利用客户端。攻击面的其余部分包括 SSH 发送从服务器接收到的数据的位置。
在您的情况下,通过 SSH 连接接收到的文本将发送到终端。终端解析转义序列——这就是它们显示颜色、移动光标等的方式。转义序列解析器中可能存在错误。此外,一些转义序列可能会请求超出影响显示的内容,例如更改终端标题、调整窗口大小或注入输入数据(例如查询光标位置或窗口标题的命令)。现代终端禁用真正危险的命令(导致注入输入的命令,可以是通过另一个转义序列设置的任意文本)。有关此主题的更多信息,请参阅“cat-ing”文件是否存在潜在的安全风险?,我怎样才能保护自己免受这种剪贴板滥用?, 和如何避免终端中的转义序列攻击?. 解决方案是验证您的终端是否允许危险序列。为了增加安全性,不要打开运行 shell 的终端,而是直接在终端中ssh运行ssh,并禁用它可能具有的任何键盘处理(EscapeChar none在 OpenSSH 客户端配置中);这样,即使恶意服务器设法注入输入,也不会有在您的机器上作为 shell 命令执行的风险。
SSH 还可以转发网络连接,让服务器可以到达终端之外的客户端。这可以绕过防火墙限制。两种常见的转发网络连接都有其自身的风险。X11 转发使服务器可以访问您的本地 X 服务器;这几乎等同于授予对服务器的 shell 访问权限,因为它允许在其他应用程序中注入输入(对于宏记录器和基于窗口管理器的输入重新映射等有用的功能,但缺乏适当的防火墙)。SSH 代理转发允许服务器使用您的私钥潜在地登录其他地方。因此,当您连接到不受信任的服务器时,请确保您没有激活任何转发。有选择地为已知服务器打开转发。
此外,如果您发送默认用户名或公钥报价,则会暴露隐私。