From: Vasiliy Kulikov <segoon@openwall.com>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>, Greg Kroah-Hartman <gregkh@suse.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
James Morris <jmorris@namei.org>,
Namhyung Kim <namhyung@gmail.com>,
kernel-hardening@lists.openwall.com,
linux-kernel@vger.kernel.org
Subject: [kernel-hardening] Re: [PATCH v2] kernel: escape non-ASCII and control characters in printk()
Date: Sat, 2 Jul 2011 12:10:22 +0400 [thread overview]
Message-ID: <20110702081022.GA2755@albatros> (raw)
In-Reply-To: <20110701154947.133c30f5@lxorguk.ukuu.org.uk>
On Fri, Jul 01, 2011 at 15:49 +0100, Alan Cox wrote:
> > of the multiline feature. Intoducing new "%S" format for single lines
> > makes little sense as there are tons of printk() calls that should be
> > already restricted to one line.
>
> You don't need a new format string surely. Your expectation for printk is
>
> "multiple new lines are cool providing they are in the format string"
>
> So that bit isn't hard to deal with,
>
> You make vprintk take an extra arg (trusted/untrusted args)
Not vprintk, but vscnprintf(), vsnprintf() and string() because
vprintk() is used in tens of places besides of printk(). Or better
implement _vscnprintf(.., bool untrusted) and
vscnprintf(...) { return _vscnprintf(..., false); }
to leave current users of it as is.
But yes, I got the idea.
> You make printk pass 'untrusted'
> You make %s quote the arguments for control codes
What to do with CSI? It is a valid byte inside of a UTF-8 string.
Parsing a supplied string assuming it is UTF-8 string and filtering CSI
iff it is not a part of UTF-8 symbol is something a bit ugly IMO.
Greg - do you know any devices supplying multibyte strings, but not in
UTF-8 encoding? If yes, then CSI filtering is a bad idea :\
> At which point your attacker has more work to do but given a long string
> yawns and stars using the right number of spaces for the likely 80 col
> screen :)
Yeah, but introducing some artificial limit for string length is IMO
more harmfull: there is no universal limit for all situations, somewhere
the resulting string is already 70 chars and even 20 bytes would
overflow the col; in rare cases a string of 50 bytes might be still
acceptable.
Thanks,
--
Vasiliy Kulikov
http://www.openwall.com - bringing security into open computing environments
WARNING: multiple messages have this Message-ID (diff)
From: Vasiliy Kulikov <segoon@openwall.com>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>, Greg Kroah-Hartman <gregkh@suse.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
James Morris <jmorris@namei.org>,
Namhyung Kim <namhyung@gmail.com>,
kernel-hardening@lists.openwall.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] kernel: escape non-ASCII and control characters in printk()
Date: Sat, 2 Jul 2011 12:10:22 +0400 [thread overview]
Message-ID: <20110702081022.GA2755@albatros> (raw)
In-Reply-To: <20110701154947.133c30f5@lxorguk.ukuu.org.uk>
On Fri, Jul 01, 2011 at 15:49 +0100, Alan Cox wrote:
> > of the multiline feature. Intoducing new "%S" format for single lines
> > makes little sense as there are tons of printk() calls that should be
> > already restricted to one line.
>
> You don't need a new format string surely. Your expectation for printk is
>
> "multiple new lines are cool providing they are in the format string"
>
> So that bit isn't hard to deal with,
>
> You make vprintk take an extra arg (trusted/untrusted args)
Not vprintk, but vscnprintf(), vsnprintf() and string() because
vprintk() is used in tens of places besides of printk(). Or better
implement _vscnprintf(.., bool untrusted) and
vscnprintf(...) { return _vscnprintf(..., false); }
to leave current users of it as is.
But yes, I got the idea.
> You make printk pass 'untrusted'
> You make %s quote the arguments for control codes
What to do with CSI? It is a valid byte inside of a UTF-8 string.
Parsing a supplied string assuming it is UTF-8 string and filtering CSI
iff it is not a part of UTF-8 symbol is something a bit ugly IMO.
Greg - do you know any devices supplying multibyte strings, but not in
UTF-8 encoding? If yes, then CSI filtering is a bad idea :\
> At which point your attacker has more work to do but given a long string
> yawns and stars using the right number of spaces for the likely 80 col
> screen :)
Yeah, but introducing some artificial limit for string length is IMO
more harmfull: there is no universal limit for all situations, somewhere
the resulting string is already 70 chars and even 20 bytes would
overflow the col; in rare cases a string of 50 bytes might be still
acceptable.
Thanks,
--
Vasiliy Kulikov
http://www.openwall.com - bringing security into open computing environments
next prev parent reply other threads:[~2011-07-02 8:10 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-23 15:21 [kernel-hardening] [PATCH v2] kernel: escape non-ASCII and control characters in printk() Vasiliy Kulikov
2011-06-23 15:21 ` Vasiliy Kulikov
2011-06-26 10:39 ` [kernel-hardening] " Ingo Molnar
2011-06-26 10:39 ` Ingo Molnar
2011-06-26 16:54 ` [kernel-hardening] " Vasiliy Kulikov
2011-06-26 16:54 ` Vasiliy Kulikov
2011-06-26 18:26 ` [kernel-hardening] " Ingo Molnar
2011-06-26 18:26 ` Ingo Molnar
2011-06-26 19:06 ` [kernel-hardening] " Vasiliy Kulikov
2011-06-26 19:06 ` Vasiliy Kulikov
2011-06-26 19:46 ` [kernel-hardening] " Ingo Molnar
2011-06-26 19:46 ` Ingo Molnar
2011-06-26 20:25 ` [kernel-hardening] " Vasiliy Kulikov
2011-06-26 20:25 ` Vasiliy Kulikov
2011-06-26 22:01 ` [kernel-hardening] " Ingo Molnar
2011-06-26 22:01 ` Ingo Molnar
2011-06-27 8:36 ` [kernel-hardening] " Vasiliy Kulikov
2011-06-27 8:36 ` Vasiliy Kulikov
2011-06-27 9:20 ` [kernel-hardening] " Vasiliy Kulikov
2011-06-27 9:20 ` Vasiliy Kulikov
2011-06-27 9:40 ` [kernel-hardening] " Alan Cox
2011-06-27 9:40 ` Alan Cox
2011-06-27 18:38 ` [kernel-hardening] " Vasiliy Kulikov
2011-06-27 18:38 ` Vasiliy Kulikov
2011-06-28 19:30 ` [kernel-hardening] " Linus Torvalds
2011-06-28 19:30 ` Linus Torvalds
2011-07-01 12:00 ` [kernel-hardening] " Ingo Molnar
2011-07-01 12:00 ` Ingo Molnar
2011-07-01 12:54 ` [kernel-hardening] " Vasiliy Kulikov
2011-07-01 14:20 ` Alan Cox
2011-07-02 16:42 ` Solar Designer
2011-07-02 16:42 ` Solar Designer
2011-07-02 19:33 ` [kernel-hardening] " Alan Cox
2011-07-02 19:33 ` Alan Cox
2011-07-02 20:34 ` [kernel-hardening] " Linus Torvalds
2011-07-02 20:34 ` Linus Torvalds
2011-07-01 14:37 ` [kernel-hardening] " Vasiliy Kulikov
2011-07-01 14:37 ` Vasiliy Kulikov
2011-07-01 14:49 ` [kernel-hardening] " Alan Cox
2011-07-01 14:49 ` Alan Cox
2011-07-02 8:10 ` Vasiliy Kulikov [this message]
2011-07-02 8:10 ` Vasiliy Kulikov
2011-07-02 15:08 ` [kernel-hardening] " Greg KH
2011-07-02 15:08 ` Greg KH
2011-07-03 10:01 ` [kernel-hardening] " Vasiliy Kulikov
2011-07-03 10:01 ` Vasiliy Kulikov
2011-07-03 11:42 ` [kernel-hardening] " Vasiliy Kulikov
2011-07-03 11:42 ` Vasiliy Kulikov
2011-07-03 12:23 ` [kernel-hardening] " Alan Cox
2011-07-03 12:23 ` Alan Cox
2011-07-03 17:42 ` [kernel-hardening] " Linus Torvalds
2011-07-03 17:42 ` Linus Torvalds
2011-07-03 21:10 ` [kernel-hardening] " Alan Cox
2011-07-03 21:10 ` Alan Cox
2011-07-03 21:34 ` [kernel-hardening] " Linus Torvalds
2011-07-03 21:34 ` Linus Torvalds
2011-07-05 17:49 ` [kernel-hardening] " Vasiliy Kulikov
2011-07-01 12:12 ` Ingo Molnar
2011-07-01 12:12 ` Ingo Molnar
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=20110702081022.GA2755@albatros \
--to=segoon@openwall.com \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=gregkh@suse.de \
--cc=jmorris@namei.org \
--cc=kernel-hardening@lists.openwall.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=namhyung@gmail.com \
--cc=torvalds@linux-foundation.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.