[ 
https://issues.apache.org/jira/browse/FELIX-3362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13240277#comment-13240277
 ] 

Wolfgang Glas commented on FELIX-3362:
--------------------------------------

Did anybody have the time to review this issue?

   Best regards, Wolfgang

                
> No possibility to impose an upper limit on the size of a POST request.
> ----------------------------------------------------------------------
>
>                 Key: FELIX-3362
>                 URL: https://issues.apache.org/jira/browse/FELIX-3362
>             Project: Felix
>          Issue Type: Bug
>          Components: HTTP Service
>    Affects Versions: http-2.2.0
>         Environment: apache-karaf-2.2.5
>            Reporter: Wolfgang Glas
>         Attachments: 20120224-upload-test.zip
>
>
> We have developed a simple file exchange application using OSGi. THe upload 
> to this application is using a HTTP upload form field, which creates a large 
> multipart POST request.
> During our Q/A sessions, we discovered, that it is impossible to 
> intentionally close the network socket, when the upload request exceeds a 
> configurable limit.
> We've tried the following approaches
> 1) request.getInputStream().close()
> 2) Throw an IOException in doPost() once the critical length of input data is 
> reached.
> 3) Throw a ServletException in doPost()
> 4) Throw a SecurityException in doPost()
> It turned out, that in 1) the close()-Method reads the whole request (may be 
> Gigabytes of data...) before actually closing the socket.
> 2), 3) ad 4) seem to wait for the whole request before sending a 500 Internal 
> Server Error to the client.
> I will attach a small sample bundle in which the behaviour may be inspected 
> in detail.
> We classify this as a security problem, because a malicious user might 
> trigger a DDoS attack by just sending a few ultra-large requests to any 
> servlet deployed to an OSGi container. It might even suffice to to POST 
> ultra-large data to an unknown URL, because the HTTP service first reads all 
> the data of the request before issuing 404 Not Found or 400 Method Not 
> Supported to the client.
> We'd expect, that the HTTP service closes the network socket, whenever a POST 
> request arrives and the consuming servlet throws an exception before the 
> whole request has been read from the network socket.
> Furthermore, it should be possible to close the network socket instead of 
> issuing 404 Not Found when a POST request hits an unknown URL. This option 
> might be turned on by a configuration option.
>   TIA for inspecting this issue and best regards, Wolfgang

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to