Fedora 20 Update: trinity-1.3-1.fc20

updates at fedoraproject.org updates at fedoraproject.org
Thu Feb 6 03:50:55 UTC 2014


--------------------------------------------------------------------------------
Fedora Update Notification
FEDORA-2014-1685
2014-01-29 01:58:20
--------------------------------------------------------------------------------

Name        : trinity
Product     : Fedora 20
Version     : 1.3
Release     : 1.fc20
URL         : http://codemonkey.org.uk/projects/trinity/
Summary     : System call fuzz tester
Description :
Trinity makes syscalls at random, with random arguments.  Where Trinity
differs from other fuzz testers is that the arguments it passes are not
purely random.

We found some bugs in the past by just passing random values, but once
the really dumb bugs were found, these dumb fuzzers would just run and
run.  The problem was if a syscall took for example a file descriptor as
an argument, one of the first things it would try to do was validate
that fd.  Being garbage, the kernel would just reject it as -EINVAL of
course.  So on startup, Trinity creates a list of file descriptors, by
opening pipes, scanning sysfs, procfs, /dev, and creates a bunch of
sockets using random network protocols.  Then when a syscall needs an
fd, it gets passed one of these at random.

File descriptors aren't the only thing Trinity knows about.  Every
syscall has its arguments annotated, and where possible it tries to
provide something at least semi-sensible. "Length" arguments for example
get passed one of a whole bunch of potentially interesting values.
(Powers of 2 +/-1 are a good choice for triggering off-by-one bugs it
seems).

Trinity also shares those file descriptors between multiple threads,
which causes havoc sometimes.

If a child process successfully creates an mmap, the pointer is stored,
and fed to subsequent syscalls, sometimes with hilarious results.

--------------------------------------------------------------------------------
Update Information:

This new package is a system call fuzz tester.  It makes syscalls at random, with random arguments.  Where Trinity differs from other fuzz testers is that the arguments it passes are not purely random.

We found some bugs in the past by just passing random values, but once the really dumb bugs were found, these dumb fuzzers would just run and run.  The problem was if a syscall took for example a file descriptor as an argument, one of the first things it would try to do was validate that fd.  Being garbage, the kernel would just reject it as -EINVAL of course.  So on startup, Trinity creates a list of file descriptors, by opening pipes, scanning sysfs, procfs, /dev, and creates a bunch of sockets using random network protocols.  Then when a syscall needs an fd, it gets passed one of these at random.

File descriptors aren't the only thing Trinity knows about.  Every syscall has its arguments annotated, and where possible it tries to provide something at least semi-sensible.  "Length" arguments for example get passed one of a whole bunch of potentially interesting values.  (Powers of 2 +/-1 are a good choice for triggering off-by-one bugs it seems).

Trinity also shares those file descriptors between multiple threads, which causes havoc sometimes.

If a child process successfully creates an mmap, the pointer is stored, and fed to subsequent syscalls, sometimes with hilarious results.
--------------------------------------------------------------------------------
References:

  [ 1 ] Bug #1055771 - Review Request: trinity - System call fuzz tester
        https://bugzilla.redhat.com/show_bug.cgi?id=1055771
--------------------------------------------------------------------------------

This update can be installed with the "yum" update program.  Use 
su -c 'yum update trinity' at the command line.
For more information, refer to "Managing Software with yum",
available at http://docs.fedoraproject.org/yum/.

All packages are signed with the Fedora Project GPG key.  More details on the
GPG keys used by the Fedora Project can be found at
https://fedoraproject.org/keys
--------------------------------------------------------------------------------


More information about the package-announce mailing list