Slashdot Mirror


Open Source Firm Releases Patch for IE Bug [UPDATED]

An anonymous reader writes "An open source and freeware software development web site has released a patch to fix the URL spoofing vulnerability in Internet Explorer, which can be exploited by scammers who try to trick people into revealing details of online banking accounts or other private information." Naturally, the source for the patch is available as well. Update: 12/19 15:06 GMT by M : Sadly, the patch appears to contain a buffer overflow and some possibly-malicious code - see an analysis and news story, and this comment which suggests the patch author is trying to figure out who is taking advantage of the original vulnerability. Caveat patcher.

39 of 544 comments (clear)

  1. Direct Link to patch by bogie · · Score: 4, Informative

    For the adventurous among you.

    http://www.openwares.org/downloads/IEpatch.EXE

    --
    If you wanna get rich, you know that payback is a bitch
    1. Re:Direct Link to patch by GaelenBurns · · Score: 4, Informative

      Thanks. I've patched my test system and it didn't even require a reboot! Windows has come so far... when you use as little MS software on it as possible.

      Anyway, I've tested IE by running through some windows updates and going to a few exploit test sites. Everything has behaved as it should.

      By the way, one of the joys of this patch is that when you browse to a site attempting the exploit, you get one of those nice IE error pages, formatted in the traditional way. Except, instead of seeing Microsoft branding all over it, the Openware patch is referenced. I don't know... having this little bit of OSS within IE warms my heart. And just in time for the holidays!

  2. Mmf. by BJH · · Score: 5, Informative

    It's only "open source" in the very loosest sense. From the patch:

    Internet Explorer URL Spoofing Security Patch

    Developed by Opensoft Corporation, Vanuatu

    Contact: opensoft@openwares.org

    Opensoft Corporation, Vanuatu
    Copyright 2003 All rights reserved.

    Terms of Agreement:

    By using this source code, you agree to the
    following terms:

    1) You may use the source code, resource
    files for educational purposes only.
    2) You MAY NOT redistribute this source code
    without written permission. Failure to do
    so is a violation of copyright laws.
    3) The author of this code may have retained
    certain "additional copyright rights".
    If so, this is indicated in the author's
    description.

  3. Re:How were they able to make such a patch... by WolfWithoutAClause · · Score: 4, Informative
    You'd basically have to reverse engineer the software, back to some other form of programming language - probably ASM.

    Off-hand- I'd probably stick a debugger on it, viewing the code at assembler level, and trace the carriage return in from the OS; or something like that. I mean the OS has to call or return to IE when the carriage return is hit; there can't be that many places in the code where it is waiting for input- stick a breakpoint on all of them, and whichever one gets hit after you click on the carriage return is starting to process the code. Run it multiple times with different input and pretty soon you should start to see the patterns.

    It's not especially easy, but it's doable, I've done stuff like that before. It's easier if you have the source code, but it's just slower if you don't.

    --

    -WolfWithoutAClause

    "Gravity is only a theory, not a fact!"
  4. Re:I already got the patch by LPetrazickis · · Score: 2, Informative

    Actually, Mozilla/Firebird is partially vulnerable to this bug too. At the moment, the patches are Opera and Safari.;)

    --
    Is this a sigs-optional kind of place? 'Cause I am totally down with that if you know what I mean.
  5. Memory leak by Anonymous Coward · · Score: 4, Informative

    From a cursory look at the source code, it looks to me as though there are at least two memory leaks. To be more specific, in function BeforeNavigateEvent(), there are two calls to malloc(), but no calls to free(), and the pointers that malloc() returns are stored in local variables, so there is no possibility that a parent function free()s them. Having said this, I haven't written any code under Windows, so maybe there is some kind of garbage collection in the Windows memory model that I am ignorant of?

  6. Re:How were they able to make such a patch... by KFK+-+Wildcat · · Score: 5, Informative
    It only redirects if the address seems like it contains illegal caracters (and thus tries to spoof the address), not for all webpages accessed.

    See http://www.openwares.org/cgi-bin/exploit.cgi?slash dot.org&www.goatse.cx for instance.

    It might log the addresses attempting to spoof webpages, but I'm all for that. And at least this explains clearly that a spoof was attempted through this exploit. I think it's better than just correcting the string, which would access a spoofed webpage anyways, even if showing the right address at the top... which of course would not work as well but many would still fall for it no matter, especially since it probably would look like http://www.paypal.com@paypal.something.net/ which would seem legitimate to the casual looker.

  7. Re:How were they able to make such a patch... by netsharc · · Score: 2, Informative

    It seems like they made an add-on to IE (it's been done before, e.g. GoogleBar, various pop-up stoppers, Gator/Claria), that probably monitors all URLs, and removes %00's and %01's out of it before giving it back to IE.

    Funny stuff, it's mostly a band-aid solution IMO, but a nice slap in the face for MS. :P

    --
    What time is it/will be over there? Check with my iPhone app!
  8. Re:Seriously. by AaronW · · Score: 2, Informative

    Out of curiosity I took a quick look at the code. Right off the bat I see what MAY be new problems introduced by this code (I'm not a Windows programmer or user so I can't be sure), but I see what looks like a memory leak for every URL. In CIETray::BeforeNavigateEvent a new destination string gets allocated via malloc.

    1. *dest is not verified to be non-NULL.
    2. *dest does not appear to be freed, resulting in a 256 byte memory leak per URL.
    3. URLs greater than 255 characters in size might have problems since the length 256 is hard-coded into the code.
    4. It may be a similar problem for *url.

    Granted, I only spent 5 minutes glancing at the code, but I don't like what I see, and the cure might be worse than the disease. I'd like to see a serious audit of this code before trusting it.

    I'm not sure if these are actual problems or not since I don't have the time to learn all the Windows APIs and programming, but it looks highly suspect to me. I do embedded C and Unix programming, not Windows programming.

    -Aaron

    --
    This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
  9. MyIE2 by Anonymous Coward · · Score: 1, Informative

    MyIE2, which uses the IE engine but adds a lot of features (including tabbed browsing), released an update on Dec.14 to fix this bug.

    http://www.myie2.com/html_en/update.htm

  10. Re:Are you an accountant? by knewman_1971 · · Score: 2, Informative

    Wow. That's great! You mean, somewhere, there's a group of people who have reviewed this code and pronounced it safe for my enterprise? Kool and the gang, man! Where's the url for that? Better yet, give me a phone number I can call so I can talk to them. I'm sure that I've met most of them and can personally attest to the fact that they know shit over shinola about development AND my environment.

    Sorry Skippy...I've got better things to do with my time than potentially fuck the enterprise that my employer has entrusted to me and my team.

    Who's to say that my onsite TAM isn't going to spontaeneously combust when he sees that I rolled out a patch from some group o' yayhoos who genned it up for shitz n grinz? What happens when my support contract gets nullified on 10,000+ desktops? You think my boss is going to give a tin-plated rat's ass that some Slashdot folks think it's cool that there's an open source patch for a proprietary app?

    Microsoft may not be the best dog, and it may not have the fewest fleas. But when the guy signing your paycheck says that you're a Microsoft shop and you're gonna support it by their rules, then you by-God are gonna do it. Or find yourself a new line of work.

    --
    where is the "I feel for ya, but that's some funny ass shit" moderation?
  11. Re:How were they able to make such a patch... by netsharc · · Score: 5, Informative

    Wrong. :) The URL I found in the source code is http://www.openwares.org/cgi-bin/exploit.cgi? .. try it with http://www.openwares.org/cgi-bin/exploit.cgi?slash dot.org. It's the error page that the program displays when it hits a probable exploit. The program does the checking in your computer and when the link doesn't have %00 or %01, it just shows it normally. Only when it does see a %00 or %01, it sends the link to the above mentioned page.

    If you ask me, maybe they want to have a record of which evil Paypal clone-sites are taking advantage of the exploit so they can tell the cops. Maybe they want to make it easy to tell the users that "MS has issued an update for this problem, please download it!", but of course maybe they want to display ads on that error page (Heh I would do the same).

    But no, URLs that are okay are not being sent to that site.

    --
    What time is it/will be over there? Check with my iPhone app!
  12. Re:How were they able to make such a patch... by foofoodog · · Score: 2, Informative

    It is more like a crutch. Their DLL uses the Browser Helper Objects COM hook to synch events from IE. They examine the url and take you to their website instead when you try to navigate to a spoofed url.

    --
    Can I bum a sig?
  13. Re:Seriously. by redfenix · · Score: 2, Informative

    How many times did you decide to post this same comment? It does not become you, especially since the other two were anonymous.

    Here's the first anonymous duplicate posting.

    And here's the other anonymous duplicate posting!

    --
    "It's a very tangled subsystem." --Windows kernel guru
  14. This "patch" leaks memory - and other bad stuff by bighoov · · Score: 5, Informative

    A list of the bad things about this "patch", just at first glance:

    1. Leaks 256 bytes on every URL navigation
    2. Leaks 512 additional bytes if it finds an exploit URL
    3. Creates a string with the \1 char in it on every call, but does nothing with it
    4. Will overwrite stuff on the stack if the URL has the exploit and is very close to 256 chars in length.

    It's a good thing these guys aren't on the real IE dev team.

  15. Re:How were they able to make such a patch... by crapulent · · Score: 5, Informative

    From looking at the source it's not actually a patch so much as a 'wedge'. It creates a typelib (or COM object of some sort) that registers itself with the system. By doing this it hooks into the IE API, such that it is called every time a URL is visited. If it detects that the URL contains the spoof, it redirects you to their site, where a CGI script gives you an IE-error-like page: For example if the faked part of the URL was 'fake.com' and the real site was 'real.com' it would redirect you to http://www.openwares.org/cgi-bin/exploit.cgi?true. com&http://fake.com

    So this is not so much a patch as a 'workaround'. It doesn't fix anything, it just intercepts those URLs and warns you about it.

  16. Re:And this matters why? by damiam · · Score: 2, Informative

    dear moron: The patch only redirects URLs that it has already verified are being spoofed. The only time a request is redirected is if you've tried to access a spoofed page.

    --
    It's hard to be religious when certain people are never incinerated by bolts of lightning.
  17. RTFC by b17bmbr · · Score: 5, Informative

    if you'd have taken a few minutes (or seconds w/broadband) to get the source and look at the code, you'd see this:

    By using this source code, you agree to the following terms: 1) You may use the source code, resource files for educational purposes only. 2) You MAY NOT redistribute this source code without written permission. Failure to do so is a violation of copyright laws. 3) The author of this code may have retained certain "additional copyright rights". If so, this is indicated in the author's description.

    since i doubt there'd be anything educational about IE source code...and by the way, i don't think this qualifies as an open source license.

    --
    My problem? I was perfectly gruntled, until some numbnuts came by and dissed me.
  18. Do Not Use It-It's Got a Huge Vulnerability Itself by DmitriA · · Score: 5, Informative
    For one thing, it's an IE add-on (similar to a GoogleBar and others), not a patch. So it's a messy solution to begin with.

    On top of that, it's buggy. It has a memory leak in its BeforeNavigatorEvent() IE callback function which gets triggered before a loading of each new page. There they allocate a string of 256 bytes, but never even bother to clean it up!
    I'm not even sure if that memory is going to be cleaned up when you close all the IE windows, since it's really a Windows system component and this DLL may not be unloaded even with the closing of IE. But I may wrong that point...

    But even that's not the worst thing. Their code actually contains a buffer overflow, allowing the attacker to execute code on your machine with the privileges of the IE process just by crafting an invalid URL link and getting you to click on it!

    Basically, they use WideCharToMultiByte() to convert the unicode URL string to that allocated 256-byte ASCII character array. They tell the function the size of their array, but if the URL string exceed 256 characters in length, it will not overwrite that buffer and cause an immediate buffer overflow. Instead it will fail and tell you to increase your buffer. Well, guess what? They don't check for that failure condition (and, incidentally, it may fail for many other reasons during the Unicode->ASCII conversion) and happily proceed to use it in a strcpy() later on, overwriting another 256-byte character array which is now located on the stack. A nasty buffer overflow just waiting to be exploited...

    So to summarize, they took a relatively minor problem (URL spoofing) and made it a hundred times worse with their 'solution'. Great job, guys!

    Offending code:
    /* memory leak */
    char *dest = (char *)malloc(256*sizeof(char));

    /* Unicode->ASCII conversion that doesn't do error checking */
    WideCharToMultiByte( CP_ACP, 0, BSTR)url->bstrVal, -1, dest, 256, NULL, NULL );

    ...

    /* vulnerable arrays on the stack */
    char sFake[256];
    char sTrue[256];

    ...

    /* please overwrite the return address on the stack and execute my shellcode */
    strcpy(sFake,strstr(dest,"\2") +1);
  19. Re:Do Not Use It-It's Got a Huge Vulnerability Its by DmitriA · · Score: 5, Informative

    Eh. Just realized that since WideCharToMultiByte() will fail, it will not actually copy the URL to the dest[] array and thus, you probably can't overwrite the return address with a legitimate value and get it to point at your shellcode. It's still easy to overwrite it with a random value (with whatever is sitting at the time in the uninitialized dest[] array) and cause a crash, but executing malicious code may be a little harder to pull off...

  20. Re:This doesn't actually fix the problem by crapulent · · Score: 4, Informative
    Yeah no shit, you'd expect better code from "Security researchers." This thing is ripe with bad code (it's sprinked with gotos for error handling) as well as at least one probably exploitable buffer overflow. Observe: here is a bit of the code for the main URL checking routine: ('dest' holds the URL in question and can be up to 256 chars long)


    char surl[256];
    strcpy(surl,"http://www.openwares.org/cgi-bin/ex pl oit.cgi?");

    char sFake[256];
    char sTrue[256];

    if (NULL != strstr(dest,"\2"))
    {
    strcpy(sFake,strstr(dest,"\2") +1);
    _mbsnbcpy((unsigned char*)sTrue,(unsigned char*)dest,strlen(dest)-strlen(sFake)-1);
    sTrue[strlen(dest)-strlen(sFake)-1]='\0';
    RemoveAtAnd(sTrue);
    RemoveAtAnd(sFake);

    } else if (NULL != strstr(dest,"\1"))
    {
    strcpy(sFake,strstr(dest,"\1") +1);
    _mbsnbcpy((unsigned char*)sTrue,(unsigned char*)dest,strlen(dest)-strlen(sFake)-1);
    sTrue[strlen(dest)-strlen(sFake)-1]='\0';
    RemoveAtAnd(sTrue);
    RemoveAtAnd(sFake);
    }
    else
    {
    strcpy(sFake,"unknown");
    strcpy(sTrue,"unknown");
    RemoveAtAnd(sTrue);
    RemoveAtAnd(sFake);
    }

    strcat(surl,sFake);
    strcat(surl,"&");
    strcat(sur l,sTrue);

    Notice the parts in bold. Is it not apparent that 'surl' can easily be overflowed if strlen(sFake) + strlen(sTrue) + strlen("http://www.openwares.org/cgi-bin/exploit.c gi?") exceeds 256. This is really sloppy code.
  21. Re:And this matters why? by damiam · · Score: 1, Informative

    Why would they do the analysis on the server? Checking for an invalid character can be done in one line of C code (a few more to check for all possible invalid chars). No programmer with an IQ above freezing would go to all the extra trouble to implement a special server to run that code when it works much better in the client. All the server is is one CGI script that dresses up and echos back the parameters it was sent.

    --
    It's hard to be religious when certain people are never incinerated by bolts of lightning.
  22. Holy FuckBalls by Anonymous Coward · · Score: 1, Informative
    Here is the code. What it does is REDIRECT EVERY URI TO WHICH YOU NAVIGATE THROUGH THEIR SERVERS!

    AM I THE ONLY ONE TO WHICH THIS SCREAMS PRIVACY INVASION?

    I think Slashdot just posted a link to a trojan on the front page. To all who just installed this: you have been pwn3d.
    void __stdcall CIETray::BeforeNavigateEvent(LPDISPATCH pDisp,
    VARIANT FAR *url,
    VARIANT FAR *Flags,
    VARIANT FAR *TargetFrameName,
    VARIANT FAR *PostData,
    VARIANT FAR *Headers,
    VARIANT_BOOL* Cancel)
    {
    char *dest = (char *)malloc(256*sizeof(char));

    WideCharToMultiByte( CP_ACP, 0, (BSTR)url->bstrVal, -1,
    dest, 256, NULL, NULL );

    char s[3];
    sprintf(s,"%c@",1);

    if (NULL != strstr(dest,"\2") || NULL != strstr(dest,"\1") || NULL != strstr(dest,"\218"))
    {
    WCHAR *url=(WCHAR *)malloc(256*sizeof(WCHAR));

    char surl[256];
    strcpy(surl,"http://www.openwares.org/cgi-bin/expl oit.cgi?");

    char sFake[256];
    char sTrue[256];

    if (NULL != strstr(dest,"\2"))
    {
    strcpy(sFake,strstr(dest,"\2") +1);
    _mbsnbcpy((unsigned char*)sTrue,(unsigned char*)dest,strlen(dest)-strlen(sFake)-1);
    sTrue[strlen(dest)-strlen(sFake)-1]='\0';
    RemoveAtAnd(sTrue);
    RemoveAtAnd(sFake);

    } else if (NULL != strstr(dest,"\1"))
    {
    strcpy(sFake,strstr(dest,"\1") +1);
    _mbsnbcpy((unsigned char*)sTrue,(unsigned char*)dest,strlen(dest)-strlen(sFake)-1);
    sTrue[strlen(dest)-strlen(sFake)-1]='\0';
    RemoveAtAnd(sTrue);
    RemoveAtAnd(sFake);
    }
    else
    {
    strcpy(sFake,"unknown");
    strcpy(sTrue,"unknown");
    RemoveAtAnd(sTrue);
    RemoveAtAnd(sFake);
    }

    /* if (NULL != strstr(dest,"\0"))
    {
    strcpy(sFake,strstr(dest,"\0") +1);
    _mbsnbcpy((unsigned char*)sTrue,(unsigned char*)dest,strlen(dest)-strlen(sFake)-1);
    sTrue[strlen(dest)-strlen(sFake)-1]='\0';

    &nbsp ; }*/

    strcat(surl,sFake);
    strcat(surl,"&");
    strcat(surl,sTrue);

    MultiByteToWideChar( CP_ACP, 0, surl, -1,
    url, 256 );

    m_smtWB->Navigate(url,0,0,0,0);

    *Cancel = VARIANT_TRUE;

    }
    }
    1. Re:Holy FuckBalls by Anonymous Coward · · Score: 3, Informative
      Don't program much do you? Tell you what sunshine why don't you tell me what this if statement does:
      if (NULL != strstr(dest,"\2") || NULL != strstr(dest,"\1") || NULL != strstr(dest,"\218"))
      Since you missed it the first time let me spell it out. They search the destination string for a "\2", "\1" or a "\218". If they find it then they redirect to their own server sending if the offending URL.
    2. Re:Holy FuckBalls by Pharmboy · · Score: 2, Informative

      Uhh... MS al ready does on host not found errors, with their MSN search.

      Not only do they redirect you to their servers, but their service packs have a nasty habit of resetting your IE preferences to doing this, even if you have chosen to NOT go to MSN.com in your settings. I don't like either company doing this, but MS is the worse about it. Symantec also is bad about this kind of violations. Try installing and uninstalling any Norton product, then go swimming into your registry and see. Adds half a meg of registry even when uninstalled.

      Again, a major reason I keep looking toward Linux/MacOS/BSD.

      --
      Tequila: It's not just for breakfast anymore!
    3. Re:Holy FuckBalls by arkanes · · Score: 2, Informative
      I'm a little more worried about this part:
      strcat(surl,sFake);
      strcat(surl,"&");
      strcat(sur l,sTrue);

      Notice the total lack of sanity checking on the lengths of those buffers... This is especially bad because surl is a stack based buffer and theres no reason whatsoever to not use strncat() in this case.

  23. Re:Inept and free! by fm6 · · Score: 2, Informative
    I don't understand how a large, successful software company can do such sloppy QA and think that nobody will notice.
    It's called "absence of competition".
  24. Re:This doesn't actually fix the problem by realdpk · · Score: 2, Informative

    I do not believe that is entirely correct. It's only giving it 256 bytes to store the redirected-to URL. It then gives 256 bytes for the fake URL and the true URL. Nothing, that I see in here, is preventing strcat/strcpy from pushing data beyond 256 bytes.

  25. Re:The time problem has nothing to do with the pat by 1lus10n · · Score: 3, Informative

    To quote: "MS TRIES to make sure that their patches don't break 3rd party apps."

    Bullshit ! MS only tests for apps that have parent companies they get along with (also known has, they haven't tried to start a monopoly in that market yet.). As a matter of fact they were convicted in court of releasing patches that BROKE third party functionality on PURPOSE.

    Who ever modded you as insightful was an ass.

    --
    "Two things are infinite: the universe and human stupidity; and I'm not sure about the the universe." --Albert Einstein
  26. Avoiding buffer overflows in C by Chris+Burke · · Score: 2, Informative

    is not that freaking hard, people!

    At least this simple type with C-style strings (char*) and fixed-size buffers.

    Here's the rule:
    Instead of using any of
    strcat()
    strcpy()
    sprintf()
    gets()

    you use
    strncat()
    strncpy()
    snprintf()
    fgets()

    The second set of functions all take a length parameter which is the maximum number of bytes that the function will copy. You don't have to worry about your source not being null-terminated, or being unusually long, because the function will not copy more bytes than you say it can. snprintf() (in C99) is especially cool because it returns the number of bytes it would have written if the length parameter were larger.

    strncat() is still kinda annoying, because it copies N bytes, as opposed to using N as the overall size of the target buffer. So whereas in the other functions you just pass it the size of the destination buffer, with strcat you pass size of buffer - strlen(buffer). Still pretty easy.

    Do not use strcpy, strcat, or sprintf with user-supplied input! And especially don't use gets()!

    It really isn't that hard!

    --

    The enemies of Democracy are
    1. Re:Avoiding buffer overflows in C by Ninja+Programmer · · Score: 4, Informative
      Here's the rule:
      Instead of using any of
      strcat(), strcpy(), sprintf(), gets()

      you use
      strncat(), strncpy(), snprintf(), fgets()
      This is hardly a sufficient recommendation for significantly reducing buffer overflow problems in C code. It changes the problem into a length management problem, where the unskilled C coder (after all, didn't they have a buffer overflow in their code in the first place?) is not necessarily going to fare any better.

      If you want to really reduce buffer overflow problems I suggest you visit the following two web pages:

      The Better String Library

      and

      Getting user Input

      I personally guarantee that buffer overflows in your code will dramatically decrease if you use the ideas spoken of and the source code on those pages.
  27. You don't know, apparently. by ZxCv · · Score: 2, Informative

    You do know that the "patch" is a spyware style CGI script to log your browsing habits?

    Wrong. Try actually reading the source, and you'll see that's not what it is at all. I don't even use IE, so my reading through the source was very quick, yet I was even able to pick up on how it actually works.

    --

    Perl - $Just @when->$you ${thought} s/yn/tax/ &couldn\'t %get $worse;
  28. Re:Crikey, mate. by Dwonis · · Score: 2, Informative
  29. No, not so much. by Jeff+Mahoney · · Score: 4, Informative

    Check the code again.

    The only URLs that get sent to their servers are the ones that it's filtering out, ones that would normally exploit the bug. At the other end (granted, at least for now) is an IE-lookalike error message saying that the exploit was caught.

    The first line before all that stuff involving redirection through their servers:
    if (NULL != strstr(dest,"\2") || NULL != strstr(dest,"\1") || NULL != strstr(dest,"\218"))

    It only matches URLs containing %01, %02, or %8F, which doesn't really "fix" the problem, but it's at least a workaround.

  30. Re:How about this one .... by aulendil · · Score: 3, Informative
    Doesn't this mean that nobody else is allowed to distribute it?

    No, the GPL isn't the only way for distributing source code. The code could be in the public domain (or no license), allowing anyone to use/distribute it, it could well be under a BSD style license which would allow anyone to do whatever with the code. And no, whichever way the code is licensed Microsoft couldn't lose source code. As this is a standalone fix using the IE COM interface the code doesn't link to any Microsoft object code. Therefore the GPL doesn't apply.

  31. Re:How about this one .... by arkanes · · Score: 2, Informative

    Except that, in fact, it's not any of those OTHER options either. No, nobody besides the author is permitted to distribute the patch code (RTFLicense). The GPL not applying has nothing to do with it being a IE COM help object, the GPL doesn't apply because the code isn't under the GPL. Simple as that.

  32. Re:How were they able to make such a patch... by arkanes · · Score: 2, Informative
    It's not a "patch", its an IE helper object using IEs COM interface.

    It's also a really crappy implementation thats full of it's own security and coding issues - it's cool that they did it and all but I kinda wish that they'd spent some more time checking the code, because this is exactly the sort of shit that MS is talking about when it brings up it's FUD about "it takes a long time because we have to test the patches".

  33. Re:The time problem has nothing to do with the pat by Anonymous Coward · · Score: 2, Informative

    So the old mantra of "Dos isn't done until Lotus won't run" has been completely wiped out of MS' corporate consciousness?

  34. Re:No Trusted Computing logo on patch? by WNight · · Score: 2, Informative

    I applied Win2K patches (via Windows Update) and it rendered my system unbootable. Something about path expansion(?) and msgina.dll... Not worth investigating when Ghost is so handy.

    Luckily it was only the spare computer, but still...