Thursday, April 10, 2014

OpenSSL is not developed by a project team

The consequences of bug Heartbleed in the OpenSSL library is still difficult to assess, but it is assumed that this is one of the biggest security vulnerabilities that have affected the internet. Yet Heartbleed could never exist, or at least be much less common. To improve the performance of OpenSSL, the OpenSSL development team has indeed circumvent a protection measure in the memory management.

In principle, the extension operates Heartbleed heartbeat that keeps active without SSL renegotiation. The client sends a packet HeartbeatRequest and must receive a packet from the server immediately HeartbeatResponse almost identical. The content of the packages is supposed to be identical, the client sending a piece of memory is copied and retried by the server. However, it is possible to cheat by asking the server to return a larger amount of data than that provided in the application, up to 64 kb . The server then uses a portion near or random memory to complete the Heartbeat response, up to 64 kb. Multiplying requests, an attacker can thus pumping portion of the server's memory, falling with a bit of luck on the SSL passwords or user keys.

The bug can be easily fixed by adding a simple verification: the query is not empty and that the answer is correct size. But according to Theo de Raadt , founder of OpenBSD, the bug could also have been avoided if using the standard OpenSSL based memory management (malloc) and not the specific version created by OpenSSL (OpenSSL_malloc) team . According to De Raadt, malloc is expected to crash itself facing some anomalies. But this protection resulting performance degradation on some platforms, OpenSSL has preferred to create its own function disabling it for all platforms.

An approach that makes him severely that team OpenSSL is irresponsible.

No comments: