Be thankful it's only a proof-of-concept of a hack: German researchers have shown that internet software distribution mechanisms can be turned into virus vectors, without modifying the original code.
The Ruhr University boffins – Felix Gröbert, Ahmad-Reza Sadeghi and Marcel Winandy – have developed an on-the-fly mechanism for injecting code into a download. As they write in their paper [PDF] hosted at PacketStorm:
“Our algorithm deploys virus infection routines and network redirection attacks, without requiring to modify the application itself. This allows to even infect executables with a embedded signature when the signature is not automatically verified before execution.”
They use what they call a binder to concatenate the original application and the malicious code. “Upon starting the infected application the binder is started. It parses its own file for additional embedded executable files, reconstructs and executes them, optionally invisible for the user,” they write.
Since the application is intact, “one can attach malware even to an executable with a embedded signature and still succeed to execute the malware under certain circumstances”.
The two components of the proof-of-concept are called Cyanid (to fetch, modify and filter the HTTP downloads) and Calcium, the binder that infects the binaries.
A successful attack depends most of all on the ability to redirect traffic, as shown below.
Governments, the paper notes, could be in a position to exploit network nodes between a sender and receiver to hijack the traffic (or, for that matter, vulnerable routers could be exploited to the same end).
To mitigate against such attacks, the researchers say, software distributors need to tighten up their delivery mechanisms, to defend against traffic hijacks. OpenVPN, IPSec or HTTPS would help here, they state, provided one can trust the certificate chain.
Presumably, cryptographic code-signing would work too, again if the necessary certificates involved can be reliably obtained and verified as authentic.
Providing, say, a SHA-256 digest of the download isn't much help though, they suggest, because while the user or OS could check against a hash, “the reference values would have to be obtained through a trusted channel” – which may not be available. Users would have to get hold of a valid hash some other way, which isn't convenient.
Antivirus software could be modified to check for binder behaviour, they add, and “trusted virtualisation” architectures could also help, since the secure, verifiable boot process helps isolate critical applications. ®