I have seen these a lot lately. You click the link, and instant trojan. No need to download or anything.
How is this possible? Is there a way I can scan the links before visiting to make sure I won't be infected?
migrated from stackoverflow.com Feb 9 '10 at 20:12
This question came from our site for professional and enthusiast programmers.
To answer how it's possible:
The site has some script that gets executed as you load the page. This is what infects your Windows PC - I'm not 100% sure of the details though, whether it downloads the code or just runs it. This page has an example of how it was done in one case. A vulnerable browser is also required, and virtually any popular browser is a vulnerable one as something running on a lot of computers is worth targeting.
It will be Windows PC's for the most part that get infected as people run as admin's rather than restricted users. The reasons for this are many and varied. As Roger points out in his comment its popularity rather than any intrinsic weakness that's the main factor here:
Though by running with a restricted rights user you can limit the damage, but not necessarily eliminate it.
With Vista and now 7 having tighter control over what gets run as admin you might start to see a drop in these sorts of sites - though it will only be when the majority are running the newer OS's.
In principle, getting infected just from visiting a website should be impossible:
Similar restrictions exist for most plugins (at least for Java and Flash). This is commonly referred to as sandboxing, as the code is essentially in a box of its own, isolated from the computer it runs on. In particular, it cannot read files on your hard disk, or start programs for you, like "regular" programs running on your computer can.
Now, the thing is: while in principle you're safe, in practice you may not be. The reason is that the sandbox system, like all programs, has bugs. Sometimes these bugs allow a program to "break" the sandbox and trick the browser or plugins to do things it should not be allowed to do. These tricks can be quite elaborate.
BTW: The sandbox is the reason some Java applets pop up a "Do you trust this applet" warning on launch: These applets ask you to let them out of their sandbox and to give them access to your computer. This is sometimes necessary, but should only be granted with good reasons.
P.S.: The reason that ActiveX (at least early versions) were so horribly insecure is that ActiveX did not use a sandbox. Any ActiveX code from a webpage had full access to your system. To be fair, this was (partially) rectified in later versions.
You could install something free such as AVG LinkScanner. It will scan the links before they have chance to do any damage.
If you use Google Chrome, it offers some protection from links that end up on pages infected with malware. It displays a nice warning message BEFORE loading the actual page up.
The latest version of Internet Explorer includes SmartScreen Filter which does the same thing.
Some good firefox extensions to protect yourself:
And to run your browser(s) in an isolated space: Sandboxie
I mention this to answer your last question about preemptive actions. One not-so-common option is to use a virtual machine (well, it is common among security circles). There are a few free ones available. Install your OS, browser, and add-ins in the virtual machine and save the state. You can then browse to any site. When finished, you revert to that saved state and anything that happened in the virtual machine after that point is discarded. It's very simple once you get into it, but may pose a slight learning curve.
Note: Reverting state will literally discard any changes to the virtual machine; including browser history, cookies, updates, etc. In this case, you could revert to that state, apply updates, and save a new state. The same can be done for anything else you wish to keep. None of this affects your actual computer, only the virtual machine.