[Cryptography] SSH vulnerability when using passwords

Howard Chu hyc at symas.com
Fri Jan 9 07:36:01 EST 2015


Jumping in here...

> On Tue, Jan 06, 2015 at 03:42:05PM -0800, John Gilmore wrote:
>> But neither that nor the ssh wikipedia page mention an SSH
>> vulnerability that lets an attacker guess the letters of a remote
>> login password used under SSH.  I remember this attack being mentioned
>> years ago, perhaps in a crypto conference rump session?
>>
>> The attack works when you don't use keys or shared secrets -- just the
>> usual login/password processing standard for the remote end's
>> operating system.  [...]
>>
>> The problem is that the ssh protocol sends each letter of the password
>> as an entire packet of encrypted stuff -- but there are only a small
>> number of possible letters that might have been typed.  So the entropy
>> in each of those early ssh packets is very low.  [...]
>
> When SSH itself is being used to login with a password, then this is not
> so (in all the SSHv2 userauth cases a whole password is sent in one go,
> not one character at a time, interactively).
>
> But when one runs, say, "sudo" or some other application that turns off
> tty echo and reads a password from the tty, then the other end of the
> tty (whether it's SSH or something else) generally doesn't know this and
> feeds characters as they are typed.  If an attacker knows that the user
> is doing this then they can glean some information from timing of
> packets.

This is all pretty old hat. It was a common attack against S/Key too, 
back in the day. http://www.cultdeadcow.com/cDc_files/cDc-0327.txt But 
it was also easy to mitigate, using Telnet LINEMODE.
https://tools.ietf.org/html/rfc1184



> Propagating echo on/off (and cooked/raw) mode backwards from the tty all
> the way to the first client is the correct answer, IMO.  Failing that,
> mosh-style heuristics / output prediction should help the client detect
> that the tty is in echo off (and cooked or otherwise line-oriented)
> mode, so that the client nearest the real TTY (terminal emulator,
> really) can read a whole line before sending anything.
>
> I ought to know if it's possible for pty masters to tell what mode the
> other side of the pty is in, but all I can recall (and a brief search)
> is that the master doesn't get messages about such changes, though it
> can poll the pts.  One would think that TIOCPKT mode would have
> supported this, but evidently not...  (caveat emptor: brief reply,
> little research).

The Linux kernel originally supported this all no problem, by virtue of 
the EXTPROC tty setting, which it inherited from BSD's tty driver. 
Somewhere along the line some numbskull deleted EXTPROC support from the 
Linux tty driver. I added it back a few years ago.
https://lkml.org/lkml/2010/6/11/132

Also updated the telnetd source to reenable LINEMODE on Linux
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=585527

I added LINEMODE/EXTPROC support to OpenSSH a few years back too, but 
the OpenSSH developers were uninterested in merging it.
https://github.com/hyc/OpenSSH-LINEMODE

These days, with even CLI-based systems tending to use 
CBREAK/character-at-a-time input even for line-oriented input, more work 
needs to be done. E.g., for Bash's TAB/command-completion, which uses 
libreadline.
http://lists.gnu.org/archive/html/bug-bash/2010-06/msg00059.html

I also have a patch for tcsh lying around somewhere. The OpenSSH guys 
wanted to see BSD libedit supported instead of GNU libreadline; I got 
part way into that but never finished. Too much of an uphill battle 
trying to convince ignorant developers of why it's an important feature 
to support.

FWIW, bash works fine with the last OpenSSH revision I patched.

-- 
   -- Howard Chu
   CTO, Symas Corp.           http://www.symas.com
   Director, Highland Sun     http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP  http://www.openldap.org/project/


More information about the cryptography mailing list