The false sense of security of the internet has been completely overturned by the latest security bug to be discovered. A bug in the popular OpenSSL library used by many of the most important and frequently used server sites on the net allows arbitrary chunks of memory to be read remotely from user machines and servers, possibly containing very sensitive data, user tokens, bank details, emails and passwords. What does all this mean and how did it happen and what can we do to protect ourselves?
The latest security hole to rock the internet in the wake of the Snowden revelations is pretty huge. A bug in the OpenSSL library means that client computers can read arbitrary chunks of memory from servers all over the internet. Apparently this has been the case for the last two years.
For those who don't understand what this means, an SSL library is being used whenever you see that padlock icon appear in the address area of your browser. This usually happens when you are connecting to a website which requires some privacy such as your banking site or your webmail or other such servers.
To put this in perspective, about 66% of internet servers use a particular OpenSSL library to manage these sensitive connections with their clients.
So what is the problem?
ok the problem is this. When your computer connects to a server using this OpenSSL library, your computer and the server have a protocol called a "heartbeat" whereby they exchange a bit of data back and forth at regular intervals to maintain the connection. If this heartbeat stops, the connection is closed. Makes sense. However an error was introduced in the code used in this process (Rather suspiciously it was on new years eve, December 31 2011, when few people were looking. ).
The error was as follows:
in order to maintain the heartbeat, crucially, the client sends a few pieces of data to the server
heartbeat_type, pl, payload
where heartbeat_type defines the information structure to be used,
pl is the length of "payload" in bytes
and "payload" is some arbitrary piece of data.
once the server gets this data, it temporarily stores the "payload" data in its memory somewhere.
It then uses the software function memcopy(bp,pl,payload) to copy this data into a suitably formatted data packet to transmit back to the client.
The client then receives the packet, and it knows the server is alive, the two computers communicate for a bit, or not as the case may be, then the heartbeat process is repeated again after a suitable interval. And so on until the client disconnects from the server
ok that all sounds fine. Or it would be assuming the client was not malicious. Because it turns out the client can "lie" to the server when setting up this heartbeat data. The client can pretend the payload is much larger than it actually is because as you may have noticed, the client sends both the length of the payload and the payload itself to the server. And crucially, the server does NOT check the length is actually correct. This is the crux of the problem. A "buffer underrun"
So if a malicious client connects to the server and sends a false length of "64K" (the largest size it will accept) but only sends one "byte" in the payload, then the server dutifully sends back 64k of data.
Now out of the 64k sent back by the server, only 1k is actually our original payload. So what exactly is in the rest of this data packet returned from our server? This is a very good question!. The answer is whatever was in the memory of the server adjacent to where it temporarily stored our payload. This could be absolutely anything. Security certificates, Passwords, IP addresses, emails, user security tokens, anything.
And if you stay connected to the server, you can do this all night until something juicy comes back in the response from the server.
No doubt you can see the problem now.
A malicious server can also do the same thing to any client that connects to it.
Was it intentional?
At the moment it is not clear whether it was malicious. However if you have been keeping up with the Edward Snowden revelations, you will know that the NSA are up to all sorts of tricks to get your information, and this one is basically an open door for them to read the memory of 66% of internet servers. This includes many of the top services we all use on a regular basis. They could also compromise anyone they can trick into connecting to one of their servers too. A tactic the Snowden leaks show that they do use. It's all certainly very suspicious, and the timing of this code change is particularly suspicious in my book. it looks like it may have been used to monitor IRC traffic which is where the likes of anonymous would be hanging out.
What should I do to protect myself?
It is suggested that you update your OS if you are using any of the flavours of linux which are using the compromised library version.
(OpenSSL versions 1.0.1 through 1.0.1f (inclusive) are vulnerable )
this ships with the following versions of linux:
Debian Wheezy (stable), OpenSSL 1.0.1e-2+deb7u4
Ubuntu 12.04.4 LTS, OpenSSL 1.0.1-4ubuntu5.11
CentOS 6.5, OpenSSL 1.0.1e-15
Fedora 18, OpenSSL 1.0.1e-4
OpenBSD 5.3 (OpenSSL 1.0.1c 10 May 2012) and 5.4 (OpenSSL 1.0.1c 10 May 2012)
FreeBSD 10.0 - OpenSSL 1.0.1e 11 Feb 2013
NetBSD 5.0.2 (OpenSSL 1.0.1e)
OpenSUSE 12.2 (OpenSSL 1.0.1c)
Update to OpenSSL version 1.0.1g as soon as you can through the usual system updating procedures for linux
Apple say their OSX is safe but if you are using OSX mavericks, they recommend updating to 10.9.2 just to be safe. Some free programs may use the library so they will need updating
Windows is not affected according to microsoft, although some free programs may use the OpenSSL library and they will need updating.
Alas, that is not the end of it. The bug has been in the wild for two years. There is always the possibility that your passwords etc may have been compromised on many of the internet servers you use. It is recommended you change all your passwords on the internet services you use.
It is highly recommended you wait until these servers have updated their security certificates and replaced any compromised SSL code on their servers and given the all clear before you log on and change your passwords
You should check out this site for some helpful information on some of the main sites, but it is by no means a full list:
The official site for information is here:
For those of you who are a bit more technically minded, there is a good analysis here:
A simpler explanation here: