[Zope] DTML, Zope and Regex

Oliver Bleutgen myzope@gmx.net
Wed, 10 Jul 2002 17:49:43 +0200


Jim Penny wrote:
> On Wed, Jul 10, 2002 at 03:17:14PM +0100, Ben Avery wrote:
> 
>>well, external methods are python scripts with no safety measures at 
>>all, so are potentially much more unsafe than any use of regexps in a 
>>python script. So I'd say it's better to allow the re module in your 
>>python scripts (see my previous post) than resort to external methods.
>>
>>but I also haven't come across a reason to consider regexps unsafe. I'm 
>>sure it's been discussed here before - could someone point us to a post 
>>on this subject, pls ?
> 
> 
> As I understand it, the problem is not so much security, pro se, but
> denial of service.  That is, it is extremely easy to write regular
> expressions which take enormous amounts of time or memory to process.

Oh, come on.

my_bigasslist=[]
i=0
while(1):
   i=i+1
   my_bigasslist.append('bla'*i)

Gets zope to use >>100M in less than 2 secs on a lowly PII 350.

> 
> Worse, the processing time and space is extremely dependent on input,
> so that apparently well-tested code can suddenly become a liability when
> exposed to a less than friendly audience.  (Think about a line-oriented 
> regex that is furnished multi-megabyte line.)

if inputvar='killmyserver':
   my_bigassarray=[]
   i=0
   while(1):
     i=i+1
     my_bigassarray.append('bla'*i)
else:
   return 'whoa, I was lucky'
> 
> To say it another way, using regex does not make it more likely that you
> will be cracked.  It does make it more likely that your system will
> appear to be unresponsive, and, if memory exhaustion occurs, dead.

While the examples above wouldn't be written from anybody non-malicious 
in his right mind, I nonetheless think these arguments are dubious (mind 
you, I know you just cited them).
The arguments Chris brought up in another post seem more convincing, but 
I just wanted to make sure that the reasoning you stated gets a rebuttal.


cheers,
oliver