First of all I don't want this to sound like a personal attack, its
professional.  I just encountered something that really aggrevates me
about the state of PHP and I want to be heard by the developers.

 I just read through this document,

   http://www.php.net/~derick/meeting-notes.html

 and read the notes on safe_mode and open_basedir. PHP as is, is a real
pain in the ass to lock down completely and it always has been. In fact,
I'd venture to say that its impossible.  And believe me when I say that
I've tried and I'm no slouch.  The only way I can really lock it down is
to use modules like mod_suphp that run the scripts simular to how suexec
works.  But I can't just turn that on for every user on my system
because things like Mediawiki simple URLs don't work right and possibly
other things won't work.  Some developers will not take responsibility
for their programs not working and I'm getting tired of telling my
customers that there are brain dead developers out there writing popular
software.

 The PHP developers trying to shun the problems off to being an Apache
problem or OS problem is irresponsible. If PHP is a module running in
Apache.  What can Apache do?  Maybe I'm missing something here.

  open_basedir is vulnerable to the work around and safe_mode is
vulnerable to other problems that I've notified the developers about.
But removing safe_mode will only make things more unsecure not less.  I
know its a pain in the ass for people, but I think that until the PHP
developers can come up with a 100% secure way to run PHP, they shouldn't
be removing functionality like this.  Otherwise I'm going to have to
stay away from PHP 6.  My security model for websites on Suso is
partially based around safe_mode and other things like suexec and
enforcing restrictive permissions on user's homedirectories and so on.
But take safe mode away and users will be able to execute programs that
can read other user's files.  As simple as writing a program like this:

$arg = "/home/otheruser/www/filewithdbpassword.inc";

$output = "";
exec("/bin/cat $arg", $output);

print $output[0];

  Its pretty trivial to get around the security of open_basedir alone,
and I can't think of a way to prevent this using Apache or filesystem
permissions.  Perhaps there is a way using ACLs or selinux, but of
course this wouldn't work on all systems and I think that is expecting
too much.

  So what is the plan for increasing the security of PHP rather than
decreasing it?  I've been waiting since Apache 2.0 (7 years now) for PHP
to take advantage of things Apache 2.0 offers in terms of being able to
let modules run as the user, but I've seen nothing in this regard.

-- 
Mark S. Krenz
IT Director
Suso Technology Services, Inc.
http://suso.org/

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to