The reason we're only hearing about it now, 2 years down the line is that it's gone unnoticed for that long.
It's a simple programming error, but it was such a simple error and it was in plain sight, nobody spotted it.
I read a great way of describing it last night.
Basically, when two machines are communicating, they send a signal back and forth...a heartbeat.
How it works is that Machine A (Client) sends a little note to Machine B (Server) with an instruction to "Here's some data 16k in size. Stick it in your memory, then send it back".
Server copies the information to it's memory, re-reads it and sends it back, Client says "yup, we're alright".
This in essence is the heartbeat.
But....what if the client is up to no good?
What if it says "Here's some data, it's 16k, stick it in your memory and send it back". But it only actually sends 1k, or even 0k.
What the server then does is copies the data it's received into it's memory (all 1k of it), then reads 16k back to send to the client.
This is the problem, we all know that when data is deleted on an HD, it doesn't actually erase the actual parts of the disk, it just marks them as available for use. The same goes for memory.
So now the server has just blindly read 16k from it's memory without even confirming that it put 16k in there in the first place.
It could be sending back 1k of the original heartbeat and 15k of blank memory, it could be sending back 1k of the heartbeat and a password that was used 10 minutes ago. Who knows.
The code has now been patched to perform the correct checks.
Edit : I've found it, it was on Gizmodo...Damn I didn't have to do all that typing lol
http://www.gizmodo.co.uk/2014/04/ho...code-behind-the-internets-security-nightmare/