Whatever happened to the concept of layering your security? If using a VM provides adds some level of isolation between potential malware and the Bitcoin wallet then it would certainly be beneficial to use it as part of an overall solution. You shouldn't discard it just because it is not 100% "impenetrable" (Are you looking for a Maginot Line-type solution?). Other steps can and should be taken to protect the host, other VM's, the local network, etc. You may argue that this is just obscurity, but in the real world throwing an additional roadblock is usually all that it takes to prevent the success of a potential attack.
It protects only in one direction: It protectes the host from the guest. Not the other way around!
But many people here use it the other way around. That does not work, it's just a little obscurity (which you could also have by renaming files).
Little Conclusion:The title is not "stop using VMs", but "stop telling people that VMs do magic". If you know what you do, you can get some protection with VMs, as some people here do. But if you tell people, they will just install VMs (wasting ressources), and think they are secure, which they are not.
For example you could set up a VM full operating system based full disk encryption. That would protect the system while it is
not running. When it is running, there is no more protection from the host. You can use that setup securely if you are fully aware of that facts. But most people just aren't, especially those who just listen to your security advice.
You have the same effect with
my Ubuntu user account setup. While the special user is logged out, there is no way to access the private keys. They are encrypted (and never stored anywhere else).
And it has a lot of advantages:
- It is way less a waste of ressouces.
- Login and logout are much faster than booting a VM. (Hibernating a VM would mean to store private information in swap space.) So there is a smaller time window for attackers.
- Even while the special user is logged in there is no way for other user's software to manipulate unless they really crack the operating system. (Opposed to that the VM is run by a user, thus the user's software can do anything with it.)