Bug 628031

Summary: SELinux is preventing /usr/lib64/firefox-3.6/firefox from making the program stack executable.
Product: [Fedora] Fedora Reporter: Joel <hundred17>
Component: selinux-policyAssignee: Daniel Walsh <dwalsh>
Status: CLOSED CANTFIX QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: 14CC: c522523, dwalsh, fedora.jrg01, igeorgex, mgrepl, mjc, teva.riou
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard: setroubleshoot_trace_hash:acf1820b0a59ac9f64de7fb992bf3dda340d4433ec3adc5bf6e55979fb75afb3
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-08-30 10:38:01 EDT Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:

Description Joel 2010-08-27 13:22:57 EDT
Summary:

SELinux is preventing /usr/lib64/firefox-3.6/firefox from making the program
stack executable.

Detailed Description:

The firefox application attempted to make its stack executable. This is a
potential security problem. This should never ever be necessary. Stack memory is
not executable on most OSes these days and this will not change. Executable
stack memory is one of the biggest security problems. An execstack error might
in fact be most likely raised by malicious code. Applications are sometimes
coded incorrectly and request this permission. The SELinux Memory Protection
Tests (http://people.redhat.com/drepper/selinux-mem.html) web page explains how
to remove this requirement. If firefox does not work and you need it to work,
you can configure SELinux temporarily to allow this access until the application
is fixed. Please file a bug report.

Allowing Access:

Sometimes a library is accidentally marked with the execstack flag, if you find
a library with this flag you can clear it with the execstack -c LIBRARY_PATH.
Then retry your application. If the app continues to not work, you can turn the
flag back on with execstack -s LIBRARY_PATH. Otherwise, if you trust firefox to
run correctly, you can change the context of the executable to execmem_exec_t.
"chcon -t execmem_exec_t '/usr/lib64/firefox-3.6/firefox'" You must also change
the default file context files on the system in order to preserve them even on a
full relabel. "semanage fcontext -a -t execmem_exec_t
'/usr/lib64/firefox-3.6/firefox'"

Fix Command:

chcon -t execmem_exec_t '/usr/lib64/firefox-3.6/firefox'

Additional Information:

Source Context                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1
                              023
Target Context                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1
                              023
Target Objects                None [ process ]
Source                        firefox-bin
Source Path                   /home/joel/firefox/firefox-bin
Port                          <Unknown>
Host                          (removed)
Source RPM Packages           firefox-3.6.4-2.fc14
Target RPM Packages           
Policy RPM                    selinux-policy-3.8.8-20.fc14
Selinux Enabled               True
Policy Type                   targeted
Enforcing Mode                Enforcing
Plugin Name                   allow_execstack
Host Name                     (removed)
Platform                      Linux (removed) 2.6.35.2-9.fc14.x86_64 #1 SMP Tue Aug
                              17 22:36:15 UTC 2010 x86_64 x86_64
Alert Count                   10
First Seen                    Fri 27 Aug 2010 01:12:46 PM EDT
Last Seen                     Fri 27 Aug 2010 01:20:15 PM EDT
Local ID                      7a7a6e69-edbe-471f-aa7c-c7e15a96e3d8
Line Numbers                  

Raw Audit Messages            

node=(removed) type=AVC msg=audit(1282929615.824:825): avc:  denied  { execstack } for  pid=8343 comm="firefox" scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=process

node=(removed) type=SYSCALL msg=audit(1282929615.824:825): arch=c000003e syscall=10 success=no exit=-13 a0=7ffffac62000 a1=1000 a2=1000007 a3=3b7a420000 items=0 ppid=8330 pid=8343 auid=500 uid=500 gid=500 euid=500 suid=500 fsuid=500 egid=500 sgid=500 fsgid=500 tty=pts4 ses=1 comm="firefox" exe="/usr/lib64/firefox-3.6/firefox" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)



Hash String generated from  allow_execstack,firefox-bin,unconfined_t,unconfined_t,process,execstack
audit2allow suggests:

#============= unconfined_t ==============
#!!!! This avc can be allowed using the boolean 'allow_execstack'

allow unconfined_t self:process execstack;
Comment 1 Joel 2010-08-27 13:24:44 EDT
This started happening after installing the Sun/Oracle Java plugin for Firefox.

Also, the referenced website for how to "remove the requirement" points to a useless page (http://people.redhat.com/drepper/selinux-mem.html).
Comment 2 Daniel Walsh 2010-08-30 10:38:01 EDT
I will fix the troubleshoot to point at

http://www.akkadia.org/drepper/selinux-mem.html

I do not know why oracles java plugin is forcing firefox to need execstack.  I guess it is moving the java code internal versus executing java as a separate app, like the Fedora one does.  

I guess if you want to use their plugin you need to turn off the execstack check for unconfined users.

# setsebool -P allow_execstack 1
Comment 3 Michael J. Chudobiak 2010-11-04 14:55:01 EDT
Can you provide a narrower boolean, like "allow_browser_execstack"?

Or, what would the best local policy module rules be?

I would like to handle Sun Java without completely enabling execstack.

- Mike
Comment 4 Daniel Walsh 2010-11-04 15:02:32 EDT
Does

# chcon -t execmem_exec_t /usr/lib64/firefox-3.6/firefox

Fix the problem?
Comment 5 Michael J. Chudobiak 2010-11-04 15:09:38 EDT
Yes, it does. Thanks!

- Mike