Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
×
Security PHP Programming IT

PHP Security Expert Resigns 386

juct writes "PHP security holes have a name — quite often it was Stefan Esser who found and reported them. Now Esser has quit the PHP security team. He feels that his attempt to make PHP safer "from the inside" is futile. Basic security issues are not addressed sufficiently by the developers. Zeev Suraski, Zend's CTO of course disagrees and urges Stefan to work with the PHP development team instead of working against it. But given the number of remote code execution holes in PHP apps this year, Esser might have a point. And he plans to continue his quest for security holes in PHP. Only that from now on, he will publish them after reasonable time — regardless if a patch is available or not." Update: 10/30 12:57 GMT by KD : Zeev Suraski wrote in to protest: "I'm quoted as if I 'point fingers at inexperienced developers,' and of course, there's no link to that — because it's not true! The two issues — security problems in Web apps written in PHP, and security problems in PHP itself — are two distinct issues. Nobody, including myself, is saying that there are no security problems in PHP — not unlike pretty much any other piece of software. Nobody, I think, argues the fact that there have been many more security problems at the application level, then there were at the language level. I never replied to Stefan's accusations of security problems in PHP saying 'that's bull, it's all the developers' fault,' and I have no intention to do it in the future."
This discussion has been archived. No new comments can be posted.

PHP Security Expert Resigns

