On 05/02/2004 at 10:46 Adam Bregenzer wrote:
>On Thu, 2004-02-05 at 08:13, Harry Sufehmi wrote:
>> So there's a reasonably easy way to decrypt those encoded files then ?
>(despite those vendors' claim...)
>There isn't a program to revert encoded files to their original state,
>but there is a disassembler[1].  However, assuming your encryption key
>is a string all one would need is to do strings <filename> on the
>encoded php file to get your encryption key.
>[1] http://www.derickrethans.nl/vld.php

Interesting  :-)  much thanks.


>The real problem you are facing here is security through obscurity is
>not security.  First of all, your method of encrypting these files and
>decrypting them before serving up pages is just going to slow down your
>web server.

My manager reckons that it's worth it. And it's causing very little traffic anyway.


>The key is stored in a file somewhere and therefore easily
>accessible if someone gained access comparable to the web server.  Since
>the key is readily available the data is not really encrypted, just
>obfuscated.

The key should be contained within the script itself, so it'll be scrambled by the 
encoder.


>I assume you are not transmitting these pages over the Internet and even
>within your intranet are using SSL?  If not then that is a much bigger
>security hole.

It's transmitted over the Internet using SSL.


>If you are really dedicated to encrypting these files I have a possible
>suggestion (see below for big caveats!).  Continue with your encryption,
>however do not store the password anywhere on the server.   You could
>either require the password be typed by users to view the pages (and
>*don't* cache it in any way anywhere!)

Hmm... the users shouldn't know the password to the key really, they have problems 
already remembering just one password  :-)  more than that and they'll start writing 
it down on post-it notes... hehe


>or write an extension to apache
>(or whichever web server you use) to request the password when apache
>starts.  It would then securely store it in ram and use it to decrypt
>pages, similar to how encrypted SSL certificates are handled.  This
>would not be a php based solution, if php were to have access to the
>password then all that would be required to retrieve it would be the
>ability to execute custom php on the system by the hacker.

This is the best solution I think, but unfortunately I don't think we have the 
resources to develop this.


>You could
>try writing a php extension that would handle this however you may have
>a few problems:
>1.) Depending on the web server used the php library's lifetime in
>memory may be shorter than the web server, or there may be multiple
>copies of the php library in ram.  This would require typing the
>password more than once per web server restart.

That's why I'm planned to store it in the encoded script instead.


>2.) You need to make sure it is not possible to access arbitrary parts
>of php's memory using documented or undocumented php functions, etc.  If
>so a cracker could write a php script to obtain the password.
>3.) You would need to disable the dl() function so a custom extension
>could not be loaded to grab the password, though php.ini could be
>modified and the web server restarted.  Then all the cracker would need
>to do would be to wait for you to re-type the password.

>Additionally make sure core dumps are disabled on the server, otherwise
>forcing the web server to crash could put the password in the core file.

>You know, after writing all that I realized something else:  these are
>web pages being served.  If the attacker has root access to the system
>what would prevent him from just using lynx to view the pages directly
>form the web server?  SSL won't stop him/her and usernames and passwords
>will most likely be available if you use web based authentication.  Your
>best method would be to require the password be typed every time a page
>is viewed, which has its own set of problems.

Bingo ! :-)

Nice one Adam, you've found the hole in this scheme.


>Hopefully this gives you something to think about.

Indeed... so for now looks like there's no elegant solution to this problem.
I'll have to rethink everything now - well better now than later after the server's 
been cracked open  :-)

Thanks, it's been a very interesting discussion.


cheers, HS

--
Kampanye open-source Indonesia - http://www.DariWindowsKeLinux.com
Solusi canggih, bebas ikatan, dan bebas biaya

v0sw6Chw5ln3ck4u6Lw5-2Tl6+8Ds5MRr5e7t2Tb8TOp2/3en5+7g5HC - hackerkey.com

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to