From: Laura Abbott <labbott@redhat.com>
To: Kees Cook <keescook@chromium.org>
Cc: Laura Abbott <labbott@fedoraproject.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Arnd Bergmann <arnd@arndb.de>,
"kernel-hardening@lists.openwall.com"
<kernel-hardening@lists.openwall.com>,
LKML <linux-kernel@vger.kernel.org>
Subject: [kernel-hardening] Re: [PATCHv2] lkdtm: Add READ_AFTER_FREE test
Date: Mon, 22 Feb 2016 14:06:34 -0800 [thread overview]
Message-ID: <56CB866A.8070306@redhat.com> (raw)
In-Reply-To: <CAGXu5jLdQNx7ineLf0zv67O30ituQ3a8WHKLBN5FzGVjMz27Bg@mail.gmail.com>
On 02/22/2016 11:27 AM, Kees Cook wrote:
> On Fri, Feb 19, 2016 at 3:07 PM, Laura Abbott <labbott@redhat.com> wrote:
>> On 02/19/2016 02:19 PM, Kees Cook wrote:
>>>
>>> On Fri, Feb 19, 2016 at 2:11 PM, Laura Abbott <labbott@redhat.com> wrote:
>>>>
>>>> On 02/19/2016 11:12 AM, Kees Cook wrote:
>>>>>
>>>>>
>>>>> On Thu, Feb 18, 2016 at 5:15 PM, Laura Abbott
>>>>> <labbott@fedoraproject.org>
>>>>> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> In a similar manner to WRITE_AFTER_FREE, add a READ_AFTER_FREE
>>>>>> test to test free poisoning features. Sample output when
>>>>>> no sanitization is present:
>>>>>>
>>>>>> [ 22.414170] lkdtm: Performing direct entry READ_AFTER_FREE
>>>>>> [ 22.415124] lkdtm: Value in memory before free: 12345678
>>>>>> [ 22.415900] lkdtm: Attempting to read from freed memory
>>>>>> [ 22.416394] lkdtm: Successfully read value: 12345678
>>>>>>
>>>>>> with sanitization:
>>>>>>
>>>>>> [ 25.874585] lkdtm: Performing direct entry READ_AFTER_FREE
>>>>>> [ 25.875527] lkdtm: Value in memory before free: 12345678
>>>>>> [ 25.876382] lkdtm: Attempting to read from freed memory
>>>>>> [ 25.876900] general protection fault: 0000 [#1] SMP
>>>>>>
>>>>>> Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
>>>>>
>>>>>
>>>>>
>>>>> Excellent! Could you mention in the changelog which CONFIG (or runtime
>>>>> values) will change the lkdtm test? (I thought there was a poisoning
>>>>> style that would result in a zero-read instead of a GP?)
>>>>>
>>>>
>>>> There was a zeroing patch in the first draft but given the direction
>>>> things are going, I don't see it going in. I'll mention the debug
>>>> options which will show this though.
>>>
>>>
>>> Ah! Okay, I was having trouble following what was happening. What's
>>> the current state of the use-after-free protections you've been
>>> working on?
>>
>>
>> Based on discussion, the SL*B maintainers want to use the existing
>> slab poisoning features instead adding in new hooks. They also don't
>> want the fast path to be affected at all. This means most of the
>> actual work there is improving the performance of slub_debug=P. I
>> sent out patches for some low hanging fruit in SLUB which improved
>> the performance by a good bit. Those have been Acked and are sitting
>> in Andrew's tree. The next performance work involves more in depth
>> tinkering with the SLUB allocator. Apart from just performance, the
>> other work would be poisoning for caches with ctors in SLUB and
>> poisoning in SLOB. I could use some help with benchmarking some
>> actual use cases to see how usable slub_debug=P would be on some
>> use cases.
>>
>> I did sent out patches for the buddy allocator as well. The last
>
> This must be where my confusion stems. :) IIUC, the buddy allocator is
> used within the SL*B logic when splitting/joining regions? Can we add
> an lkdtm test for this too?
>
The buddy allocator backs the underlying SL*B logic. Each SL*B allocation
is typically less than a page so those allocators manage the smaller
allocations. I was thinking about an LKDTM test for the buddy allocator
as well. I'll see about adding one. This would be useful for testing
debug_pagealloc as well.
>> version I sent out didn't get much in the way of feedback except
>> for some requests for benchmarks on the zeroing. I was planning
>> on following up on that next week to see if there was any more feedback
>> and beg for Acks.
>
> If you can point me at the current tree, I'd be happy to run some benchmarks.
>
mmotm should have the patches http://git.cmpxchg.org/cgit.cgi/linux-mmotm.git/
Turn on CONFIG_PAGE_POISONING and set page_poison=on on the command line.
> -Kees
>
Thanks,
Laura
WARNING: multiple messages have this Message-ID (diff)
From: Laura Abbott <labbott@redhat.com>
To: Kees Cook <keescook@chromium.org>
Cc: Laura Abbott <labbott@fedoraproject.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Arnd Bergmann <arnd@arndb.de>,
"kernel-hardening@lists.openwall.com"
<kernel-hardening@lists.openwall.com>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCHv2] lkdtm: Add READ_AFTER_FREE test
Date: Mon, 22 Feb 2016 14:06:34 -0800 [thread overview]
Message-ID: <56CB866A.8070306@redhat.com> (raw)
In-Reply-To: <CAGXu5jLdQNx7ineLf0zv67O30ituQ3a8WHKLBN5FzGVjMz27Bg@mail.gmail.com>
On 02/22/2016 11:27 AM, Kees Cook wrote:
> On Fri, Feb 19, 2016 at 3:07 PM, Laura Abbott <labbott@redhat.com> wrote:
>> On 02/19/2016 02:19 PM, Kees Cook wrote:
>>>
>>> On Fri, Feb 19, 2016 at 2:11 PM, Laura Abbott <labbott@redhat.com> wrote:
>>>>
>>>> On 02/19/2016 11:12 AM, Kees Cook wrote:
>>>>>
>>>>>
>>>>> On Thu, Feb 18, 2016 at 5:15 PM, Laura Abbott
>>>>> <labbott@fedoraproject.org>
>>>>> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> In a similar manner to WRITE_AFTER_FREE, add a READ_AFTER_FREE
>>>>>> test to test free poisoning features. Sample output when
>>>>>> no sanitization is present:
>>>>>>
>>>>>> [ 22.414170] lkdtm: Performing direct entry READ_AFTER_FREE
>>>>>> [ 22.415124] lkdtm: Value in memory before free: 12345678
>>>>>> [ 22.415900] lkdtm: Attempting to read from freed memory
>>>>>> [ 22.416394] lkdtm: Successfully read value: 12345678
>>>>>>
>>>>>> with sanitization:
>>>>>>
>>>>>> [ 25.874585] lkdtm: Performing direct entry READ_AFTER_FREE
>>>>>> [ 25.875527] lkdtm: Value in memory before free: 12345678
>>>>>> [ 25.876382] lkdtm: Attempting to read from freed memory
>>>>>> [ 25.876900] general protection fault: 0000 [#1] SMP
>>>>>>
>>>>>> Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
>>>>>
>>>>>
>>>>>
>>>>> Excellent! Could you mention in the changelog which CONFIG (or runtime
>>>>> values) will change the lkdtm test? (I thought there was a poisoning
>>>>> style that would result in a zero-read instead of a GP?)
>>>>>
>>>>
>>>> There was a zeroing patch in the first draft but given the direction
>>>> things are going, I don't see it going in. I'll mention the debug
>>>> options which will show this though.
>>>
>>>
>>> Ah! Okay, I was having trouble following what was happening. What's
>>> the current state of the use-after-free protections you've been
>>> working on?
>>
>>
>> Based on discussion, the SL*B maintainers want to use the existing
>> slab poisoning features instead adding in new hooks. They also don't
>> want the fast path to be affected at all. This means most of the
>> actual work there is improving the performance of slub_debug=P. I
>> sent out patches for some low hanging fruit in SLUB which improved
>> the performance by a good bit. Those have been Acked and are sitting
>> in Andrew's tree. The next performance work involves more in depth
>> tinkering with the SLUB allocator. Apart from just performance, the
>> other work would be poisoning for caches with ctors in SLUB and
>> poisoning in SLOB. I could use some help with benchmarking some
>> actual use cases to see how usable slub_debug=P would be on some
>> use cases.
>>
>> I did sent out patches for the buddy allocator as well. The last
>
> This must be where my confusion stems. :) IIUC, the buddy allocator is
> used within the SL*B logic when splitting/joining regions? Can we add
> an lkdtm test for this too?
>
The buddy allocator backs the underlying SL*B logic. Each SL*B allocation
is typically less than a page so those allocators manage the smaller
allocations. I was thinking about an LKDTM test for the buddy allocator
as well. I'll see about adding one. This would be useful for testing
debug_pagealloc as well.
>> version I sent out didn't get much in the way of feedback except
>> for some requests for benchmarks on the zeroing. I was planning
>> on following up on that next week to see if there was any more feedback
>> and beg for Acks.
>
> If you can point me at the current tree, I'd be happy to run some benchmarks.
>
mmotm should have the patches http://git.cmpxchg.org/cgit.cgi/linux-mmotm.git/
Turn on CONFIG_PAGE_POISONING and set page_poison=on on the command line.
> -Kees
>
Thanks,
Laura
next prev parent reply other threads:[~2016-02-22 22:06 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-19 1:15 [kernel-hardening] [PATCHv2] lkdtm: Add READ_AFTER_FREE test Laura Abbott
2016-02-19 1:15 ` Laura Abbott
2016-02-19 19:12 ` [kernel-hardening] " Kees Cook
2016-02-19 19:12 ` Kees Cook
2016-02-19 22:11 ` [kernel-hardening] " Laura Abbott
2016-02-19 22:11 ` Laura Abbott
2016-02-19 22:19 ` [kernel-hardening] " Kees Cook
2016-02-19 22:19 ` Kees Cook
2016-02-19 23:07 ` [kernel-hardening] " Laura Abbott
2016-02-19 23:07 ` Laura Abbott
2016-02-22 19:27 ` [kernel-hardening] " Kees Cook
2016-02-22 19:27 ` Kees Cook
2016-02-22 22:06 ` Laura Abbott [this message]
2016-02-22 22:06 ` Laura Abbott
2016-02-23 21:25 ` [kernel-hardening] " Kees Cook
2016-02-23 21:25 ` Kees Cook
2016-02-23 22:37 ` [kernel-hardening] " Kees Cook
2016-02-23 22:37 ` Kees Cook
2016-02-24 18:59 ` [kernel-hardening] " Laura Abbott
2016-02-24 18:59 ` Laura Abbott
2016-02-24 17:22 ` [kernel-hardening] " Kees Cook
2016-02-24 17:22 ` Kees Cook
2016-02-24 19:40 ` [kernel-hardening] " Laura Abbott
2016-02-24 19:40 ` Laura Abbott
2016-02-24 21:48 ` [kernel-hardening] " Kees Cook
2016-02-24 21:48 ` Kees Cook
2016-02-24 23:37 ` [kernel-hardening] " Kees Cook
2016-02-24 23:37 ` Kees Cook
2016-02-25 1:28 ` [kernel-hardening] " Laura Abbott
2016-02-25 1:28 ` Laura Abbott
2016-02-25 17:35 ` [kernel-hardening] " Kees Cook
2016-02-25 17:35 ` Kees Cook
2016-02-25 23:15 ` [kernel-hardening] " Laura Abbott
2016-02-25 23:15 ` Laura Abbott
2016-02-26 16:03 ` [kernel-hardening] " Kees Cook
2016-02-26 16:03 ` Kees Cook
2016-02-26 22:19 ` [kernel-hardening] " Laura Abbott
2016-02-26 22:19 ` Laura Abbott
2016-02-26 22:33 ` [kernel-hardening] " Kees Cook
2016-02-26 22:33 ` Kees Cook
2016-03-01 1:37 ` [kernel-hardening] " Laura Abbott
2016-03-01 1:37 ` Laura Abbott
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=56CB866A.8070306@redhat.com \
--to=labbott@redhat.com \
--cc=arnd@arndb.de \
--cc=gregkh@linuxfoundation.org \
--cc=keescook@chromium.org \
--cc=kernel-hardening@lists.openwall.com \
--cc=labbott@fedoraproject.org \
--cc=linux-kernel@vger.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.