Comments Filter:
  • by Divebus ( 860563 ) on Thursday December 14, 2006 @03:22AM (#17233454)

    Huge problem is "default" installs - everyone knows where your sample scripts are. Delete those first thing then move/rename the active libraries.

    Now, where's that Ruby book?

  • by Anonymous Coward on Thursday December 14, 2006 @03:34AM (#17233496)
    "Huge problem is "default" installs"

    Huge problem is the lack of proper ingineering efforts.

    PHP seems to me quite a good language for the task at hand, and its popularity seems to agree with me. Probably some PHP core developers are quite good at defining/devoloping it. The problem is that for a good product to be born that's not enough. Then you need people with proper ingineering knowledge and *attitude* and that I feel severily lack this people.

    It's not only security flaws within the core of it, which is a clear symptom (while proper ingineering efforts would reduce them with time) it's they mix security fixes with new functionality; they change the interpreter behaviour and default options within minor releases... Those are symptoms of the underlying illness: bad ingineering attitude.

    And it doesn't seem to change in the future; quite a pity.
  • Actual announcement (Score:5, Interesting)

    by kjart ( 941720 ) on Thursday December 14, 2006 @03:36AM (#17233516)

    Here's the announcement from the source himself, via his blog [php-security.org]. Based on that post I'd say he sounds pretty disgruntled with how his efforts towards security were received i.e. "he PHP Group will jump into your boat as soon you try to blame PHP's security problems on the user but the moment you criticize the security of PHP itself you become persona non grata"

  • As a PHP user.... (Score:5, Interesting)

    by MasterC ( 70492 ) <cmlburnett@gm[ ].com ['ail' in gap]> on Thursday December 14, 2006 @03:59AM (#17233584) Homepage
    As a PHP user, I have attempted to better the thing by reporting what I think are bugs. I can't name a single one that wasn't closed with a WONTFIX and a terse, non-thankful "that is a feature, not a bug." I honestly have zero disbelief that those same programmers would turn against Esser when he blamed the language, not the user, for the security problem.

    In particular, the late static binding issue (if B extends A then A::staticFunc() ran as B::staticFunc() is ran under class A not B). It's like how it took MySQL took a decade to get stored procedures and views despite many people asking for it. Many people complain about the late static binding issue but last I knew it was still "it's a feature, not a bug."

    Regardless, thanks for your work Mr. Esser...
  • Another, more recent sollution [sic] would be Ruby on Rails, which has some realy niffty [sic] features.


    Rails is pretty cute. An more functional (but less "shiny") alternative is Catalyst [catalystframework.org]. It's written in Perl, which means you get the benefit of over 10,000 extension libraries from the CPAN [cpan.org] to draw upon. Perl also has some nice features that Ruby or PHP lack, like full native unicode support and automatic taint checking. It's also faster, because it's had 10 years to mature. Sadly people seem to be ignoring Perl these days, but with recent improvements it's nearly as cool as Ruby (check out "Moose").

    Also, if you'd like to access a database with compound primary keys, ActiveRecord won't support that, but Catalyst's ORM (DBIx::Class) supports it fine.

    Rails is good for quick apps like a wiki or a blog, but for more complicated internal applications, Catalyst is where it's at. Stop by the website, check out our advent calendar [catalystframework.org], or perhaps try the tutorial [cpan.org]. Join us in #catalyst on irc.perl.org if you have any questions!
  • by pembo13 ( 770295 ) on Thursday December 14, 2006 @04:51AM (#17233782) Homepage
    can someone explain how it is that the apperently consensus is that PHP is insecure by design, asside from just poor programming? Thank you.
  • by Anonymous Coward on Thursday December 14, 2006 @05:09AM (#17233840)
    Variables are untyped, so if you do $a + $b, it's not clear what the result might be. Variables do not have to be declared before use, so if I have code like:

    $authorized = callAuthFunction();
    if(! $authoorized) logoutUser(); // note the misspelling
    mysql_query("UPDATE account SET ...."); // you get the idea
    Woops! Languages that have a permissive syntax make it easy for bugs to hide. And security flaws are just a particular subset of bugs. At a higher level, we have problems such as widespread use of direct DB access all over the place, instead of some kind of persistence layer, which results in likely SQL mistakes, and even injection attacks if the code isn't using correct pear DB. There's no true filter mechanism in PHP. There's no way to annotate objects as requiring a certain user-in-role. The whole thing is a big mess of C code and third party libraries, and there are good old fashioned C buffer overflow vulnerabilities in those areas too. Wee!
  • by aaronwormus ( 716976 ) on Thursday December 14, 2006 @05:26AM (#17233918)
    The "PHP Way" has always been to give the user sufficient power to shoot himself in the foot. The benefit is that the language itself is not slowed down by "features" which exists only to keep stupid programmers from hurting themselves. There are projects (like hardened php and suhosin) which add these security features to the language itself. There have also been "features" such as register_globals, the Get/Post/Cookie quoting and safe_mode which were prone to attack when not used correctly.
  • by Jesus_666 ( 702802 ) on Thursday December 14, 2006 @05:37AM (#17233978)
    Someone should fork PHP and do a major rewrite. Drop features like HTML embedding, introduce properly defined packages and make all functionality available in both procedural and OO fashions. Clean up the function names so they're predictable. And make some of the more dangerous functions safer.
    PHP could be turned into a decent general purpose scripting language if someone would fork it. Unfortunately that means that we'd need someone who knows the codebase, has time and is fed up with the current PHP development process. Maybe we could talk Esser into it...
  • Re:MOD PARENT UP (Score:3, Interesting)

    by gbjbaanb ( 229885 ) on Thursday December 14, 2006 @06:22AM (#17234176)
    perhaps a better idea than forking PHP would be to add these desirable sections to python instead.

    Then a php to python coverter, and then we could start to forget about magic_quotes and safe mode.
  • by Anonymous Coward on Thursday December 14, 2006 @06:53AM (#17234278)
    Well I moved from C# to Java a couple of years ago when a client wanted to be able to deploy to AIX. I found the transition dead easy. If you fancy taking a look at Java and want a good starter IDE you could do worse than look at Sun's Java Studio Creator [sun.com] which has a lot of the same look and feel as Visual Studio and is free and open source. If you want something that rocks and don't mind paying for it IDEA [jetbrains.com]is easily the best IDE I've ever used for anything. Ruby on Rails [rubyonrails.org] is where all the hype is at the mo, of course, but I'm not much of a fan myself mainly because Ruby is so damn slow [debian.org].
  • by plierhead ( 570797 ) on Thursday December 14, 2006 @07:02AM (#17234298) Journal

    I know exactly nothing about PHP, except that putting it on my Fedora box was a prereq to installing the mambo CMS, so I followed the instructions exactly.

    My first introduction to php itself was about 6 weeks later when I found my network sagging under the load of a spam blast emanating from my now-compromised machine, broken into through a php exploit - kinda disgruntling and humiliating since I take the utmost care over security and this was the first ever breakin.

    The first reaction when I told someone at work about this was "yeah, you'd have to be mad to run php on a box you don't want to get owned".

    Lesson learned and now I would not touch php with a 20 ft pole.

  • Re:XSS by default (Score:1, Interesting)

    by Anonymous Coward on Thursday December 14, 2006 @07:36AM (#17234418)
    A lot of 'Learn C' tutorials/books/etc have potential buffer overflows in the examples.
    A lot of 'Learn Perl' tutorials/books/etc have potential XSS/nullbyte exploits in the examples.
    etc.
  • by solidox ( 650158 ) on Thursday December 14, 2006 @07:51AM (#17234480) Homepage
    There was an exploit for mambo some time ago, sql injection i believe, perhaps several others also, so mambo is a likely culprit.
    One cannot say it was PHP directly that got the machine compromised. It was an exploit in a script written in PHP.
    A box isn't going to get compromised if PHP was installed alone on the box without any scripts (at least it's very very unlikely).
    Is C the direct cause of your box owned when their is an exploit in say, proftpd for example?

    I mean, I could also say...
    "yeah, you'd have to be mad to run sendmail on a box you don't want to get owned"
    "yeah, you'd have to be mad to run proftpd on a box you don't want to get owned"
    "yeah, you'd have to be mad to run bind on a box you don't want to get owned"
    "yeah, you'd have to be mad to run a linux kernel on a box you don't want to get owned"

    These applications have all had their problems in the past, maybe some still have problems, but overall
    they get fixed when new exploits/bugs are discovered.

    I'm not quite sure why, but a lot of people/webmasters/admins do not check for updates to the 3rd party php scripts
    they have installed, they just install them once and leave them running... Then they wonder why their box was compromised
    due to them running out of date software.
    You wouldn't leave your windows machine unpatched and never check for updates, would you?
  • by MosesJones ( 55544 ) on Thursday December 14, 2006 @08:12AM (#17234556) Homepage
    This would of course be why Java, probably the most widely used commercial language on the planet, has had so many massive security issues......

    Oh wait, it hasn't has it. It is also why Apache had so many more security issues than IIS4 because Apache was used... oh hang on that one doesn't work either.

    Maybe if you used you mouth rather than your butt for speaking you might make more sense.
  • by Bogtha ( 906264 ) on Thursday December 14, 2006 @09:45AM (#17235368)

    he sounds pretty disgruntled with how his efforts towards security were received

    I'm not surprised. If you read the article, you come across this gem:

    Suraski expressed his regret at Esser's resignation from the security team and hoped that Esser might come to his senses and return. He also hoped that Esser would not turn against the PHP project. The "Month of PHP security bugs" proposed by Esser for 2007 would harm the project.

    That's right, the PHP team think that dedicating a month to finding security holes in PHP is "harming the project".

    Stefan has a bit of a reputation for being "abrasive". But in my opinion, it is because he's got decent (not unreasonable, but decent) quality standards, and isn't afraid to hold other people to them. In a normal project, that wouldn't be so bad, but given the prevailing attitudes of the PHP project, it's understandable that he blows up frequently enough to have a reputation.

  • by Requiem ( 12551 ) on Thursday December 14, 2006 @10:46AM (#17236268) Journal
    Third(ed?). I use some C# at work (C++ is the normal, everyday language), and it's remarkably similar to using Java, especially when you don't use any of the more esoteric features.
  • by genooma ( 856335 ) on Thursday December 14, 2006 @01:59PM (#17240074)
    Oh yea, it took them 5 mayor versions to set up reasonable database access, obviously PHP is the pinnacle of design and security.

Today is a good day for information-gathering. Read someone else's mail file.

Working...