Archive for October, 2005

Help!

Thomas Ptacek | October 31st, 2005 | Filed Under: Disclosure

Buried in a comment, Peter says:

Why on earth should people be forced to “make a case” against helpfulness? If it was really just help, couldn’t they decline the favor? No, the onus is on bugfinders (finding a buffer overflow really isn’t research anymore) to offer their service and wait for a request - that’s how “help” works.

Peter has misunderstood something fundamental about the process. Let’s “help” him get his head around this:

Vulnerability researchers aren’t “helping” the vendors and producers of software by publishing vulnerabilities (though that is often a side-effect of their work). They’re “helping” the customers who deploy that software. Those customers very much want that “help”, which is why providing that “help” pays so fucking well.

If Peter Lindstrom is advocating for a process whereby researchers will post to Bugtraq and say, “I’ve found a new remote code execution bug in Snort, would anybody like to take me up on my offer to help them identify and eliminate it?”, that’s a valid, though stupid, argument to make. Peter Lindstrom will simply have added about 34 seconds to the exact process we have now[*].

I don’t think that’s Lindstrom’s argument, but I’m waiting to hear the coherent alternative argument to synthesize from the points he’s making.

Global 2000 enterprises spend tens of millions of dollars a year —- just shy of 100 million dollars, not counting in-house headcount expenses or revenue from products whose value props depend on security research —- on targeted vulnerability research. This is an existence proof of the demand for information about vulnerabilities in deployed software.

Comment Bubble 3 Comments

Ok Peter, I’ll respond: No.

Thomas Ptacek | October 31st, 2005 | Filed Under: Disclosure

You can sum up Lindstrom’s arguments this way: the industry is best served by making life difficult for weak attackers, even at a cost of making life easier for strong attackers.

We can go round and round about whether this is a useful strategy, but my read is that this argument has become boring, especially when it’s carried on between me and Peter Lindstrom.

Suffice it that I don’t believe “weak attacker” and “strong attacker” are useful distinctions for software security. Unlike cryptographic data security, where “strong attackers” benefit from millions of dollars in equipment, and where it is therefore useful to employ gradations like “foreign government” or “organized crime”, clever software exploits are no more expensive than cookbook exploits.

To the rest of Lindstrom’s argument, I’ll lapse into smug laziness and say that Lindstrom’s opinions about what Neel Mehta, myself, or anyone else will inspect has no impact on what we’ll be publishing. On the other hand, Mehta’s opinion on what is “fair game” has a LOT of impact on what will get published, and, in the immortal words of Nelson Muntz, “hAH-hAH!”

You don’t need to consider motives to defend “opposition research”: Snort is a high-value target which is intentionally exposed to peer review by nature of an open codebase. It’s definitely a “security hot spot”, and overtly positioned that way. Does Mehta get an emotional kick out of beating a competing security system? I certainly do. Does that impact the value of strengthening a widely deployed security tool? I’m waiting for someone to show me how.

I don’t even think Marty buys the idea that finding bugs in Snort is unproductive.

Comment Bubble No Comments

Stop Insinuating Things About Mehta’s Snort Finding

Thomas Ptacek | October 29th, 2005 | Filed Under: Disclosure

I feel silly sticking up for Neel Mehta, who doesn’t need any help from me, but to clear something up: just because ISS published the advisory doesn’t mean that Mehta was forced to research Snort. I would be surprised if Mehta doesn’t have a huge explicit say in what his targets are, and it is clear to everyone in the industry that he has a total implicit say, since he’s a team MVP.

The process of moving a finding from vendor disclosure to public advisory usually takes a long time. The timeline here seems to be:

This unusually fast turnaround is a credit to the SourceFire team; on the other hand, Snort is open-source, so once the fix is committed there’s an incentive to publish formally, before black-hats notice.

I don’t condone CERT’s involvement here, but for a totally different reason than Bejtlich. Bejtlich sees it as evidence that ISS went out of their way to throw an elbow at SourceFire. But CERT, ISS, and SourceFire coordinated the advisory and didn’t release it until SourceFire patched; that’s the same process as would have occurred without CERT. And that’s my problem with CERT: I don’t see the value they add, apart from acting as an unneeded dampener in the disclosure-publication process. Maybe someone can clear that up for me.

In any case, coordinating an advisory is a huge pain. My company handles it for me. Neel’s handles it for him. I think it’s safe for me to put words in his mouth and say that Neel would rather be getting real work done, or for that matter be getting eaten by a bear in British Columbia, than to be on the phone with CERT and SourceFire for a week.

Finally: nobody has made any case for why “opposition research” (Jaquith’s term) is anything other than helpful to the community as a whole. Snort is widely deployed and perfectly fair game, by which I mean, people who take the time to improve its code are doing the community a service, regardless of what you think their motives are.

Comment Bubble 3 Comments

Everything You Need To Know About iSCSI If You Have 5 Minutes To Learn

