Hello again,

This is a follow up to my post you can see here [1].

I've tried a little more and found out something really scaring.

By using chunked transfer encoding you can continously send data to _any_ tomcat servlet. Even if it would generate a 404 or another error.

What I did was to simply use the httpclient library to upload a stream of random data to a really basic tomcat servlet (that prints hello world). What happens is that the servlet executes, finished, but tomcat continues to read all the data sent by my little program, even if that continues to infinity. And instead of directly showing the 404 tomcat will first _always_ show the 100 Continue header, even if it _doesn't even accept posts/put_

Sample log:

>>> POST /backend/test HTTP/1.1[\r][\n]
>>> User-Agent: Jakarta Commons-HttpClient/3.1[\r][\n]
>>> Host: *******:8443[\r][\n]
>>> Expect: 100-continue[\r][\n]
>>> Transfer-Encoding: chunked[\r][\n]
>>> [\r][\n]
<<< HTTP/1.1 100 Continue[\r][\n]
<<< [\r][\n]
>>> *3 megabytes of random garbage data here*
<<< HTTP/1.1 405 HTTP method POST is not supported by this URL[\r][\n]
[...]

This probably means that any tomcat server out there having chunked transfer enabled can be flooded with large amounts of data without any mechanism inside of the servlet to prevent that from happening, as far as I can see. This means theoretically one could open an infinite number of non-terminating sockets to a tomcat server, that _has_ to hurt performance.

Seems to me like there really needs to be a solution for this issue.

Best regards,
Volker

[1] http://marc.info/?l=tomcat-user&m=120024591128397&w=2

---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to