Re: Relabeling PHP uploads when they are moved into place

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Oct 3, 2011, at 12:39 PM, Dominick Grift wrote:

> On Mon, 2011-10-03 at 12:29 -0400, Scott Gifford wrote:
>> PHP uploads files into a temporary directory, where they are given the
>> label "httpd_tmp_t".  When a PHP script processes them, it
>> calls move_uploaded_file to move the newly uploaded file into its
>> final location.  This function does some validity checks, then does a
>> rename(2) from the temporary location to the location passwd to
>> move_uploaded_file.
> 
> Your web app would need to copy the file instead.
> 
> Or why not make your app create the file in the final destination in the
> first place. then rename it there.
> 
>> The problem is that after the rename, the file still retains its
>> original label, "httpd_tmp_t".  That makes it inconsistent with files
>> and directories which weren't uploaded, and requires some policy
>> gymnastics to take into account that anything that could have been
>> uploaded might have the "httpd_tmp_t" type.
> 
>> I am wondering if there is some good way to automatically relabel this
>> file when it is renamed?
>> 
>> I would like for the PHP application to work on SELinux and
>> non-SELinux systems, so I would prefer not to make calls out to
>> SELinux-specific scripts and programs (like restorecon).  What I would
>> really like is some configuration option that would just relabel files
>> according to their destination when they are rename(2)'d, but that may
>> be asking too much.  :-)
> 
> That is not practical because whatever moves the file might not be
> allowed to relabelto the target location type.
> 
> So i do not think that this is feasible.
> 
>> 
>> Thanks for any advice,
>> 
>> 
>> -----Scott.
>> 


Hi,

I think it's one of those cases where if a person asks how to shoot himself, he shouldn't be provided any recipes :)

I understand where this requirement is coming from. Many current web engines nowadays allow you to install "extensions" or "plugins" via web interface.
This is convenient, but absolutely insecure - think about it, you are trying to allow application to do self code modifications, the very thing that SELinux should help you to prevent.
A bug in wordpress/phpbb/cms made simple/whatever together with this SELinux backdoor would allow installation of a malicious code on your server. I bet you have 
GRANT ALL PRIVILEGES ON database.* to webuser, and you will wake up with no website, for example, or stolen sensitive data. 
Convenience and security most times contradict each other. Install your php code manually.

Vadym

  



--
selinux mailing list
selinux@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/selinux


[Index of Archives]     [Fedora Users]     [Fedora Desktop]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux