From: cpebenito@tresys.com (Christopher J. PeBenito)
To: refpolicy@oss.tresys.com
Subject: [refpolicy] [PATCH 8/34]: patch to allow the devicekit module to work with dbus
Date: Tue, 08 Mar 2011 10:46:39 -0500 [thread overview]
Message-ID: <4D764F5F.9050908@tresys.com> (raw)
In-Reply-To: <201102242058.p1OKw5AO032222@vivaldi01.register.it>
Forgot to reply to all...
On 02/24/11 15:58, Guido Trentalancia wrote:
> On Wed, 23/02/2011 at 09.16 -0500, Christopher J. PeBenito wrote:
>> On 02/16/11 01:05, Guido Trentalancia wrote:
>>> This patch adds two new interfaces (one for the kernel and the
>>> other for mount). It then allows dbus chat between dbus and
>>> devicekit and between xdm and devicekit. It also adds some
>>> permissions needed to run devicekit.
>>>
>>> diff -pruN refpolicy-git-15022011-new-before-modification/policy/modules/kernel/kernel.if refpolicy-git-15022011-new-modified/policy/modules/kernel/kernel.if
>>> --- refpolicy-git-15022011-new-before-modification/policy/modules/kernel/kernel.if 2011-01-24 00:32:54.978503593 +0100
>>> +++ refpolicy-git-15022011-new-modified/policy/modules/kernel/kernel.if 2011-02-15 22:58:46.166838136 +0100
>>> @@ -1893,6 +1893,24 @@ interface(`kernel_rw_kernel_sysctl',`
>>>
>>> ########################################
>>> ## <summary>
>>> +## Allow caller to search filesystem sysctls.
>>> +## </summary>
>>> +## <param name="domain">
>>> +## <summary>
>>> +## Domain allowed access.
>>> +## </summary>
>>> +## </param>
>>> +#
>>> +interface(`kernel_search_fs_sysctl',`
>>> + gen_require(`
>>> + type proc_t, sysctl_t, sysctl_fs_t;
>>> + ')
>>> +
>>> + search_dirs_pattern($1, { proc_t sysctl_t }, sysctl_fs_t)
>>> +')
>>> +
>>> +########################################
>>> +## <summary>
>>> ## Read filesystem sysctls.
>>> ## </summary>
>>> ## <param name="domain">
>>> diff -pruN refpolicy-git-15022011-new-before-modification/policy/modules/services/dbus.te refpolicy-git-15022011-new-modified/policy/modules/services/dbus.te
>>> --- refpolicy-git-15022011-new-before-modification/policy/modules/services/dbus.te 2011-02-15 22:53:52.507511721 +0100
>>> +++ refpolicy-git-15022011-new-modified/policy/modules/services/dbus.te 2011-02-15 22:58:46.169838637 +0100
>>> @@ -145,6 +145,11 @@ optional_policy(`
>>> ')
>>>
>>> optional_policy(`
>>> + devicekit_dbus_chat_disk(system_dbusd_t)
>>> + devicekit_dbus_chat_power(system_dbusd_t)
>>> +')
>>> +
>>> +optional_policy(`
>>> policykit_dbus_chat(system_dbusd_t)
>>> policykit_domtrans_auth(system_dbusd_t)
>>> policykit_search_lib(system_dbusd_t)
>>> diff -pruN refpolicy-git-15022011-new-before-modification/policy/modules/services/devicekit.te refpolicy-git-15022011-new-modified/policy/modules/services/devicekit.te
>>> --- refpolicy-git-15022011-new-before-modification/policy/modules/services/devicekit.te 2011-01-08 19:07:21.241741196 +0100
>>> +++ refpolicy-git-15022011-new-modified/policy/modules/services/devicekit.te 2011-02-15 23:04:04.993242115 +0100
[cut]
>>> kernel_search_debugfs(devicekit_power_t)
>>> +kernel_search_fs_sysctl(devicekit_power_t)
>>> +kernel_setsched(devicekit_power_t)
>>> kernel_write_proc_files(devicekit_power_t)
>>>
>>> corecmd_exec_bin(devicekit_power_t)
>>> @@ -207,6 +212,7 @@ consoletype_exec(devicekit_power_t)
>>>
>>> domain_read_all_domains_state(devicekit_power_t)
>>>
>>> +dev_getattr_apm_bios_dev(devicekit_power_t)
>>> dev_read_input(devicekit_power_t)
>>> dev_rw_generic_usb_dev(devicekit_power_t)
>>> dev_rw_generic_chr_files(devicekit_power_t)
>>> @@ -216,8 +222,11 @@ dev_rw_sysfs(devicekit_power_t)
>>> files_read_kernel_img(devicekit_power_t)
>>> files_read_etc_files(devicekit_power_t)
>>> files_read_usr_files(devicekit_power_t)
>>> +files_rw_etc_runtime_files(devicekit_power_t)
>>
>> Which files are being written?
>
> I think it's /etc/mtab.
>
> allow devicekit_power_t etc_runtime_t:file { read getattr ioctl write };
>
> And there are also problems in the contexts because there might be
> files /etc/mtab~[0-9]{3,4} produced at runtime that don't get labeled
> etc_runtime_t but instead fall back to etc_t which creates problems for
> write:
>
> type=AVC msg=audit(1298587357.352:19): avc: denied { link } for
> pid=2837 comm="mount" name="mtab~2837" dev=dm-1 ino=1216
> scontext=system_u:system_r:mount_t:s0-s0:c0.c1023
> tcontext=system_u:object_r:etc_t:s0 tclass=file
> type=AVC msg=audit(1298587357.358:20): avc: denied { unlink } for
> pid=2837 comm="mount" name="mtab~2837" dev=dm-1 ino=1216
> scontext=system_u:system_r:mount_t:s0-s0:c0.c1023
> tcontext=system_u:object_r:etc_t:s0 tclass=file
>
> The above needs to get fixed in policy/modules/kernel/files.fc. Can you
> do some editing on the fly ?
I suspect this is due to the below /bin/mount incorrectly running in
devicekit_power_t.
>>> +fs_getattr_xattr_fs(devicekit_power_t)
>>> fs_list_inotifyfs(devicekit_power_t)
>>> +fs_remount_xattr_fs(devicekit_power_t)
>>
>> Remounting filesystems? Sounds suspect.
>
> allow devicekit_power_t fs_t:filesystem remount;
>
> type=AVC msg=audit(1298580943.963:9): avc: denied { remount } for
> pid=2679 comm="mount"
> scontext=system_u:system_r:devicekit_power_t:s0-s0:c0.c1023
> tcontext=system_u:object_r:fs_t:s0 tclass=filesystem
> type=SYSCALL msg=audit(1298580943.963:9): arch=40000003 syscall=21
> success=no exit=-13 a0=b797a6f0 a1=b797a718 a2=b797a728 a3=c0ed0020
> items=0 ppid=2678 pid=2679 auid=4294967295 uid=0 gid=0 euid=0 suid=0
> fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="mount"
> exe="/bin/mount" subj=system_u:system_r:devicekit_power_t:s0-s0:c0.c1023
The fact that this is actually /bin/mount suggests there should be a
domtrans to mount_t.
> key=(null)
> type=AVC msg=audit(1298580944.756:10): avc: denied { remount } for
> pid=2680 comm="mount"
> scontext=system_u:system_r:devicekit_power_t:s0-s0:c0.c1023
> tcontext=system_u:object_r:fs_t:s0 tclass=filesystem
>
> The process does not exist anymore, maybe it's a script (it could
> be /sbin/mount.tmpfs that I took from Fedora which has got the proper
> label mount_exec_t). It happens after boot-up, after policykit has
> started but before a graphical login (or any other sort of login).
>
> If it is problematic then perhaps it can be left out for the time being.
> Everything else even without it seems to be working fine.
>
>>> term_use_all_terms(devicekit_power_t)
>>>
>>> @@ -230,6 +239,9 @@ sysnet_domtrans_ifconfig(devicekit_power
>>>
>>> userdom_read_all_users_state(devicekit_power_t)
>>>
>>> +mount_exec(devicekit_power_t)
>>> +mount_getattr_executable_file(devicekit_power_t)
>>
>> This getattr rule is a subset of the exec rule.
>
> allow devicekit_power_t mount_exec_t:file { getattr read open execute
> execute_no_trans };
>
> If it was a subset then we could get rid of the redundant one. But it
> seems to me that mount_exec() hasn't got
> corecmd_search_bin(devicekit_power_t) and allow devicekit_power_t
> mount_exec_t:file getattr_file_perms. The two interfaces seem to deal
> with disjoint sets of permissions...
>
> You were trying to improve style ? I suspect it cannot be done at this
> time, please double-check.
In that case, add the corecmd_search_bin() to the mount_exec() interface.
--
Chris PeBenito
Tresys Technology, LLC
www.tresys.com | oss.tresys.com
next parent reply other threads:[~2011-03-08 15:46 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <201102242058.p1OKw5AO032222@vivaldi01.register.it>
2011-03-08 15:46 ` Christopher J. PeBenito [this message]
2011-02-16 6:05 [refpolicy] [PATCH 8/34]: patch to allow the devicekit module to work with dbus Guido Trentalancia
2011-02-23 14:16 ` Christopher J. PeBenito
2011-02-24 22:51 ` Guido Trentalancia
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D764F5F.9050908@tresys.com \
--to=cpebenito@tresys.com \
--cc=refpolicy@oss.tresys.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.