All of lore.kernel.org
 help / color / mirror / Atom feed
From: Al Viro <viro@ftp.linux.org.uk>
To: Valdis.Kletnieks@vt.edu
Cc: Jon Smirl <jonsmirl@gmail.com>,
	gregkh@suse.de, linux-kernel@vger.kernel.org, stable@kernel.org
Subject: Re: [patch 03/26] sysfs: zero terminate sysfs write buffers (CVE-2006-1055)
Date: Thu, 6 Apr 2006 02:05:09 +0100	[thread overview]
Message-ID: <20060406010509.GO27946@ftp.linux.org.uk> (raw)
In-Reply-To: <200604051958.k35JwF0M019652@turing-police.cc.vt.edu>

On Wed, Apr 05, 2006 at 03:58:15PM -0400, Valdis.Kletnieks@vt.edu wrote:
> On Wed, 05 Apr 2006 16:39:57 BST, Al Viro said:
> 
> > How about _NOT_ using sysfs and just having ->read()/->write() on a file in fs
> > of your own?  ~20 lines for all of it, not counting #include...
> 
> Great.  Instead of everybody using the same piece-of-manure sysfs interface,
> each driver carries around its 20 lines to implement read() and write() in
> subtly buggy and incompatible ways.

No, that would be 20 lines to tell what and where you want in that fs and
how long should the things live.  Plus whatever you've got for your ->read()
and ->write() - using existing libfs helpers if needed.  Instead of pushing
into sysfs the things that do not fit sysfs interfaces.

BTW, in my experience "subtly buggy and incompatible ways" describes sysfs
uses, except that there's rarely anything subtle about that.  Care to name
four kernel data structures that got kobjects embedded into them (directly
or via struct device and it ilk) and had _NOT_ required at one point or
another (post-merge) fixing of blatant user-exploitable holes due to botched
lifetime rules?

Not that you had to embed them to achieve the same wonderful effect -
witness fbsysfs.c user-exploitable holes on unregister_framebuffer();
sure, fb_info->class_device will stay allocated if you have one of the
attributes opened.  Now try to call read(); what will it access?

Not to mention that the same file has a pile of ->store() assuming we
have NUL-termination, or the lovely use of sscanf() on non-NUL-terminated
array right in store_cmap() itself.  Equivalent of
	p = malloc(5);
	if (p) {
		memcpy(p, q, 5);
		sscanf(p, "%4hx", &v);
	}
You do realize that it's broken, don't you?  sscanf field width for %x
applies _after_ skipping the whitespace, not to the total amount of
characters being eaten.  And in reality this buffer comes from the end
of get_zeroed_page() result, so there's really nothing past its end.

  parent reply	other threads:[~2006-04-06  1:05 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20060404235634.696852000@quad.kroah.org>
2006-04-04 23:59 ` [patch 00/26] 2.6.16.2 -stable review gregkh
2006-04-04 23:59   ` [patch 01/26] tlclk: fix handling of device major gregkh
2006-04-04 23:59   ` [patch 02/26] USB: Fix irda-usb use after use gregkh
2006-04-05  0:16     ` David S. Miller
2006-04-06  0:55       ` [stable] " Greg KH
2006-04-05  0:22     ` Randy.Dunlap
2006-04-04 23:59   ` [patch 03/26] sysfs: zero terminate sysfs write buffers (CVE-2006-1055) gregkh
2006-04-05 15:09     ` Sergey Vlasov
2006-04-05 15:21       ` Al Viro
2006-04-05 15:38         ` Jon Smirl
2006-04-05 15:39           ` Al Viro
2006-04-05 15:43             ` Jon Smirl
2006-04-05 15:46               ` Al Viro
2006-04-05 16:18                 ` Jon Smirl
2006-04-05 17:04                   ` Al Viro
2006-04-05 19:58             ` Valdis.Kletnieks
2006-04-05 20:07               ` Greg KH
2006-04-06  1:05               ` Al Viro [this message]
2006-04-05 16:34         ` Jon Smirl
2006-04-05 17:02           ` Al Viro
2006-04-05 17:06             ` Jon Smirl
2006-04-05 17:27               ` Al Viro
2006-04-05 15:30       ` Jon Smirl
2006-04-05 18:52         ` [stable] " Greg KH
2006-04-04 23:59   ` [patch 04/26] USB: EHCI full speed ISO bugfixes gregkh
2006-04-04 23:59   ` [patch 05/26] USB: usbcore: usb_set_configuration oops (NULL ptr dereference) gregkh
2006-04-05  0:00   ` [patch 06/26] sbp2: fix spinlock recursion gregkh
2006-04-05  0:00   ` [patch 07/26] powerpc: make ISA floppies work again gregkh
2006-04-05  0:00   ` [patch 08/26] PCMCIA_SPECTRUM must select FW_LOADER gregkh
2006-04-05  0:00   ` [patch 09/26] pcmcia: permit single-character-identifiers gregkh
2006-04-05  0:00   ` [patch 10/26] opti9x - Fix compile without CONFIG_PNP gregkh
2006-04-05  0:00   ` [patch 11/26] IPOB: Move destructor from neigh->ops to neigh_param gregkh
2006-04-05  0:07     ` David S. Miller
2006-04-05  0:12       ` [stable] " Greg KH
2006-04-05  0:14       ` Roland Dreier
2006-04-05  0:17         ` David S. Miller
2006-04-05  0:42           ` Roland Dreier
2006-04-05  0:47             ` David S. Miller
2006-04-05  1:08               ` Roland Dreier
2006-04-05  7:58               ` Michael S. Tsirkin
2006-04-05  0:00   ` [patch 12/26] Mark longhaul driver as broken gregkh
2006-04-05  0:00   ` [patch 13/26] isicom must select FW_LOADER gregkh
2006-04-05  0:00   ` [patch 14/26] {ip, nf}_conntrack_netlink: fix expectation notifier unregistration gregkh
2006-04-05  0:00   ` [patch 15/26] wrong error path in dup_fd() leading to oopses in RCU gregkh
2006-04-05  0:00   ` [patch 16/26] Fix the p4-clockmod N60 errata workaround gregkh
2006-04-05  0:00   ` [patch 17/26] Fix module refcount leak in __set_personality() gregkh
2006-04-05  0:00   ` [patch 18/26] fib_trie.c node freeing fix gregkh
2006-04-05  0:01   ` [patch 19/26] fbcon: Fix big-endian bogosity in slow_imageblit() gregkh
2006-04-05  0:01   ` [patch 20/26] drivers/net/wireless/ipw2200.c: fix an array overun gregkh
2006-04-05  0:01   ` [patch 21/26] Fix NULL pointer dereference in node_read_numastat() gregkh
2006-04-05  0:01   ` [patch 22/26] AIRO{,_CS} <-> CRYPTO fixes gregkh
2006-04-05  0:01   ` [patch 23/26] Add default entry for CTL Travel Master U553W gregkh
2006-04-05  0:01   ` [patch 24/26] hostap: Fix EAPOL frame encryption gregkh
2006-04-05  0:01   ` [patch 25/26] knfsd: Correct reserved reply space for read requests gregkh
2006-04-05  0:01   ` [patch 26/26] kdump proc vmcore size oveflow fix gregkh

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=20060406010509.GO27946@ftp.linux.org.uk \
    --to=viro@ftp.linux.org.uk \
    --cc=Valdis.Kletnieks@vt.edu \
    --cc=gregkh@suse.de \
    --cc=jonsmirl@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.