Thomas Ptacek | October 25th, 2005 | Filed Under: Bitching About Protocols, Matasano, New Findings

iSCSI is a network protocol that creates the illusion, on behalf of a network storage system, that network storage clients have directly attached SCSI disks (LUNs). It does this by proxying SCSI commands (CDBs) over the network. Since modern Ethernet is faster than modern SCSI drives, this works pretty well.

Until you get to the security aspects, that is:

  1. We broke the market-leading implementation. I believe this is the first real iSCSI security finding (I’m happy to be corrected about this). The break is, as I mentioned earlier, pretty bad: a small piece of exploit code that works on any vulnerable Filer gives you carte blanche to every iSCSI LUN, without a password.

  2. iSCSI is a complicated protocol. It combines everything we love about text key-value negotiation with the rich, chocolatey goodness of a binary protocol with multiple length fields that can conflict with each other, one of which is expressed in different units from the rest.

  3. Session management in iSCSI is painful. iSCSI runs over TCP. TCP goes through some lengths to ensure that all TCP connections share bandwidth fairly. This struck the iSCSI designers as a bad idea, so they came up with a session management system that allows a single iSCSI client to bundle together multiple TCP connections to claim more bandwidth. For some reason, which may or may not be defensible, this requires multiple session-ID fields and a state machine. Is it possible for an iSCSI attacker to “hijack” a preexisting iSCSI session by playing games with these fields? I can’t say.

  4. iSCSI creates new, interesting vectors for attackers to exploit. For example: at some point, an iSCSI-wrapped SCSI CDB becomes an unwrapped SCSI CDB, where it is sent to SCSI firmware. In order words, attackers now have a viable avenue to attack SCSI firmware directly (before, to get to this point, you already had to be at the game-over point of owning the SCSI firmware’s host OS kernel). To put this in perspective: the errata list for Adaptec SCSI firmware was so scary they refused to publish it to OpenBSD.

  5. iSCSI creates new, interesting vectors for attackers to exploit. For example: iSCSI asks you to run a filesystem over the network. This is a subtle, awful difference from the way NFS and CIFS work: in those protocols, you work in terms of filenames and the actual underlying filesystem is transparent, encapsulated in the server. In the SAN universe, the underlying filesystem metadata is just another set of storage blocks, flying over the network. Put differently: has anyone audited the NTFS driver code for clientside vulnerabilities?

In theory, iSCSI is supposed to be run on backchannel networks, and over IPSEC. In practice, you can scan networks for TCP:3260 to see how true this is.

Is this alarmist? Sure. That’s why it’s in a blog post. But —- and I know I’m a total geek about this —- I am fascinated by the extent to which things like iSCSI create new, weird security vulnerabilities. To quote one of my business partners: on internal networks, things are getting worse before they get horrible.

Comment Bubble 2 Comments

Awooga! Awooga!

Thomas Ptacek | October 25th, 2005 | Filed Under: Uncategorized

Beep! Beep! MREEEEE-OWWW MREEEEE-OWWWW! OooooOOOP! OooooP!

This is bad (if I do say so myself). If you are affected (that is, if you use NetApp filers for iSCSI), you should patch. Potential exploits for the hole can be made very user-friendly.

I’ll have more to say on the advisory and on iSCSI in general later.

Comment Bubble No Comments

Opposition Research

Thomas Ptacek | October 22nd, 2005 | Filed Under: Uncategorized

There is nothing wrong with looking for vulnerabilities in your competitor’s products, and Neel Mehta has built enough of a rep for himself that he doesn’t need to take “marching orders” from anybody. Snort is the most popular IDS deployed on the planet, and it is perfectly fair game: researchers are doing the community a service when they find holes in it.

Quickly, though: I agree with a lot of Bejtlich’s wormability analysis, but the fact that Snort’s code is freely available (to be compiled on a variety of different toolchains on a variety of different operating systems in a variety of different configurations) makes it less wormable, not more. Each variant installation is a different offset to get wrong.

Comment Bubble 1 Comment

My Disclosure Rant

Thomas Ptacek | October 20th, 2005 | Filed Under: Uncategorized

A caveat: these comments are not a reaction to any current vendor I’m dealing with right now (caveat necessary due to previous two weeks worth of stalling comments)

