mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Andrew Lutomirski" <luto@myrealbox.com>
To: "Theodore Tso" <tytso@mit.edu>,
	"David Newall" <david@davidnewall.com>,
	"Andy Lutomirski" <luto@myrealbox.com>,
	"John Reiser" <jreiser@bitwagon.com>,
	"Matt Mackall" <mpm@selenic.com>,
	linux-kernel@vger.kernel.org, security@kernel.org
Subject: Re: /dev/urandom uses uninit bytes, leaks user data
Date: Wed, 19 Dec 2007 23:18:54 -0500	[thread overview]
Message-ID: <cb0375e10712192018l66671b34r1680077765e89fb0@mail.gmail.com> (raw)
In-Reply-To: <20071218034656.GR7070@thunk.org>

On Dec 17, 2007 10:46 PM, Theodore Tso <tytso@mit.edu> wrote:
> If you have a system with insufficent entropy inputs, you're in
> trouble, of course.  There are "catastrophic reseeds" that attempt to
> mitigrate some of worse attacks, but at the end of the day,
> /dev/random isn't magic.
>

I understand that there's no way that /dev/random can provide good
output if there's insufficient entropy.  But it still shouldn't leak
arbitrary bits of user data that were never meant to be put into the
pool at all.

(My hypothetical attack is a lot hypothetical than I thought at first.
 An attacker does not need to break into the kernel and steal the
state of the pool.  It may be as easy as this to trigger:

Step 1: Boot a system without a usable entropy source.
Step 2: add some (predictable) "entropy" from userspace which isn't a
multiple of 4, so up to three extra bytes get added.
Step 3: Read a few bytes of /dev/random and send them over the network.

An attacker can now try all possibilities of the three extra bytes and
guess them pretty quickly.  No compromise needed.  This is, IMHO, bad.
 (It's one thing for the "random" numbers to be weak.  It's another
thing entirely for them to reveal data that never belonged in the pool
in the first place.)

Actually, perhaps there should be a policy that we try never to reseed
the pool at all until there is enough entropy around to prevent
attacks like these.  (In theory the state of the pool might contain
2^(smallish number) bits of data interesting to the attacker even
without the uninitialized data issue.)  This would make the situation
even worse for low-entropy systems, though.

--Andy

  parent reply	other threads:[~2007-12-20  4:19 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-12-14 19:34 John Reiser
2007-12-14 20:13 ` Matt Mackall
2007-12-14 20:45   ` John Reiser
2007-12-14 23:23     ` Theodore Tso
2007-12-15  0:30       ` John Reiser
2007-12-15  4:32         ` Theodore Tso
2007-12-17 16:30           ` John Reiser
2007-12-17 17:36             ` Theodore Tso
2007-12-18  0:52               ` Andy Lutomirski
2007-12-18  3:05                 ` Theodore Tso
2007-12-18  3:13                   ` David Newall
2007-12-18  3:46                     ` Theodore Tso
2007-12-18  4:09                       ` David Newall
2007-12-18  4:23                         ` Theodore Tso
2007-12-19 22:43                           ` Bill Davidsen
2007-12-19 22:40                         ` Bill Davidsen
2007-12-20  4:18                       ` Andrew Lutomirski [this message]
2007-12-20 20:17                         ` Phillip Susi
2007-12-21 16:10                           ` Andrew Lutomirski
2007-12-22  1:14                             ` Theodore Tso
2007-12-26 18:30                             ` Phillip Susi
2007-12-20 20:36                         ` Theodore Tso
2007-12-27 10:44                           ` Pavel Machek
2007-12-18  5:12                 ` David Schwartz
2007-12-17 20:59             ` David Schwartz
2007-12-15  7:13         ` Herbert Xu
2007-12-15 16:30           ` Matt Mackall
2007-12-17 17:28           ` Signed divides vs shifts (Re: [Security] /dev/urandom uses uninit bytes, leaks user data) Linus Torvalds
2007-12-17 17:48             ` Al Viro
2007-12-17 17:55             ` Eric Dumazet
2007-12-17 18:05               ` Ray Lee
2007-12-17 18:10                 ` Eric Dumazet
2007-12-17 18:12                   ` Ray Lee
2007-12-17 18:23               ` Al Viro
2007-12-17 18:28               ` [Security] Signed divides vs shifts (Re: " Linus Torvalds
2007-12-17 19:08                 ` Al Viro
2007-12-15  7:20 /dev/urandom uses uninit bytes, leaks user data Matti Linnanvuori
2007-12-15  7:54 ` Valdis.Kletnieks
2007-12-15 22:44 linux

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cb0375e10712192018l66671b34r1680077765e89fb0@mail.gmail.com \
    --to=luto@myrealbox.com \
    --cc=david@davidnewall.com \
    --cc=jreiser@bitwagon.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpm@selenic.com \
    --cc=security@kernel.org \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®