Summary: |
|
||||||||||||||||||||||||
A user from a remote host that is able to just connect to a myproxy-server can cause reduced availability of the myproxy-server. |
|||||||||||||||||||||||||
| |||||||||||||||||||||||||
Access Required: |
remote user able to connect to MyProxy server |
||||||||||||||||||||||||
This vulnerability requires a user to be able to connect to the myproxy-server and does not require being able to authenticate to the MyProxy server. |
|||||||||||||||||||||||||
Effort Required: |
medium |
||||||||||||||||||||||||
To exploit this vulnerability requires a modified client. |
|||||||||||||||||||||||||
Impact/Consequences: |
low |
||||||||||||||||||||||||
This vulnerability can result in reduced availability of the myproxy-server. |
|||||||||||||||||||||||||
Full Details: |
|
||||||||||||||||||||||||
There are two causes of denial of server in the way myproxy-server handles reading data from a client. These are due to lack of timeouts and limits on the total amount of data read. The lack of timeouts on reads and writes, such as in The second problem is that there is no limit to the amount of data the server is willing to read from the client. This can lead to resource exhaustion more quickly and can be used in conjunction with lack of timeouts to have the waiting processes consuming a large amount of memory. This problem occurs in the |
|||||||||||||||||||||||||
Cause: |
denial of service |
||||||||||||||||||||||||
This vulnerability is caused by lack of timeouts for I/O operations and failure to limit the amount of data read. |
|||||||||||||||||||||||||
Proposed Fix: |
|
||||||||||||||||||||||||
A reasonable timeout should be set for all reads and writes between the
client and server. The child myproxy-server process should exit with an error
if the message is not sent or received in time. This can be accomplished
using the Also a reasonable limit to the amount of data read in a message should be
enforced, and an error produces if the limit is met. Ideally the size of a
MyProxy message would be placed in a header before the data is sent, so the
server knows how much data to read and can reject the request without reading
any more data. Otherwise the |
|||||||||||||||||||||||||
Actual Fix: |
|
||||||||||||||||||||||||
The proposed fixes were implemented in MyProxy v4.3, released September 2008. A default timeout of 120 seconds is set for myproxy-server child processes to service requests before aborting, customizable via the myproxy-server.config request_timeout parameter, and a 1MB maximum is enforced for incoming messages to avoid memory exhaustion under heavy load. |
|||||||||||||||||||||||||
Acknowledgment: |
|
||||||||||||||||||||||||
This research funded in part by NATO grant CLG 983049, the National Science Foundation under contract with San Diego Supercomputing Center, and National Science Foundation grants CNS-0627501 and CNS-0716460. |