Five Cheap Tips For Vendors Handling Security Disclosures

  1. Have A Security Liason

    Far and away the most important advice I can give:

    • Have someone on staff who owns vulnerability disclosure

    • Publish their contact information

    • Escalate disclosed vulnerabilites to them immediately

    Your security contact does not need to be a developer. But it does need to be someone who at least appears to be outside the normal support escalation chain. Simply allocating this role is a very cheap way to make your company seem responsive to disclosures.

    We know your top-tier support staff is excellent, that you’ve invested lots of time and resources into equipping them to solve customer problems, and that you’ve built up years of experience on how to handle critical customer problems. But shunting security disclosures through standard support guarantees not just delay, but the strong perception of delay, and thus a major incentive to write an exploit to expedite the process.

    A good vendor security contact knows what to say and, more importantly, what not to say to a reporter —- things like, “SSL means nobody can attack the service”, or “You can prevent this server vulnerability by deleting the client binary”. A good vendor security contact creates the perception that you are taking the disclosure seriously, and that my time is better spent finding other vulnerabilities than it is in demonstrating how severe this one is.

  2. Have A Dedicated Security Enhancement/Bug-Fix Process

    Your internal ticket to fix blind, pre-authentication remote code execution vulnerabilities probably looks just like other tickets, like the ones to fix spelling errors in your help files. And that’s fine. But there is no reason customers should be exposed to that piece of information.

    Don’t call security fixes “enhancements”. Your customers do not perceive “closing major vulnerabilities” as “enhancements” any more than Ford customers perceive the recalls on exploding Firestone tires to be “special bonus upgrades”.

    This is so simple to fix that it’s amazing everyone doesn’t do it. Create special bug numbers for security vulnerabilities. Don’t even call them “bugs”. Call them “urgent security issues” or “incidents”. For god’s sake, don’t call them “feature requests”. You don’t have to do anything more than changing a label to create the perception that you are on the case.

  3. Confirm Vulnerabilities Rapidly

    The longer it takes you to acknowledge a potential vulnerability exists, the more worth my while it is to write an exploit. Basic risk/reward:

     Admit NowAdmit Later
    I’m RightAppear ResponsiveDownplay Exploit
    I’m WrongAppear Responsive, Incur SympathyFeel Better

    I don’t know what kind of a premium you put on “feeling better”, but I hope it outweighs the cost of discussing the cost of the vulnerability in the context of how many measured seconds it took to compromise every installation of the product across the whole network.

  4. Provide Documentation Liberally

    It’s 2005. At this stage in the game, when investigating a problem in a network service, I have access to:

    Pretty much the only secrets you’re keeping are the precise number and type of swear words in the source code comments. However, at some point around the time I got to “bothering to attach to your program in GDB”, I figured out exactly how easy it would be to prove my point with an exploit.

  5. Do Not Downplay

    Further examples of things not to say to a customer reporting a security vulnerability:

    • “Don’t you have some kind of IDS in place that would detect people trying to exploit this vulnerability?”

    • “Our product is designed to be deployed BEHIND a firewall.”

    • “Because our product is not built on Windows, it is not vulnerable to buffer overflows.”

    • “Our new 9.3 version of the software is not vulnerable to this problem. We’ve been meaning to talk to you about why you should renew your maintenance contract.”

    To be perfectly frank, you are expected to have security vulnerabilities. People who look for vulnerabilities wind up in a bad mood when they don’t find them. So if you want to make yourselves feel better at the expense of vulnerability researchers, beat the hell out of your software internally before researchers get their hands on it.

Comment Bubble No Comments

Beware: Signs Of Apocolypse Detected

Thomas Ptacek | October 20th, 2005 | Filed Under: Uncategorized

I agree with Lindstrom’s post about liability, at least in principle. Dan Bernstein can’t write perfect software, and even if he could, it wouldn’t be reasonable to hold every programmer to that standard.

There certainly is software out there developed with neither the prudence nor care that a reasonable engineer would exercise developing critical software. But for whatever it’s worth, as far as I’m concerned, the issue of whether it’s possible to build secure software systems “in the large” with today’s technology is a settled question. It isn’t going to happen. We need to look beyond the software development process for answers.

It’s still important to assure applications, and companies should suffer when they deliver defective applications. I just think we need better ways of letting the market provide this kind of feedback.

Comment Bubble No Comments

EINPROGRESS

Thomas Ptacek | October 20th, 2005 | Filed Under: Uncategorized

So you can’t post an advisory on a Thursday or a Friday, and therefore you are all spared a crowing rant about a piece of internal infrastructure.

On the other hand, I do have something I want to get off my chest today, and, as soon as I go off the clock, I plan on unloading. So, stay tuned (or duck).

Comment Bubble No Comments

End of the Line for CardSystems

Thomas Ptacek | October 18th, 2005 | Filed Under: Uncategorized

CardSystems sold for assets to Pay By Touch, essentially for the value of their mailing lists. After a previous unsuccessful buyout negotiation, the best the new buyers can say is that CardSystems assets, if not their business, are “very far from distressed”.

I suppose that means the mailing list addresses were still legible? A random sampling of customers still return CardSystems’ phone calls?

Is this our first real example of a large company essentially being put out of business as a result of a security breach?

Comment Bubble No Comments

Who We Are

Matasano is a team of internationally respected security experts who have led security efforts at @stake, Microsoft, ISS, Secure Computing, Arbor Networks, Secure Networks, Bloomberg, Sandia Labs, and others. Read more about our team and how we can help you today.