[avahi] Avahi daemon doesn't work inside an unprivileged container

Yann Soubeyrand ysoubeyrand at adeneo-embedded.com
Fri Jul 17 08:55:43 PDT 2015


Hi Trent,

Sorry for the (very) long delay…

Inside the container I get a cred->uid value of 65534 which means (if
I'm not mistaken) an UID overflow. I'm not sure if this is due to the
fact that the UID 0 is mapped on the UID 755360 for this container.
Anyway, I think that the value of cred->uid should be 0 in this case
but I'm not sure.

Here is the setup I used. My host system is a Debian Sid with LXC 1.0.7
-3. The container runs Ubuntu Utopic as I wasn't able to run Ubuntu
Vivid inside an unprivileged container. The commands I used to setup my
container to reproduce this bug are the following ones (executed under
the superuser account). The superuser account owns 65536 sub UIDs
starting at 755360.

HTTP_PROXY=apt lxc-create -B btrfs -t ubuntu -n ubuntu-utopic -- -r utopic --packages lxc,avahi-daemon,avahi-autoipd,avahi-dnsconfd,libnss-mdns
uidmapshift -b /var/lib/lxc/ubuntu-utopic/rootfs 0 755360 65536
chown 755360:755360 /var/lib/lxc/ubuntu-utopic
cat > /var/lib/lxc/ubuntu-utopic/config << EOF
# Template used to create this container: /usr/share/lxc/templates/lxc-ubuntu
# Parameters passed to the template: -r utopic --packages lxc,avahi-daemon,avahi-autoipd,avahi-dnsconfd,libnss-mdns
# For additional config options, please look at lxc.container.conf(5)

# Common configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.include = /usr/share/lxc/config/ubuntu.userns.conf

# Container specific configuration
lxc.rootfs = /var/lib/lxc/ubuntu-utopic/rootfs
lxc.mount = /var/lib/lxc/ubuntu-utopic/fstab
lxc.utsname = ubuntu-utopic
lxc.arch = amd64
lxc.id_map = u 0 755360 65536
lxc.id_map = g 0 755360 65536

# Network configuration
lxc.network.type = veth
lxc.network.link = lxcbr0
lxc.network.flags = up
EOF
lxc-start -n ubuntu-utopic

Inside the container, I rebuilt the Avahi packages to make some tests :

sudo -s
sed -ri 'p;s#^deb (.*)$#deb-src \1#' /etc/apt/sources.list
apt-get update
apt-get install dpkg-dev gdb
apt-get source avahi-daemon
apt-get build-dep avahi-daemon
cd avahi-0.6.31
…
dpkg-buildpackage -us -uc
dpkg -i ../*.deb

Feel free to ask me if you need more informations.

Cheers

Yann


Le mercredi 01 avril 2015 à 11:25 +0800, Trent Lloyd a écrit :
> Hi Yann,
> 
> Can you tell me what value of cred->uid you are actually getting 
> inside these containers? I wonder if somehow you are getting the 
> unmapped value.
> I assume that inside the container running “Id” shows 0, but outside 
> the container you see it remapped to another id?
> 
> If you can confirm the lxc version, and possibly supply a config (or 
> as much info as possible) I can reproduce with, that would be great.
> 
> Cheers,
> Trent
> 
> > On 6 Feb 2015, at 4:23 pm, Yann Soubeyrand <
> > ysoubeyrand at adeneo-embedded.com> wrote:
> > 
> > Hi,
> > 
> > Avahi daemon doesn't work inside an unprivileged container, more
> > precisely inside a container where the uid 0 is mapped to an uid 
> > other
> > than 0.
> > 
> > I identified the line where the problem occurs in the Avahi 
> > sources:
> > http://git.0pointer.net/avahi.git/tree/avahi-core/netlink.c#n85.
> > 
> > I don't know if it's a bug of Avahi or if it's a bug inside the 
> > kernel.
> > My guess is that it's the latter one but I'm not sure. I think that 
> > the
> > kernel passes the credentials mapped to zero when it's the sender 
> > of the
> > message whereas it should pass all zero credentials in this case. 
> > But I
> > didn't read the code of netlink and it's purely speculation. Also, 
> > I
> > wonder if it could not introduce security flaws doing so.
> > 
> > Feel free to ask me if you need further information or if you need 
> > me to
> > be clearer in my explanations ;-)
> > 
> > I'm using Debian Sid as my host system (I tried 3.16 and 3.18 
> > kernels)
> > and Ubuntu Vivid inside my container.
> > 
> > Cheers
> > 
> > 
> > 

-- Linux software engineer
Adeneo Embedded4 chemin du Ruisseau69130 ÉcullyFrance
+33 4 72 18 08 40


More information about the avahi mailing list