[lxc-users] lxc-start-ephemeral triggers kernel oops

overlay fs overlayfs at gmail.com
Tue Jun 16 14:52:43 UTC 2015


This report pertains to ubuntu 14.04 host and container, with the lxc-daily ppa
and a container which includes the x11-common package.

A patch for CVE-2015-1328, overlayfs privilege escalation,
has recently been applied to the kernel,
http://www.ubuntu.com/usn/usn-2643-1/

With this patch in place, running the following command,

   lxc-start-ephemeral -o trusty -d

triggers a kernel oops,

   kernel: [ 3993.329638] BUG: unable to handle kernel NULL pointer
dereference at 0000000000000030
   kernel: [ 3993.329691] IP: [<ffffffffa075cd80>]
ovl_dentry_root_may+0x30/0x60 [overlayfs]
   kernel: [ 3993.329735] PGD 8e7a2067 PUD 8b516067 PMD 0
   kernel: [ 3993.329766] Oops: 0000 [#1] SMP

with call trace,

   kernel: [ 3993.331138] Call Trace:
   kernel: [ 3993.331156]  [<ffffffffa075ef2e>]
ovl_check_empty_and_clear+0x4e/0x240 [overlayfs]
   kernel: [ 3993.331198]  [<ffffffff811d44c0>] ?
prepend.constprop.25+0x30/0x30
   kernel: [ 3993.331231]  [<ffffffffa075d963>] ovl_rmdir+0x23/0x40
[overlayfs]
   kernel: [ 3993.331262]  [<ffffffff811cc678>] vfs_rmdir+0xa8/0x100
   kernel: [ 3993.331291]  [<ffffffff811ce571>] do_rmdir+0x1c1/0x1e0
   kernel: [ 3993.331321]  [<ffffffff81021127>] ?
syscall_trace_enter+0x197/0x250
   kernel: [ 3993.331352]  [<ffffffff811cf655>] SyS_unlinkat+0x25/0x40
   kernel: [ 3993.331383]  [<ffffffff81733f6f>] tracesys+0xe1/0xe6
   kernel: [ 3993.331409] Code: 55 48 89 e5 41 55 49 89 f5 41 54 53 48
8b 47 68 89 d3 48 8b 80 f8 02 00 00 48 8b 78 28 e8 e9 3a 93 e0 49 89
c4 49 8b 45 08 89 de <48> 8b 78 30 e8 97 c4 a6 e0 83 f8 01 4c 89 e7 19
db f7 d3 83 e3
   kernel: [ 3993.331695] RIP  [<ffffffffa075cd80>]
ovl_dentry_root_may+0x30/0x60 [overlayfs]
   kernel: [ 3993.331737]  RSP <ffff88008bfbbda8>
   kernel: [ 3993.331755] CR2: 0000000000000030
   kernel: [ 3993.337695] ---[ end trace 166f37bc2c7b0f52 ]---

The oops occurs every time the command is run.

If the container's (upstart) init is replaced with,

    /sbin/init --no-startup-event

then the oops does not occur.

When the oops occurs, /etc/init.d/x11-common hangs at
the following line,

   mkdir -p -m 01777 /tmp/.X11-unix

and the container's /tmp is unreadable, both from within the container
and from the host.

Containers that do not include the x11-common package
do not exhibit the bug. Installing x11-common suffices to trigger the bug.


More information about the lxc-users mailing list