This bug was fixed in the package rsyslog - 8.2406.0-1ubuntu3 --------------- rsyslog (8.2406.0-1ubuntu3) plucky; urgency=medium
* d/usr.sbin.rsyslogd: add AppArmor rule to allow the imjournal module to work (LP: #2073628) * d/usr.sbin.rsyslogd: add AppArmor rule to allow access to disable_ipv6 inside /proc (LP: #2061726) -- Andreas Hasenack <andr...@canonical.com> Fri, 31 Jan 2025 16:48:57 -0300 ** Changed in: rsyslog (Ubuntu Plucky) Status: In Progress => Fix Released -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to apparmor in Ubuntu. https://bugs.launchpad.net/bugs/2061726 Title: rsyslog apparmor denial on reading /proc/sys/net/ipv6/conf/all/disable_ipv6 Status in apparmor package in Ubuntu: Invalid Status in rsyslog package in Ubuntu: Fix Released Status in apparmor source package in Noble: Invalid Status in rsyslog source package in Noble: In Progress Status in apparmor source package in Oracular: Invalid Status in rsyslog source package in Oracular: In Progress Status in apparmor source package in Plucky: Invalid Status in rsyslog source package in Plucky: Fix Released Bug description: [ Impact ] rsyslog has an apparmor profile that we have been fine tuning as ubuntu releases go by. Every now and then, a new rule needs to be added. This case in particular isn't breaking anything as far as we can see, but it creates noise in the logs. By itself it's not worth an SRU, but other apparmor fixes are accumulating, and will be fixed in the same upload. One scenario where rsyslog was found to be blocked from accessing /proc/sys/net/ipv6/conf/all/disable_ipv6 is when: a) libnss-myhostname (from systemd) is installed; b) is reached via /etc/nsswitch.conf. Depending on the ubuntu release, the order in which myhostname inserts itself into /etc/nsswitch.conf is different. In Oracular and Plucky, it's: hosts: files myhostname dns In Noble, it's: hosts: files dns myhostname For the test plan, we will make sure myhostname is reached. The reason rsyslog is affected by this, is because the nss module is loaded into the process's space, and libsystemd as well, and that's where the code reaching out to disable_ipv6 is. [ Test Plan ] - Deploy the ubuntu release under test in a VM - install libnss-myhostname sudo apt install libnss-myhostname - make sure the hosts line in /etc/nsswitch.conf has myhostname after files and before dns, like this: hosts: files myhostname dns - open a terminal with dmesg, running like this: dmesg -wT | grep apparmor | grep rsyslog - in another terminal, restart rsyslog: sudo systemctl restart rsyslog - in an affected system, there will be an apparmor DENIED message in the dmesg output: apparmor="DENIED" operation="open" class="file" profile="rsyslogd" name="/proc/sys/net/ipv6/conf/all/disable_ipv6" pid=2514 comm="rsyslogd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0 - in a system with the updated rsyslog package from proposed installed, there will be no such DENIED message [ Where problems could occur ] Everytime an apparmor rule is added, one has to wonder about the security implications. Or, if it's a new rule blocking something, what else could go wrong. In this case, we are allowing read access to the disable_ipv6 /proc file, which just tells whether ipv6 was disabled for all interfaces or not. Before rsyslog (via libsystemd) was blocked from reading this file, and nothing else bad happened that we could see. Now, reading will be allowed, and maybe the code will take some decision based on what it reads, and this could have other consequences. Maybe it would try to write to it, but since rsyslog runs as non-root, that would already not be allowed, regardless of apparmor rules. There is no "disable_ipv6" string match in the rsyslog code: this comes entirely from systemd. There is this bit in the systemd NEWS file: * systemd-networkd's handling of the kernel's disable_ipv6 sysctl is simplified: systemd-networkd will disable the sysctl (enable IPv6) if IPv6 configuration (static or DHCPv6) was found for a given interface. It will not touch the sysctl otherwise. So there is a case for systemd-networkd writing to that file, but that's the systemd-networkd daemon, not just the library making some decision. And that would be blocked if rsyslog were to attempt that, as it doesn't run as root. [ Other Info ] Other apparmor rules are being added to rsyslog via this upload, closing other bugs: - LP: #2056768 for noble only - LP: #2073628 for noble, oracular, and plucky [ Original Description ] One of our Cockpit integration tests [1] spotted an AppArmor regression in rsyslogd. This is coincidental, the test passes and it doesn't do anything with rsyslogd -- just something happens to happen in the background to trigger this (and I can actually reproduce it locally quite reliably). Mar 08 10:48:20 m1.cockpit.lan systemd[1]: dpkg-db-backup.service: Deactivated successfully. Mar 08 10:48:20 m1.cockpit.lan systemd[1]: Finished dpkg-db-backup.service - Daily dpkg database backup service. Mar 08 10:48:20 m1.cockpit.lan systemd[1]: rsyslog.service: Sent signal SIGHUP to main process 752 (rsyslogd) on client request. Mar 08 10:48:20 m1.cockpit.lan kernel: audit: type=1400 audit(1615200500.418:125): apparmor="DENIED" operation="open" class="file" profile="rsyslogd" name="/proc/sys/net/ipv6/conf/all/disable_ipv6" pid=752 comm="rsyslogd" requested_mask="r" denied_mask="r" fsuid=102 ouid=0 Mar 08 10:48:20 m1.cockpit.lan kernel: audit: type=1400 audit(1615200500.418:126): apparmor="DENIED" operation="open" class="file" profile="rsyslogd" name="/proc/sys/net/ipv6/conf/all/disable_ipv6" pid=752 comm="rsyslogd" requested_mask="r" denied_mask="r" fsuid=102 ouid=0 This happens on current Ubuntu 24.04 LTS noble devel, rsyslog 8.2312.0-3ubuntu8 and apparmor 4.0.0-beta3-0ubuntu3. [1] https://cockpit-logs.us-east-1.linodeobjects.com/pull-20317-ce39e07e-20240415-204952-ubuntu-stable-other/log.html#152 [2] https://cockpit-logs.us-east-1.linodeobjects.com/pull-20317-ce39e07e-20240415-204952-ubuntu-stable-other/TestHistoryMetrics-testEvents-ubuntu-stable-127.0.0.2-2901-FAIL.log.gz To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/2061726/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp