samba profile: missing rule for mkdir /var/cache/samba/printing
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
apparmor (Ubuntu) |
Fix Released
|
Low
|
Andreas Hasenack | ||
Kinetic |
Fix Committed
|
Low
|
Andreas Hasenack |
Bug Description
[ Impact ]
Users who chose to:
a) install apparmor-profiles (a package with extra optional apparmor profiles, including samba)
b) change the samba related profiles from complain (the default) to enforce mode
will find out that sharing a printing in samba and using it won't work.
In by itself this is *definitely* not worth an SRU for apparmor, which impacts all users of Ubuntu (because it's installed everywhere). But, if apparmor is to be updated for another more important reason, then this fix could be bundled together with it. Therefore I'm adding the block-proposed-
[ Test Plan ]
sudo apt install apparmor-profiles apparmor-utils apparmor-
sudo apt install samba smbclient cups cups-client
Set a password for the samba "root" user:
printf "root\nroot\n" | sudo smbpasswd -a root
Create a fake printer:
sudo lpadmin -p testprinter -E -v /dev/null
Check it's there:
sudo lpstat -l -p testprinter
Probe it via samba:
rpcclient -Uroot%root localhost -c 'getprinter testprinter 2'
(some printer related output, or even an error, doesn't matter)
Check dmesg and look for an apparmor ALLOWED message:
[497031.827841] audit: type=1400 audit(166921518
With the updated package, there should be no apparmor message for samba-rpcd-spoolss.
NOTE: since, for this test, we are not switching the apparmor profile to enforce mode, this means that the mkdir attempted by rpcd_spoolss will succeed, and if you try the rpcclient command one more time, there will be no further apparmor messages about it in the logs.
[ Where problems could occur ]
This change is adding an apparmor rule to a samba-related apparmor profile. Without this rule (and with the apparmor profile in confine mode), then printing does not work, so regressing that aspect of it is hard.
Maybe some exotic future security vulnerability could take advantage of this new apparmor rule which allows writing to (and therefore deleting from) /var/cache/
What's more likely perhaps (but still rare) is that an apparmor upgrade, which triggers all apparmor profiles to be reloaded, would find some error in an existing profile and fail to load it, and perhaps stop loading all other profiles after that, perhaps leaving the system without confinement. But this should be caught by the upgrade process since postinst would exit non-zero (hopefully).
[ Other Info ]
Not at this time.
[Original Description]
After the fix for bug #1990692, one more rule is needed it seems.
I put all samba profiles in enforce mode, and when I ran that final rpcclient command, got an error and an apparmor denied message:
Prep:
sudo apt install apparmor-profiles apparmor-utils apparmor-
sudo apt install samba smbclient cups cups-client
Set a password for the samba "root" user:
printf "root\nroot\n" | sudo smbpasswd -a root
Create a fake printer:
sudo lpadmin -p testprinter -E -v /dev/null
Check it's there:
sudo lpstat -l -p testprinter
$ rpcclient -Uroot%root localhost -c 'getprinter testprinter 2'
cli_rpc_
do_cmd: Could not initialise spoolss. Error was NT_STATUS_
[qua out 19 14:42:36 2022] audit: type=1400 audit(166620135
And indeed, that directory wasn't created:
$ l /var/cache/
ls: cannot access '/var/cache/
$ l /var/cache/samba/
total 16K
drwxr-xr-x 1 root root 48 Oct 19 17:42 .
drwxr-xr-x 1 root root 170 Oct 19 17:41 ..
-rw-r--r-- 1 root root 166 Oct 19 17:42 browse.dat
-rw-r--r-- 1 root root 8.7K Oct 19 17:42 smbprofile.tdb
Related branches
- git-ubuntu bot: Approve
- Bryce Harrington (community): Approve
- Canonical Server Reporter: Pending requested
-
Diff: 58 lines (+36/-0)3 files modifieddebian/changelog (+7/-0)
debian/patches/series (+1/-0)
debian/patches/ubuntu/samba-rpcd-spoolss.patch (+28/-0)
- git-ubuntu bot: Approve
- Bryce Harrington (community): Approve
- Canonical Server Reporter: Pending requested
-
Diff: 58 lines (+36/-0)3 files modifieddebian/changelog (+7/-0)
debian/patches/series (+1/-0)
debian/patches/ubuntu/samba-rpcd-spoolss.patch (+28/-0)
description: | updated |
description: | updated |
Changed in apparmor (Ubuntu): | |
assignee: | nobody → Andreas Hasenack (ahasenack) |
status: | New → In Progress |
Changed in apparmor (Ubuntu Kinetic): | |
importance: | Undecided → Critical |
importance: | Critical → Undecided |
status: | New → In Progress |
importance: | Undecided → Wishlist |
importance: | Wishlist → Low |
Changed in apparmor (Ubuntu): | |
importance: | Undecided → Low |
Changed in apparmor (Ubuntu Kinetic): | |
assignee: | nobody → Andreas Hasenack (ahasenack) |
tags: | added: block-proposed-kinetic |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
This looks like is enough to address it:
--- samba-rpcd- spoolss. orig 2022-10-19 17:48:42.767775584 +0000
+++ samba-rpcd-spoolss 2022-10-19 17:47:50.527693050 +0000
@@ -18,6 +18,7 @@
/usr/ lib*/samba/ {,samba/ }rpcd_spoolss mr, lib*/samba/ {,samba/ }samba- bgqd Px -> samba-bgqd, samba/printing/ rw, cache/samba/ printing/ *.tdb rwk, /samba/ samba-bgqd. pid rk,
/usr/
+ /var/cache/
/var/
@{run}