Hi John et al, John Johansen: > On 08/09/2017 02:31 PM, intrigeri wrote: >> Moritz Mühlenhoff: >>> Christian Seiler <christ...@iwakd.de> schrieb: >>>> Another thing to consider: if a profile is too restrictive, but the >>>> part that is too restrictive isn't in the upstream kernel yet, then >>>> things could break if you upgrade the kernel to a newer version from >>>> e.g. backports later on. How would you deal with that kind of >>>> breakage during the lifetime of a stable release? >> >>> Agreed, that was pretty much my concern. >> >> Thank you so much for highlighting problems I had missed! :) >> >> A simple, but not entirely satisfying answer is: >> >> 1. Gather info about how real this problem has been in practice for >> Ubuntu: they frequently update their kernel for various already >> released distros with the latest AppArmor bits. I think they >> occasionally have to update other packages accordingly to adjust >> AppArmor policy. I don't know how often this happens. I'll ask them >> to compile a list of such stable updates.
> [...] > The question specifically asks about, an updated kernel with a policy > that was developed under a different feature set, suddenly breaking > when a new kernel is run on an older system. Right. Below you elaborate about ABI compatibility between the kernel, userspace and policy. Thanks, I've learned a lot! But even more specifically, the question was about policy updates mandated to avoid breaking *confined applications* when upgrading to a kernel that mediates more interfaces than the one in Debian stable. Christian Seiler put it clearly (quoted above) but here's a more practical example: say 1. D-Bus mediation lands in Linux 4.15 (totally made up, but this would be nice!); 2. I run Debian Stretch; 3. I have to run Linux 4.15+ from stretch-backports (e.g. on a shiny laptop that needs recent drivers). Then any AppArmor profile shipped in Debian Stretch that was developed without D-Bus mediation in mind can potentially start breaking the application it confines. So our questions to Ubuntu & other distros are: How have you been dealing with such problems in the past few years? How often did you have to update packages in a stable release in order to fix them? Now, simply enabling AppArmor by default during the Buster development cycle will give us some of the answers: given many AppArmor features will land in Linux in the next months/years, we *will* notice if our policy is outdated :) >>> Ideally the feature set used would also be controlled by the >>> apparmor userspace side. >> >> If we need to go this far: apparmor_parser has a --features-file >> option that we could leverage to tie the feature set being used to >> something else than the version of the running kernel, e.g. >> with a file shipped in a new package built from src:linux with >> appropriate versioned dependencies. > the feature file can indeed be specified on the command line using > --feature-file, but from a support pov I think specifying it in the > config file > apparmor/subdomain.conf Do you mean /etc/apparmor/parser.conf? I can't find anything related in subdomain.conf(5). > would be better as then you don't have to mess with initscripts, unit > files, etc. Absolutely. I guess we would want a package built from src:apparmor to ship that conffile containing "features-file XYZ", where XYZ encodes the feature set supported by the policy in the version of Debian this src:apparmor was built for. Which raises a number of technical and policy questions, not all of them trivial, so I want to first check whether we really need to go that far (see above). > 4.14 - isn't fully decided yet, but it should pickup everything except > maybe the extended unix socket mediation Just curious: does this "everything except" include D-Bus mediation? > There is recognition that this was the wrong approach and there is > now an upstream first policy. This, along with the vivid collaboration I see between the GNOME and Ubuntu projects these days, is very good news :) Cheers, -- intrigeri