Linked by Thom Holwerda on Wed 5th Mar 2008 09:43 UTC, submitted by diegocg
Sun Solaris, OpenSolaris "OpenSolaris has launched a new project, Flexible Mandatory Access Control, to integrate the Flask/TE security scheme into their OS. This is the same underlying model implemented by SELinux, and follows other cross-platform Flask/TE integration projects such as SEDarwin and SEBSD. This is very exciting in terms of establishing compatible security across operating systems, particularly for Mandatory Access Control, which has traditionally been narrowly focused and generally incompatible. With FMAC, we're closer to seeing truly ubiquitous, cross-platform MAC security."
Thread beginning with comment 303491
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[3]: Trusted Solaris?
by sbergman27 on Wed 5th Mar 2008 13:47 UTC in reply to "RE[2]: Trusted Solaris?"
sbergman27
Member since:
2005-07-24

Well, the 12% (on x86 for reads) to 147% (on SH series processors for writes, and no that's not a typo) cpu overhead of SELinux is rather significant. (And that impacts heat dissipation and battery life as well, of course.) Not sure how this new OpenSolaris implementation will compare. I think the overhead is supposed to be somewhat lower in Linux kernel 2.6.24. We'll see, I guess.

My understanding is that one pays a performance overhead even with selinux "disabled", unless he manually adds "selinux=0" to the kernel boot params AND the option for SELinux to honor that boot param has been compiled in.

Edited 2008-03-05 13:58 UTC

Reply Parent Score: 6

RE[4]: Trusted Solaris?
by Bitterman on Wed 5th Mar 2008 14:35 in reply to "RE[3]: Trusted Solaris?"
Bitterman Member since:
2005-07-06

woh thanks i had never heard that but i'll take your word for it. that is a pretty bad performance hit. Personally i'll still deal with it cause i want some security infrastructure to get adopted. Open source has way, way too many programs on a machine. I mean look at debians repo's you got 20,000 different applications. That is ALOT of security bugs waiting to be found or already found and being exploited. There needs to be a wrapper in the middle to protect the machine from poor code. Weather it be Selinux or another type of MAC system, or stack protection I dont know or care, but there needs to be something between poor code and free reign of a machine. for now SElinux appears to be the one with the most active development and adoption.

Reply Parent Score: 1

RE[5]: Trusted Solaris?
by Method on Wed 5th Mar 2008 15:20 in reply to "RE[4]: Trusted Solaris?"
Method Member since:
2006-05-15

Those performance numbers came from a developer who made a patch that reduces it down to 1% and 11% (x86 and SH respectively) (http://marc.info/?l=selinux&m=118906566911337&w=2). The patch and those numbers were in the very same email so the poster knew of the effort to address it. Linux 2.6.24 has those patches so the performance issue is now addressed. This specific issue was only on file read/write revalidation.

Edited 2008-03-05 15:29 UTC

Reply Parent Score: 1

RE[4]: Trusted Solaris?
by PlatformAgnostic on Wed 5th Mar 2008 17:09 in reply to "RE[3]: Trusted Solaris?"
PlatformAgnostic Member since:
2006-01-02

Any idea why the cost is so high?

On Windows, we do the expensive security check when you open a handle (aka fd) and you are granted tbe desired rights until you close the handle. There is a cost when using handles of checking that the handle has been given the right needed for each operation, but it's a single AND and a comparison that happens in the handle table lookup codepath.

What does SELinux do that is more expensive?

Reply Parent Score: 3

RE[5]: Trusted Solaris?
by sbergman27 on Wed 5th Mar 2008 18:20 in reply to "RE[4]: Trusted Solaris?"
sbergman27 Member since:
2005-07-24

Any idea why the cost is so high?

In this case, apparently it was checking more frequently than necessary. From the email that Method and I were looking at:

I found a overhead in selinux_file_permission function.
This is a function that is called in read/write calls,
and does SELinux permission check.
SELinux checks permission both in open and read/write time.
Stephen Smalley sugessted that we can usually skip permission check
in selinux_file_permission.
By this patch,
permission check in selinux_file_permssion is done only when
- sid of task has changed after file open
- sid of inode has changed after file open
- policy load or boolean change happen after file open

Just how much work has actually gone into optimizing SELinux performance is unclear to me. The Fedora Core 5 SeLinux FAQ, which is the latest available, has this to say:

SELinux performance tuning continues to be a priority of the development team.

The "Unofficial SELinux FAQ" says:

Currently, the performance overhead is approximately 7%. There has been little effort to date to optimise the SELinux code for performance, and in some cases such as networking the impact may be higher. The SELinux development team is looking at improving performance. If you set "selinux=0" as a kernel boot option, SELinux will have no performance impact.

There has been quite a bit of work on the performance of SE Linux. In early 2005, SE Linux was optimised for machines with 32 or more CPUs. Recently changes have been made to the kernel code to reduce memory use (not in kernel.org or distribution kernels yet).

So, based upon that, while there has been little effort to date to optimize SELinux code for performance, there has been quite a bit of work on the performance of SE Linux. But those of us unfortunate enough to have fewer than 32 cores are SOL in any case. ;-)

The official SELinux FAQ is mum on the issue.

Edited 2008-03-05 18:32 UTC

Reply Parent Score: 3

RE[5]: Trusted Solaris?
by Method on Wed 5th Mar 2008 18:20 in reply to "RE[4]: Trusted Solaris?"
Method Member since:
2006-05-15

Any idea why the cost is so high?

On Windows, we do the expensive security check when you open a handle (aka fd) and you are granted tbe desired rights until you close the handle. There is a cost when using handles of checking that the handle has been given the right needed for each operation, but it's a single AND and a comparison that happens in the handle table lookup codepath.

What does SELinux do that is more expensive?


It use to revalidate read/write perms on every read and write so that if access were revoked, due to file relabeling, policy reload, an open file descriptor being passed to a domain that did not have read/write access or policy boolean change the access would be denied.

Now it still supports that but doesn't have to consult the policy each time because it keeps the policy sequence number, which is incremented and keeps track of relabels.

This is different than most other implementations because we wanted to support revocation and wanted to be able to fully understand, via policy, what domains could access what files. Unfortunately we can't fully support revocation due to the ability to mmap() files.

Edited 2008-03-05 18:24 UTC

Reply Parent Score: 2

RE[4]: Trusted Solaris?
by danieldk on Wed 5th Mar 2008 19:11 in reply to "RE[3]: Trusted Solaris?"
danieldk Member since:
2005-11-18

Well, the 12% (on x86 for reads) to 147% (on SH series processors for writes, and no that's not a typo) cpu overhead of SELinux is rather significant.


That's a too unbalanced statement. 12% overhead on what? As far as I know, the overhead is on certain system calls. Most CPU-intensive applications will relatively only spend very little time in system calls. So, overall, the impact is not that much, while it does give much more security. Seems like a fair trade-off to me.

Reply Parent Score: 2