Information Assurance |
Godwin Chang |
Information AssuranceBugtraq AnalysisApache SSL/TLS Man-in-the-middle attack vulnerability. |
What the problem is:
On the Apache HTTP Server 2.2.14 and earlier editions, as well as Microsoft Internet Information Services using machines had a vulnerability in the TLS and SSL protocol implementations. What happened is that they used an OpenSSL version prior to 0.9.8L. These servers would attempt to renegotiate handshakes with existing connections. Below is a diagram from the IBM websites that displays the process of negotiating handshakes for servers: However, the problem is that server handshake renegotiations in the implementation would create new connections with the same privileges as the existing connection, making an in-session handshake renegotiation. This made it possible for SSL protocol plaintext injections and man-in-the-middle attacks. How the attacks work:
TLS basically begins with Client Hello messages, and ends with a Server Hello Done message and an encryption key shared between the client and the server. The only problem is that by renegotiating connections with the same privileges, the malicious machine in the middle can at this point gain the encryption key between the client and the server. Furthermore, the connection is established directly between the malicious machine and the target server, and NOT the client and the target server. Furthermore, the malicious machine could have plaintext inserted into the Apache server without the client ever having knowledge of it. One piece of code from the bugtraq thread links is below:
The client then completes the second request with his own request:
This actually ends up ignoring the second request by the client. Meaning that the executed code is only:
Doing this then, client users could be entirely shut out of the server, while malicious attacks are conducted. What could have prevented the problem?
What can be done to work around it:
What can be done from preventing it from occurring in the future:
|