A new system call named vmsplice() was introduced in the 2.6.17
release of the Linux kernel.
COSEINC reported two issues affecting vmsplice, CVE-2008-0009 and CVE-2008-0010.
On Saturday 20080210 a public exploit was released that utilised a similar flaw
in vmsplice (vmsplice_to_pipe function) to allow a local user to gain privileges
on some architectures.
This issue will affect kernels 2.6.17+ and therefore affected Red Hat Enterprise
Linux 5, but not Red Hat Enterprise Linux 4, 3, or 2.1.
Note that there may be a little confusion as there are actually three vmsplice
CVE-2008-0009 is already fixed upstream, does not affect any RHEL, has no
public exploit. Upstream patch is the second hunk of:
CVE-2008-0010 is already fixed upstream, does not affect any RHEL, but has
a public exploit. ( http://www.milw0rm.com/exploits/5093 )
Upstream patch is the first hunk of:
CVE-2008-0600 is not yet fixed upstream, affects RHEL5,
and has a public exploit ( http://www.milw0rm.com/exploits/5092 )
Proposed patch for RHEL5 from Al Viro
diff -urN linux-2.6.18.x86_64/fs/splice.c linux-2.6.18.x86_64-fix/fs/splice.c
--- linux-2.6.18.x86_64/fs/splice.c 2008-02-10 11:08:19.000000000 -0500
+++ linux-2.6.18.x86_64-fix/fs/splice.c 2008-02-10 11:31:06.000000000 -0500
@@ -1154,6 +1154,9 @@
+ if (unlikely(!access_ok(VERIFY_READ, base, len)))
* Get this base offset and number of pages, then map
* in the user pages.
Confirmed the patch blocks this issue for Red Hat Enterprise Linux 5; this
specific exploit prints "[-] vmsplice: Bad address" and fails.
For Red Hat Enterprise Linux 5:
CVSS v2 Base score: 7.2 (High) (AV:L/AC:L/Au:N/C:C/I:C/A:C)
We added a quick and dirty patch for the problem here:
It is a kernel module that disables vmsplice, and logs any attempts to exploit
As it it a loadable module it can easily be deployed on systems that can not be
updated with a new kernel for various reasons.
I tried that module on a test system and got:
<name> kernel: general protection fault: 0000  SMP
The make file required some modification for PAE kernels due to path issues;
once compiled module fails to load with:
insmod: error inserting 'ptpatch2008.ko': -1 Invalid module format
(double checked to confirm the system.map and modules paths are in fact valid to
the current running kernel version on the system)
@Ryan, make sure you have kernel-PAE-devel installed, and then undo your
Makefile path changes. The modules compile and insmod properly for me. Thanks,
Created attachment 294535 [details]
x86_64 panic on ptpach module load
to clarify, the module from comment#10 panic's on x86_64 for me.
(In reply to comment #13)
> @Ryan, make sure you have kernel-PAE-devel installed, and then undo your
> Makefile path changes. The modules compile and insmod properly for me. Thanks,
Perfect, that did the trick - had not realized there was a specific pae-devel
*** Bug 432308 has been marked as a duplicate of this bug. ***
*** Bug 432288 has been marked as a duplicate of this bug. ***
On kernel-2.6.18-53.1.6.el5xen (x86_64) this exploit makes kernel panic.
Not to detract from the real work, but can someone describe the
access-restricted bugs marked as blocking this? (Bug #432252, Bug #432253). Thanks.
These are simply tracking bugs for specific affected products.
In reply to comment #20; there are some bugs in the exploit which means that it
doesn't work directly on x86_64 machines, although it can be modified to do so.
I can confirm the sample exploit will segfault on athlon on a bare system (would
likely be patchable), but will work as supplied on a XenU.
Segfault: Linux xxxx 126.96.36.199-85.fc8 #1 SMP Fri Dec 7 15:49:59 EST 2007 i686
athlon i386 GNU/Linux
Exploitable: Linux xxxx 2.6.21-2952.fc8xen #1 SMP Mon Nov 19 07:06:55 EST 2007
i686 athlon i386 GNU/Linux
The exploit worked for me w/o a segfault on i386 Duron (
kernel-2.6.18-53.1.6.el5 ) and x86_64 Athlon X2 (5200+ - same kernel but x86_64
on i386 it did not consistently work, and I'm guessing related, the machine had
to be rebooted as it kept dropping ssh connections after the exploit was run.
Both boxes are CentOS (opposed to RHEL) if it matters.
I verified it working on RHEL5 and RHEL 5.1 32bit boxes using both the older and
newer -53 kernels in both single and SMP installs.
The exploit does seem to make the systems unstable and they have crashed after
running a little longer after someone uses this exploit.
I've compiled an interim RPM for my internal use, as I considered this safer
than the kernel module which has caused panics. It's the same as 2.6.18-53
Centos, but with the upstream kernel patch applied. Obviously your mileage may vary.
That's against 188.8.131.52.6, not 2.6.53 as I said previously.
Hey boys, Debian has already fixed this, where is Red Hat? Thank you very much.
> Hey boys, Debian has already fixed this, where is Red Hat? Thank you very much.
Doing quality control on the produced updates, presumably.
RHAT had it fixed on 2/8 see the .79 kernel in:
I tested it on i686 and was unable to use millw0rm exploit 5092 or 5093. it also
fixes another NFS issue from bug 431092.
(In reply to comment #31)
> RHAT had it fixed on 2/8 see the .79 kernel in:
> I tested it on i686 and was unable to use millw0rm exploit 5092 or 5093. it also
> fixes another NFS issue from bug 431092.
However, keep in mind that it is a TEST kernel. The .78 kernel I tested and
confirmed about the nfs fix is UNstable and some people are experiencing system
instability / crashes.
The Red Hat Security Response Team is working with engineering and QA on the
updated packages for Red Hat Enterprise Linux 5. We'll release them immediately
to the Red Hat Network once they pass our testing and QA processes.
(Updated Fedora kernels are currently being pushed live and will be available soon)
The system tap does not seem to catch/deny every run of the exploit in my
testing. They all seem to get logged, but many of them still get a root prompt.
The system is also still unstable, and either the exploit running multiple times
or the system tap eventually cause a kernel crash.
(In reply to comment #16)
> (In reply to comment #13)
> > @Ryan, make sure you have kernel-PAE-devel installed, and then undo your
> > Makefile path changes. The modules compile and insmod properly for me.
> > Ola!
> Perfect, that did the trick - had not realized there was a specific pae-devel
I was able to successfully compile the module on a FC5 system, but when trying
to add via insmod, I get:
insmod: error inserting 'ptpatch2008.ko': -1 Operation not permitted
(In reply to comment #36)
> The system tap does not seem to catch/deny every run of the exploit in my
> testing. They all seem to get logged, but many of them still get a root prompt.
The systemtap script proposed in comment #35 is a poor choice, so is
now hidden in order to avoid misleading the public. It interfered
with multiple functions in fs/splice.c, and did not actually block
the vmsplice attempt but rather just attempt to log and punish it.
If you have the prerequisites for this tool though, try the simpler
script listed in bug #432229 comment #17.
Just a quick status update; we have updated kernel packages released for Fedora
(see linked bugs) and are finishing up the QA process for Red Hat Enterprise
Linux 5. We expect this to be completed shortly (pending successful completion
of testing). This will be RHSA-2008:0129.
This vulnerability, CVE-2008-0600, did not affect Red Hat Enterprise Linux 2.1,
3, or 4. Updated packages to correct this vulnerability are now available for
Red Hat Enterprise Linux along with our advisory at the URL:
Since all Red Hat and Fedora products are not updated, closing the bug.
*** Bug 432319 has been marked as a duplicate of this bug. ***