Kernel Development
From SELinux Wiki
(Difference between revisions)
| Revision as of 10:08, 22 July 2009 (edit) JamesMorris (Talk | contribs) (→To Do List) ← Previous diff |
Current revision (23:05, 20 April 2010) (edit) (undo) JamesMorris (Talk | contribs) (→To Do List) |
||
| (7 intermediate revisions not shown.) | |||
| Line 1: | Line 1: | ||
| == To Do List == | == To Do List == | ||
| + | |||
| + | * Fix error propagation for policydb_read to reflect actual errors rather than the default of -EINVAL. | ||
| + | |||
| + | * Reduce SELinux memory footprint, both static and dynamic. | ||
| + | |||
| + | * Improve scripts/selinux/mdp to generate a more useful minimal policy as a starting point. Also make it more flexible. | ||
| + | |||
| + | * Dynamic discovery of initial SIDs, similar to dynamic discovery of classes/perms. Map kernel initial SIDs to policy initial SIDs by string name rather than requiring identical index values, handle unknown initial SIDs cleanly (map to unlabeled), and allow future extensibility without causing problems (start regular SIDs at some fixed offset, e.g. 100, or start from the highest legal value and decrement, so that policy reload that changes the number of initial SIDs won't affect them). | ||
| + | |||
| + | * Distinguish access(2) from open(2) auditing (see | ||
| + | https://bugzilla.redhat.com/show_bug.cgi?id=495211). | ||
| * Audit hooks to ensure that we don't have any more cases where DAC can be weakened. | * Audit hooks to ensure that we don't have any more cases where DAC can be weakened. | ||
| Line 5: | Line 16: | ||
| * Fix the performance issue apparently related to syscall audit which Linus keeps whining about. | * Fix the performance issue apparently related to syscall audit which Linus keeps whining about. | ||
| - | * Add support for SCTP. | + | * Add support for SCTP (see https://bugzilla.redhat.com/show_bug.cgi?id=517676). |
| * Fix signal inheritance controls (possibly drop some or all, or only enforce in policy for certain domains). | * Fix signal inheritance controls (possibly drop some or all, or only enforce in policy for certain domains). | ||
| * UBIFS support. | * UBIFS support. | ||
| - | |||
| - | * Audit for correctness when CONFIG_BUG=n (patches posted, http://marc.info/?l=selinux&m=123446905808001&w=2). | ||
| * Add LTP tests for recent kernel changes. | * Add LTP tests for recent kernel changes. | ||
| * Eliminate the need for secondary_ops altogether by providing LSM support for reverting to the original (capability) security module. | * Eliminate the need for secondary_ops altogether by providing LSM support for reverting to the original (capability) security module. | ||
| - | |||
| - | * avc_init() calls kmem_cache_create() but this is not freed if we call selinux_disable() from init | ||
| * Reduce size of critical sections and use of GFP_ATOMIC. | * Reduce size of critical sections and use of GFP_ATOMIC. | ||
| Line 26: | Line 33: | ||
| * crfs ? | * crfs ? | ||
| - | |||
| - | * cap_override class<sup>2</sup> (rfc patch posted, needs re-base and extension for 64-bit caps) | ||
| - | |||
| - | * Compile out LSM hooks & allow SELinux to be linked directly. | ||
| * Automate checking for new syscalls in kernels (-mm, -rc etc). | * Automate checking for new syscalls in kernels (-mm, -rc etc). | ||
| - | * fine grained | + | * fine-grained labeling for usbfs and other pseudo filesystems of interest |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| * NFSv4 support (in progress) | * NFSv4 support (in progress) | ||
| Line 54: | Line 51: | ||
| * CIFS support for single-context clients (also has xattrs & Karl says it's better than NFS). | * CIFS support for single-context clients (also has xattrs & Karl says it's better than NFS). | ||
| - | |||
| - | * Investigate integration with integrity measurement (in progress IBM and NSA) | ||
| * Crypto policy for domains & object handling | * Crypto policy for domains & object handling | ||
| Line 67: | Line 62: | ||
| * move *mem permissions to new memprotect class. Bump policy version. | * move *mem permissions to new memprotect class. Bump policy version. | ||
| - | + | * better support for FS whose labelling behaviour is not specified in policy. If nothing from policy just test for xattr support and use it if it is there (RH in progress, patch reverted due to fuse deadlocks). | |
| - | + | ||
| - | * better support for FS whose labelling behaviour is not specified in policy. If nothing from policy just test for xattr support and use it if it is there (RH in progress, patch reverted due to | + | |
| * memory leak detector pops on policy reload. probably due to {new,old}policydb being on stack and memcpy'd into the data section policydb (aka probably false positive) | * memory leak detector pops on policy reload. probably due to {new,old}policydb being on stack and memcpy'd into the data section policydb (aka probably false positive) | ||
| - | + | * better validation of classes/perms on policy reload. Warn if any permissions are defined in a kernel class in the policy that are not defined in the kernel's classmap. | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| ''Notes:'' | ''Notes:'' | ||
| - | |||
| - | <p><sup>1</sup> Provide a static inline helper for all FMODE_READ/FMODE_WRITE checks that also includes the corresponding security_file_permission() call to help ensure that they always happen together in the future. Possibly even rolling up rw_verify_area() checking as well into it. | ||
| - | </p> | ||
| <p> | <p> | ||
| - | <sup>5</sup> We may wish to consider removing this restriction altogether, and/or | ||
| - | making it subject to a permission check. Per-thread context can be | ||
| - | useful for multi-threaded server effectively acting as a userspace | ||
| - | object manager but wanting to set kernel context to avoid race | ||
| - | conditions on file accesses, ala the samba file server case. | ||
| </p> | </p> | ||
| - | <p> | ||
| - | <sup>6</sup> Seems like we ought to handle setxattr() consistently on filesystems | ||
| - | that do not support labeling. Mountpoint labeling triggers EOPNOTSUPP. | ||
| - | Genfscon does not. | ||
| - | </p> | ||
| - | <p> | ||
| - | <sup>7</sup> [http://lkml.org/lkml/2008/11/17/351 lkml post] | ||
| - | </p> | ||
| - | |||
| == Resources == | == Resources == | ||
Current revision
[edit] To Do List
- Fix error propagation for policydb_read to reflect actual errors rather than the default of -EINVAL.
- Reduce SELinux memory footprint, both static and dynamic.
- Improve scripts/selinux/mdp to generate a more useful minimal policy as a starting point. Also make it more flexible.
- Dynamic discovery of initial SIDs, similar to dynamic discovery of classes/perms. Map kernel initial SIDs to policy initial SIDs by string name rather than requiring identical index values, handle unknown initial SIDs cleanly (map to unlabeled), and allow future extensibility without causing problems (start regular SIDs at some fixed offset, e.g. 100, or start from the highest legal value and decrement, so that policy reload that changes the number of initial SIDs won't affect them).
- Distinguish access(2) from open(2) auditing (see
https://bugzilla.redhat.com/show_bug.cgi?id=495211).
- Audit hooks to ensure that we don't have any more cases where DAC can be weakened.
- Fix the performance issue apparently related to syscall audit which Linus keeps whining about.
- Add support for SCTP (see https://bugzilla.redhat.com/show_bug.cgi?id=517676).
- Fix signal inheritance controls (possibly drop some or all, or only enforce in policy for certain domains).
- UBIFS support.
- Add LTP tests for recent kernel changes.
- Eliminate the need for secondary_ops altogether by providing LSM support for reverting to the original (capability) security module.
- Reduce size of critical sections and use of GFP_ATOMIC.
- Investigate security policy for cgroups.
- Add a 'map' check on mmap and mprotect so that we can distinguish memory mapped access (since it has different implications for revocation).
- crfs ?
- Automate checking for new syscalls in kernels (-mm, -rc etc).
- fine-grained labeling for usbfs and other pseudo filesystems of interest
- NFSv4 support (in progress)
- Revoke memory-mapped file access upon policy change or setxattr.
- Real device labeling and access control (i.e. bind a label to a device in the kernel irrespective of what device node is used to access it so that a process that can create any device nodes at all can't effectively bypass all device access controls just by creating an arbitrary node to any device in a type accessible to it),
- Full APIs for getting and setting security contexts of sockets and IPC objects. Ensure that socket context is kept consistent on socket inode and sock structures when changed.
- Polyinstantiated ports
- Increased granularity for Generic Netlink
- CIFS support for single-context clients (also has xattrs & Karl says it's better than NFS).
- Crypto policy for domains & object handling
- Expand LTP as a full regression testuite for every permission & class
- Redo performance testing & profiling
- Better controls for posix message queues (?)
- move *mem permissions to new memprotect class. Bump policy version.
- better support for FS whose labelling behaviour is not specified in policy. If nothing from policy just test for xattr support and use it if it is there (RH in progress, patch reverted due to fuse deadlocks).
- memory leak detector pops on policy reload. probably due to {new,old}policydb being on stack and memcpy'd into the data section policydb (aka probably false positive)
- better validation of classes/perms on policy reload. Warn if any permissions are defined in a kernel class in the policy that are not defined in the kernel's classmap.
Notes:
[edit] Resources
- Adding New Permissions How to add a new permission to SELinux
- kerneloops.org oopses relating to SELinux.
