Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

Create Account  |  Retrieve Password

AntiVirus Products Fail to Find Simple IE Malware

Posted by ScuttleMonkey on Mon Oct 29, 2007 02:17 PM
from the no-surprise-here dept.
SkiifGeek writes "Didier Stevens recently took a closer look at some Internet Explorer malware that he had uncovered and found that most antivirus products that it was tested against failed to identify the malware through one of the most basic and straight forward obfuscation techniques — the null-byte. With enough null-bytes between each character of code, it is possible to fool all antivirus products (though additional software will trap it), yet Internet Explorer was quite happy to render the code. Whose responsibility is it to fix this behavior? Both the antivirus / anti-malware companies and Microsoft's IE team have something to answer for."
+ -
story

Related Stories

This discussion has been archived. No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • by Anonymous Coward on Monday October 29 2007, @02:22PM (#21160387)
    simply remove IE?
    I mean... that's the definition of malware.
      • by Pharmboy (216950) on Monday October 29 2007, @02:42PM (#21160681) Journal
        And ironicly, you can't really remove IE, since it is "Part of the Operating System (tm)". You can only make it somewhat invisible, which of course, is the second part of the definition of malware.
        • Re: (Score:2, Redundant)

          That isn't entirely true, I've installed windows without IE. But it was a huge pain in the ass. I had to create my own installation media which didn't have it, and I had to install updates by hand from the ones that can be downloaded from the support site. There was for a while a 3rd party site that would provide the downloads through Firefox, but it depends on how much you're willing to trust 3rd parties to not Trojan the updates.
        • I don't have IE, and my OS is perfectly functional. It's called Linux, you see...
  • Duh. (Score:5, Informative)

    by SatanicPuppy (611928) * <Satanicpuppy AT gmail DOT com> on Monday October 29 2007, @02:24PM (#21160431) Journal
    It's microsofts responsibility. I've said it before, and I'll say it again, "Interpreting broken code is a security weakness." Yes it makes things easier for amateur developers(developers, developers) but it's a huge security problem to have a system in place that malware writers can be sure will interpret a piece of innocuous gibberish into a functioning piece of malware.

    Java is a good example of this. Java doesn't interpret crap. It is what it is, and it doesn't give a crap if it works or not. It's strongly typed, it's picky as hell about variable initialization...It's a bitchy language for newbies, because it's unforgiving of the most meek typos.

    I don't think java is the end all be all...It's certainly not friendly to develop in, and that's given scripting languages (hello php) a huge advantage in the marketplace...Much the same as with unix and microsoft, so it's not surprising to see them continuing down their path.

    But in the end, you've got to embrace some maturity and stop bottlefeeding your developers and make them fix their damn code when it doesn't conform to a normal standard.
    • Re: (Score:2, Interesting)

      I don't think java is the end all be all...It's certainly not friendly to develop in

      Compared to what, English?
    • I've said it before, and I'll say it again, "Interpreting broken code is a security weakness." Yes it makes things easier for amateur

      Which is exactly why I've always maintained that the Postel rule that one should "be conservative in what one sends and liberal in what one accepts" (or words to that effect) might possibly have made some sort of sense in the environment in which Postel first coined it but makes no sense whatsoever in today's Internet. In anything in which security matters (which pretty mu

    • Re: (Score:3, Insightful)

      > It's a bitchy language for newbies, because it's unforgiving of the most meek typos.

      Pity the newbies can't see that it's better to have compile errors rather than run time errors. Scripting languages appear easier, but try writing a big application with them and you'll see the real value strict rules
      • Yea, welcome to the wonderful world. Every app I write in java these days kicks off from a batch file that calls a the code with a very specific set of libraries. I'm done re-writing my code every time they release a new goddamn version. If there is no new functionality, and the app is secure, don't give me crap when I want to keep using the same library.

        The worst is with older macs, because the java installers wrapped up by apple are only available in a narrow range, depending on OS release, and otherwise
  • 0×00
    0×00
    0×00
    del /p /s c:\
    0×00
    0×00
    0×00

    Look at me, I'm a virus writer! w00+!

    But seriously, is this really that hard of a problem to fix? AV can't ignore 0×00 when scanning and just read the actual code for what it is?
  • by SamP2 (1097897) on Monday October 29 2007, @02:29PM (#21160471)
    Sure, AVs operate on a practically outdated concept of finding "true" viruses, trojans, etc. Sure, you may use that as a good premise saying that AVs are either inadequate or outright useless.

    If the program does crap but it secretly said in the EULA it'd do crap and you were too dumb to notice, AVs are not going to stop it.

    If the program is a resource hog, or spies on you in ways you'd never want but which nontheless are not illegal by law, AVs won't stop it.

    If the program serves you so much ads your dual-core behaves like a 486DX, AVs damn well aren't going to stop it, or they'll get sued by the owner of said program.

    AVs are only designed to, and will only attempt to fight, programs that fall into clearcut and outright illegal definitions (wipes your disk data, installs a backdoor to your root, uses your computer as a bot in a zombie network, etc).

    If you want to fight stuff like adware, spyware, slowware, and other crapware that does not fall for the fairly strict definition of outright malignant viruses/trojans, get something like AdAware or SpyBot or something else. AVs won't do the trick.
  • by Kazrath (822492) on Monday October 29 2007, @02:33PM (#21160541)
    His screenshot stops at F and is in alphabetical order. Did this guy forget to press "next" and see the remaining of the 32 that detected it? Or are only the antivirus programs with names that start with the first 7 or so characters able to catch this neat trick?

    I think possibly the article is bogus or poorly researched.

  • by pembo13 (770295) on Monday October 29 2007, @02:34PM (#21160563) Homepage
    It's my observation that people do not complain as much when they pay or at least appear to pay, for a piece of software such as Norton Anti-Virus on IE (comes with Windows). It could just be due to different demographics, but people seem to complain a lot more when the piece of software is freeware, or FOSS. So in this case, being Norton and Microsoft, I don't expect any complaints outside of 50% of Slashdotters.
  • Haven't these AV people heard about Regular Expressions ?
    • Re: (Score:3, Insightful)

      They have. Do you have a RegEx implementation that doesn't make the machine grind to a halt while allocating a ton of ram? Especially when said RegEx machinery is supposed to do it with EVERY SINGLE file you touch?

      If you do, we're hiring.

      Seriously, do you really think this is due to simple neglect? AV tools have to be a lot of things, and one of them is tiny and fast. Else users will get angry. You can't simply use 500 megs of ram or take 10 seconds to scan a file. And yes, just a regex implementation won't
  • by Bayashi Maru (1101269) on Monday October 29 2007, @02:41PM (#21160657)
    Its the virus writers! Why can't they just help out now and again? I mean, is it that hard to remove the null bytes? Would it take them *that* long? Seriously guys - pitch in for once?
  • by Animats (122034) on Monday October 29 2007, @02:55PM (#21160805) Homepage

    Browsers are incredibly forgiving of bad HTML. Worse, the definition of "acceptable HTML" is undocumented, both for IE and Firefox. We discovered this writing Sitetruth [sitetruth.com]'s parser. We started out with BeautifulSoup [crummy.com], which is supposed to be a "forgiving" HTML parser. By browser standards, it's not; we had to make some improvements. Here are some things that show up in real-world HTML:

    • Incorrectly terminated HTML comments These are so widespread that you have to handle them, or entire web pages are sucked into unterminated comments.
    • Unescaped spaces in URLs Spaces in URLs are supposed to be escaped, but there are A tags out there using URLs with spaces.
    • Unescaped CR/LF within a URLThis is rare, and invalid, but multiline URLs are out there. Usually in hostile code.
    • Unicode URLs I've seen a Unicode "Pi" symbol, unescaped, in a URL in a UTF8 document. This was on a phishing site, so it was probably there because it broke some security product.

    Part of the reason for the growth in bad HTML is that Adobe seems incapable of making a version of Dreamweaver that consistently generates correct HTML for anything later than HTML 3.2. (Create a moderately complex page in Dreamweaver 8 in HTML 4.x or XHTML mode, and run it through a validator. It will fail.) If the best tools can't get it right, why should anybody else?

    Since real world HTML parsing is ambiguous, and bad HTML is widespread, differences between browser parsers and other tools can be exploited as security holes.

    • by Dracos (107777) on Monday October 29 2007, @03:49PM (#21161601)

      There is valid and invalid HTML, there is no "acceptable" gray area.

      IMO, browser tolerance for bad HTML is part of what got us into this mess. IE takes this to an unnecessary extreme. As a consequence, many de[velop|sign]ers failed to actually learn HTML (properly, if at all), and think XHTML is hard because it has rules.

      Give Adobe a little break, they've only owned Macromedia for a couple years. It's Macromedia's fault for producing what competent developers know is a shoddy tool.

      If language compilers, databases, or any other critical software were as forgiving as browsers are, the IT industry would be a shadow of what it is.

  • I'm honestly not sure who I hold accountable for this. IE for arbitrarily saying that <script> is the same as <sc0x00ript>, or Anti-virus/malware/junk/whatever programs for not REALIZING that IE is going to treat it that way, thus they damn well better check that way.

    If you're going to claim to detect stuff, know the system you're supposedly working with, and WORK. and if something doesn't look like the code you expect, DON'T EXECUTE IT. but no. Microsoft knows best. Shiny graphics and easy

  • This is not news... (Score:3, Interesting)

    by tkrotchko (124118) * on Monday October 29 2007, @03:10PM (#21161023) Homepage
    Consumer Reports came to this conclusion over a year ago. Here's some free synopsis of the the controversial issue where they used virus kits to make variants of existing viruses to determine how good virus scanners are.

    http://www.dvorak.org/blog/?p=6674 [dvorak.org]

    http://redtape.msnbc.com/2006/08/consumer_report.html [msnbc.com]

    Anti-virus software actually used to work much better, but I think that the variants have grown to such a large number it's more difficult. The cynic in me says that the virus makers do simple fingerprint based updates simply because it requires you to keep your yearly subscription up to date.

    I think they add almost no value, but on the other hand, people will happily run viruses if you tell them it's the latest picture of Brittany.
  • by Conspicuous Coward (938979) on Monday October 29 2007, @03:42PM (#21161501)

    This kind of thing is going to be an issue with all signature based AV detection. Changing a few bytes that won't alter the execution of the script/binary will change the signature the AV sees.

    In this case it might be fairly easy to program the AVs engine to ignore null bytes in HTML, but how hard would it be to make other minor changes to the code that don't alter the execution but do change the signature. This kind of scanning will only ever catch copy/paste type exploits.

    The AV simply doesn't know what bytes are significant, probably inserting a few NOPs or at most recompiling with minor code changes will slip most viri/trojans past signature based scanners, and I don't see how it could really be otherwise without making AV software orders of magnitude more complex and resource hungry than it already is.

    You can blame the AV companies, but there's a limit to how effective signature based AVs can be, and using detection based on behavior generally requires the user to know something about what the hell their PC is actually supposed to be doing in the first place, which would make it useless for precisely the users who most need AV protection.

    As I'm sure many have said before AV software is a sticking plaster over a gaping wound, if your browser decides to execute untrusted code from the internet with full privileges no amount of AV software out there will save you from getting owned.

  • Can we not (we being the non-MS using, slightly knowledgeable IT crowd) start some sort of *nix Certificate Services? If everyone on the Net used IPSec, with certificates as authentication (preferably that weren't compatible with Windows), we could have a "secure" net, and a non-secure one. FreeSWAN with their try-and-look-up-keys-in-DNS or something.
    My machine will talk to your machine, only if you've got one of these certificates.
  • Why can't the AV find the malware? I can find it WITHOUT AV! *points to the big blue "E"*
  • Sleepy (Score:3, Funny)

    by mqduck (232646) <mqduckNO@SPAMmqduck.net> on Monday October 29 2007, @06:03PM (#21163729)

    With enough null-bytes
    Is that like how if you add up enough zeros you eventually get one?

    No, I haven't the slightest clue what I'm talking about.
    • Better error handling means, when you get an error, it fails intelligently, without destabilizing the application, and passes a more informative error message. It doesn't mean the application should try and read the coders mind.

      The code should damn well work, or not run at all.
      • The web was once the realm of amateurs and enthusiasts who weren't coders. Failing gracefully by trying to read the coders mind were one of the big reasons that IE gained market share in the first place.
        • Yep. And ease of development for applications was one of the reasons Windows gained in popularity...and is the virus infested whore we know and loathe.

          If they want to stay the malware browser of choice, by all means, let them keep on doing what they're doing, because it's working great.
        • Failing gracefully by trying to read the coders mind were one of the big reasons that IE gained market share in the first place.

          So a platform that executes malformed code is superior to one that traps it and exits gracefully? (or just barfs?) I'm thinking this is a bit more dangerous than forgetting to close your BODY or HTML tag.
      • Whether you do or not, you seem to know what the hell you're talking about.

        I'm curious: is it the case that Firefox and Opera don't error correct in a way that facilitates this type of malware?

        Sadly, I've been locked into Internet Explorer (to use sharepoint, one of the most banal programs ever invented), but I never use it otherwise.
        • Re: (Score:3, Informative)

          Nope. You can get nailed with them too, occasionally...NoScript helps a lot. The problem with IE is ActiveX, and the fact that IE really is part of the operating system. Both Opera and FF are just programs, without really deep hooks into the OS, though they can still run code, and do damage...I seem to remember one of the FF "exploits" is that it will allow remote code to call IE as a handler in certain circumstances...Don't remember the details on that one, so don't quote me.

          Seeing a well designed ActiveX
      • Halting Problem (Score:5, Interesting)

        by starfishsystems (834319) on Monday October 29 2007, @02:58PM (#21160843) Homepage
        It was Fred Cohen who first coined the term "virus" in 1984 and showed that determining whether or not a given program is a virus is undecidable, that is, equivalent to the Halting Problem.

        Cohen saw that one implication of this result is that virus detection is an endless arms race. Viruses are free to mutate into an infinite variety of functionally equivalent forms, whereas the process of establishing their equivalence is undecidable.

        We've had this result in front of us for 20 years now. It has always seemed bizarre to me that so much of our focus should therefore be on this futile exercise of closing the barn door after the horse has gone. Surely it makes more sense to design systems based on accepted security principles which reduce the opportunity for infection and contain its effects.

        • Indeed.

          Anti-virus software's main purpose, it would appear, is not to detect novel threats, but to limit the proliferation of established threats. And for it to perform this task, it needs to be continually updated with new virus definitions.

          However, if every virus infection necessarily requires the exploiting of a security vulnerability... then it would seem that all the effort in designing and implementing a "virus signature update" system would be better spent designing and implementing a "uniform softwa
          • Anti-virus software's main purpose, it would appear, is not to detect novel threats, but to limit the proliferation of established threats. And for it to perform this task, it needs to be continually updated with new virus definitions.

            Somewhat. It also does some heuristics to predict certain things. These are always going to be hard, you're essentially trying to find out what abnormal is on a machine that is worth most when it is most flexible and has no hard definition of normal. Apps change, and with it, what's normal changes. If i'm an OS, how do i determine if the info that this app is sending is my pic for an IM, or secret data to a Identity Thief?

            However, if every virus infection necessarily requires the exploiting of a security vulnerability... then it would seem that all the effort in designing and implementing a "virus signature update" system would be better spent designing and implementing a "uniform software update" system, so that the number of vulnerabilities on a computer is always as low as humanly possible.

            This is more complex than you make it out to be. There are several fronts to at

    • by jd (1658) <imipak.yahoo@com> on Monday October 29 2007, @02:30PM (#21160491) Homepage Journal
      The part Microsoft should answer for is having anything that can cause escalation of privileges and breakout from containment. Those are two big no-nos. The rest of the responsibility is entirely that of the anti-virus writers. If they cannot detect polymorphism as simple as adding no-ops, then how can they be relied upon to detect any polymorphic virus other than to have signatures for each and every single one of the forms the virus can take? (Which could, in principle, be damn-near infinite.)
    • This is not about error handling and recovery. This is simply ignoring a standard. MS is notorious for that, they even gladly ignore their own standards and make the life of AV companies a veritable headache that way.

      You have no idea how many undocumented "error ignorance" the PE loader machine of Windows has. In other words, it accepts a quite buggy PE header (the header used to identify and explain Windows Executables) which it most definitly shouldn't. There is truely no reason to accept a malformed head
    • Re:Obvious (Score:5, Insightful)

      by SatanicPuppy (611928) * <Satanicpuppy AT gmail DOT com> on Monday October 29 2007, @02:31PM (#21160517) Journal
      They've got you brainwashed. The first line of defense is the program that's executing the code; it should "know" better than to just run everything that comes along. The second line of defense is the operating system: it should "know" what resources the original program is allowed to access, and limit it to those resources, and shut it the hell down if it starts trying to break out of it's sandbox.

      Malware detection and elimination programs are the last line of defense. At this point you've already taken it as a given that your applications and operating system are too stupid not to completely trash themselves, so a third party has to step in and protect the system. And in this situation, they're too stupid. It's a whole culture of incompetence, topped off by ignorant users.
      • The first line of defense is the program that's executing the code; it should "know" better than to just run everything that comes along.

        That's a matter of opinion. I sure don't want my web browser keeping track of malware, I'd rather have it centralized in my OS of choice (which, as you point out, should be secure). Regardless, this is such a facile obfuscation that you would think anyone who writes anti-malware code would remove the damn NOPs before getting the signature of the suspect code or perform
        • Re:Obvious (Score:4, Insightful)

          by SatanicPuppy (611928) * <Satanicpuppy AT gmail DOT com> on Monday October 29 2007, @02:51PM (#21160759) Journal
          What you're saying there is, "I don't want my web browser to do anything other than run anything that could possibly be interpreted as code without asking me or applying any logic." That's a pretty big deal.

          We get all these deals with malformed images, etc, where the browser interprets code embedded in an image...That means it's handler routine went, "Okie dokie, rendering an image...okay this image is really code, what the hell, lets just execute the code." W. T. F? That should never happen. It should absolutely refuse to interpret anything that is called with an inappropriate handler. That's just a no brainer.

          There will always be a way to obfuscate code to make it look like something else for long enough to get it in the door. You can stop this by refusing to handle things that aren't what they appear to be, and then allowing fine-grained controls on things that are what they appear to be.
          • I am not saying that they web browser shouldn't do any security checks at all. I'm saying that if I give the browser permission to access certain resources, and it is running a script that it is allowed to, it is not the browser's job to second guess me.
    • Disabling Script? (Score:5, Insightful)

      by JcMorin (930466) on Monday October 29 2007, @03:01PM (#21160875)
      I'm surprise to you can still use the web today without javascript... or at least you are missing a great part of it. I think the solution is to have secure browser... nothing more.
      • Re: (Score:3, Informative)

        I probably should've phrased that better. I don't use IE by default, thus, I disable scripting in an attempt to keep other programs from loading it up as an embedded/external browser (WiMP does this) and using it maliciously. Just a minor precaution. Also, take a look at NoScript https://addons.mozilla.org/en-US/firefox/addon/722 [mozilla.org] it disables all scripts by default but then allows you to whitelist/blacklist on a site by site basis. It's simple and works really well.
      • I use NoScript in Firefox.

        If a page doesn't render properly I temporarily allow script on that page (just two mouse clicks).

        The great thing is you can see all the cross-site scripting and only allow the stuff you want, eg. you can allow scripts from slashdot.org without allowing the scripts from doubleclick.net which are embedded in every slashdot page.

      • Re: (Score:2, Interesting)

        I'm surprise to you can still use the web today without javascript... or at least you are missing a great part of it. I think the solution is to have secure browser... nothing more.

        That browser would need to be written in Java or other memory-managed language with built-in security infrastructure. A modern browser is simply too big and complex to make it secure if written in C, C++ or any language like that, especially since it can't just discard garbage input because most Web pages are more or less ful