diff --git a/modules/module-list.nix b/modules/module-list.nix index 3ce8a6fb969..e16e3279f9d 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -47,6 +47,7 @@ ./programs/wvdial.nix ./rename.nix ./security/apparmor.nix + ./security/apparmor-suid.nix ./security/ca.nix ./security/pam.nix ./security/pam_usb.nix diff --git a/modules/security/apparmor-suid.nix b/modules/security/apparmor-suid.nix new file mode 100644 index 00000000000..4b3d3bbdc00 --- /dev/null +++ b/modules/security/apparmor-suid.nix @@ -0,0 +1,42 @@ +{pkgs, config, ...}: +let + cfg = config.security.apparmor; +in +with pkgs.lib; +{ + + options.security.apparmor.confineSUIDApplications = mkOption { + default = true; + description = '' + Install AppArmor profiles for commonly-used SUID application + to mitigate potential privilege escalation attacks due to bugs + in such applications. + + Currently available profiles: ping + ''; + }; + + config = mkIf (cfg.confineSUIDApplications) { + security.apparmor.profiles = [ (pkgs.writeText "ping" '' + #include + /var/setuid-wrappers/ping { + #include + #include + #include + + capability net_raw, + capability setuid, + network inet raw, + + ${pkgs.glibc}/lib/*.so mr, + /var/setuid-wrappers/ping.real mixr, + ${pkgs.iputils}/sbin/ping mixr, + #/etc/modules.conf r, + + ## Site-specific additions and overrides. See local/README for details. + ##include + } + '') ]; + }; + +}