From: Austin S Hemmelgarn <ahferroin7@gmail.com>
To: Andrey Utkin <andrey.od.utkin@gmail.com>,
linux-kernel@vger.kernel.org, Anton <anton@picapica.im>
Subject: Re: [RFC] In-kernel fuzz testing for apps
Date: Thu, 19 Nov 2015 10:37:15 -0500 [thread overview]
Message-ID: <564DECAB.6050602@gmail.com> (raw)
In-Reply-To: <564D0C30.8010009@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2736 bytes --]
On 2015-11-18 18:39, Andrey Utkin wrote:
> Me and my friend have once talked about careful application development,
> which includes awareness about all possible error conditions.
> So we have collected ideas about making kernel (or, in some cases, libc)
> "hostile" to careless application, and we present it so that the idea
> doesn't get lost, and maybe even gets real if somebody wants some
> features from the list.
This is an excellent idea for security testing, however, see below for
more thoughts.
>
> - (libc) crash instantly if memcpy detects regions overlapping;
I believe there are actually systems out there that do this, but they
are ancient by now.
> - return EINTR as much as possible;
> - send/recv/etc. returns EAGAIN on non-blocking sockets as much as possible;
> - send/recv tend to result in short writes/reads, e.g. 1 byte at a time,
> to break assumption about sending/receiving some "not-so-big" thing at once;
These three are tricky to do from userspace, but the first two could be
done with ptrace with some effort (not sure about the third).
> - let write return ENOSPC sometimes;
Ironically, this can be done without much effort using BTRFS (although
that will hopefully change in the future).
> - scheduler behaves differently from common case (e.g. let it tend to
> stop a thread at some syscalls);
I don't see this one being very useful for any program that isn't
running realtime or accessing hardware directly.
> - return allocation failures;
I'm pretty certain there is some library out there that you can preload
to do this.
> - make OOM killer manic!
This isn't hard to do in a VM, either randomly adjust the memory
balloon, or randomly enter the scan-code for Ctrl-Alt-SysRq-F on the
console.
> - make clocks which are not monotonic to go backward frequently;
Same as above, but for different reasons.
> - pretend the time is 2038 year or later;
Same as above, also look up a program called 'datefudge'.
> - (arguable) close syscall returns non-zero first time, or randomly;
I'm actually genuinely curious about this one. What real-world
circumstances could cause close() to fail?
> - (arguable) special arch having NULL not all zero-bits. Actually I
> don't believe it is feasible to make a lot of modern software to run in
> such situation.
This one is a functional guarantee for almost anything that uses virtual
memory. In theory, it might be possible to get a lot of things working
with NULL = 0xFFFFFFFF (or the equivalent on 64-bit arches), but I don't
see that being particularly useful (anything that does anything with
NULL other than check against it and use it as a dummy initializer is
probably broken in other ways).
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 3019 bytes --]
next prev parent reply other threads:[~2015-11-19 15:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-18 23:39 [RFC] In-kernel fuzz testing for apps Andrey Utkin
2015-11-19 15:37 ` Austin S Hemmelgarn [this message]
2015-11-19 17:25 ` Laura Abbott
2015-12-04 8:00 ` Pavel Machek
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=564DECAB.6050602@gmail.com \
--to=ahferroin7@gmail.com \
--cc=andrey.od.utkin@gmail.com \
--cc=anton@picapica.im \
--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.