[Glass] security / dos attacks

jtuchel at objektfabrik.de jtuchel at objektfabrik.de
Mon Dec 23 07:04:31 PST 2013


Otto,

we've been seeing similar problems on VA Smalltalk. There were requests 
that seemed lik esomebody tries to check the server if it reacts to 
certain Strings. Unfortunately, the server came up with a debugger 
instead of either ignoring it or returning an HTML error message.

I think we all agree that a server shouldn't crash if a request cannot 
be decoded or process.

The whole thing, however is much more complicated than just returning an 
HTTP status code if a request cannot be decoded, and I have learned a 
little about this over the last few weeks. There are good reasons for 
your server to not react at all to the outside, so that possible 
attackers do not learn anything about your server, other than it didn't 
react in the way they'd hoped. So there are several possible things a 
server should do, and you need to have a way to configure that behaviour:

* In development and test, you'd probably want to receive an HTTP error 
code if you send illegal requests to your Web Server (In your case 
Gemstone/S)
* In pre-production and production, you'd better not get anything back 
from the server if you send requests that cannot be processed
* You may need, however, to keep a log of such access attempts to 
understand a intrusion after the fact (I really hope I'll never be in 
that situation), so you may want to log those requests with as much 
information about where it came from and what happened before and after.

You may have a vague idea by now that this is a very wide field and 
maybe this is not something that can or should be solved in Smalltalk. I 
guess there are people who have solved the issue better than any 
Smalltalk verndor ever could. I only have to find out what people 
usually do about this.

So: first step sure is catching errors and responding with an 
appropriate HTTP status code, just to keep your server from crashing. 
But as you can see, that is neither a perfect nor complete solution.

HTH,

Joachim


Am 23.12.13 14:36, schrieb Otto Behrens:
> Hi,
>
> We've been getting some hacking / dos attempts on our sites.
>
> In some cases, we do get a successful crash of the FCGI server. I'm
> still trying to find those.
>
> In my hunt for this, I found that some requests create an Internal
> Server Error response. For example, a GET on /%C0%AE generates the
> following message: 'InterpreterError 2258: Primitive failed , selector
> <#'_unicodePrim:'> receiver <'À®'>'
>
> I'm worried that this somehow opens a gap to hack into the system, so
> I think it is better to respond with a 404 or something like that.
> Does this make sense? I was thinking that I should be chasing down 500
> responses so that we can catch where they manage to break the server.
>
> Have you encountered this? Any ideas on solving it?
>
> Here's what I found so far:
> 1. The method WAFastCGIAdaptor | requestUrlFor: creates a WAUrl and
> then calls #decodeWith: on it, which breaks.
> 2. In the code that creates the WAUrl, it calls #decode: on the path
> segments, which decodes %C0 as a UTF8 character. (WAUrl | decode:).
> 3. doing this breaks:
>
> (String with: (Character codePoint: 192) with: (Character codePoint:
> 174)) decodeFromUTF8
>
> Thanks
> Otto
> _______________________________________________
> Glass mailing list
> Glass at lists.gemtalksystems.com
> http://lists.gemtalksystems.com/mailman/listinfo/glass
>


-- 
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:jtuchel at objektfabrik.de
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1



More information about the Glass mailing list