WebApp Sec mailing list archives
Re: one use for taxonomies
From: Zhiguly <zhiguly () gmail com>
Date: Sat, 16 Jul 2005 01:12:34 -0500
Great discussion... So the focus of developing these TMs (or taxonomies, are they are now--I was always *concerned* when my attack trees degenerated into threat/vulnerability taxonomies and hung my head in shame) exclusively model the threats/vulnerabilities/countermeasures--not the system itself. How are folks modeling the system? Of course this, too is a slippery problem, especially if we want to keep the approach lightweight... I don't think UML is the answer (see CORAS as one attempt), because in my fantasy world I don't see it being used... but I digress. Attack trees as described by Schneier (and probably the CERT papers, as well, but I can't remember) seem to completely ignore the system representation problem (let alone modeling it) right? I know the MSFT book (and tool?) went farther with DFD's and all that but I don't think the tool let you do much or at least I couldn't without Visio :( An AND/OR event tree (aka attacker goals strung together) cannot adequately capture hierachies of components and subcomponents, data flows, data at rest (perhaps inheriting the security protection of the component it belongs to, etc.), functions (perhaps call them operations or services or whatever), various system states, and then of course each of these "system objects" has different taxonomies of threats/vulnerabilities that can be applied so that when a compromise occurs to one object (whether unauth performance of an operation, denial of service, information disclosure) there is a ripple effect on all the other system objects... Yes, now I am confused too.... In short is anyone else trying to start with some more formal (but not *too* formal) system model and then apply the threats? - zh On 7/15/05, Frank O'Dwyer <fod () littlecatz com> wrote:
Brenda wrote:Andrew, I completely agree that the point of threat modeling is to analyze business risks, and I also agree that as currently formulated, a threat model with lots of technical details is difficult to use for business risk analysis.I'd like to suggest a different and possibly heretical view, which is that maybe you don't need an (explicit) threat model at all. My reason for saying that is for any of the formal analysis I've seen, it doesn't lead to a different outcome, compared to much simpler and less formal approaches (it depends on the approach, of course). If you step back and look at the ultimate goal, it is to implement a system [or a system dev lifecycle] with effective countermeasures (technical and non-technical). The question is, which countermeasures will those be? Most formal analysis tends to consider that question along the following lines (hugely simplified): 1. Consider business impact 2. Consider attacks 3. Consider vulnerabilities 4. Consider likelihood 5. Build a threat model 6. Prune attack tree 7. Generate countermeasures to block remaining attacks 8. Implement the same old same old, the same stuff you would have implemented if you hadn't done any of that. Basically, you could just proceed direct to step 8 (I'm exaggerating, but not all that much). The thing is if the sort of question you will ultimately answer is something like "gee, I wonder which transport security protocol we will use THIS time. Will it be SSL/TLS, or, um...I'm sure there was another one" - well, why not just cut to the chase? Or what about authentication, which of the 2 and a half practical options will you use there? Are buffer overflows still a problem, or has that changed since the last time we built a threat model? Hmm, might we benefit from a firewall? Input validation? Audit trail? Encryption? And so on. You are basically choosing between well known security design patterns, or "security's greatest hits", and actually there aren't all that many of those (certainly a great many less than there are detailed attacks and vulnerabilities). (I'm not saying threat models aren't ever useful, by the way, just not necessarily for the problem they are put forward for. One area where I think they could be useful is arriving at some formal justification of which countermeasures are good (for example in the sense of reduction of attack surface), although in many cases we already have a reasonable hunch about the answer there too, still a formal justification would be nice. I'm guessing you don't need an actual app to analyse there, either. You could perhaps generate trees of attacks at random, and see which countermeasures work best). I guess what I am really saying here is that since you generally want the sort of countermeasures that operate at a high level in the tree, and therefore counter everything below, plus other things as yet unheard of, you don't need to build a deep tree. Or at least that type of chunked up , fuzzy model will get you most of the way there. The rest, as you say, is an art. Actually I can think of very few factors that DO lead a variation in outcome. Off the top of my head, these are: 1. The overall worst case business impacts for confidentiality, integrity, and availabilty (for those who wish to focus more expensive and effective controls on potential high value losses) 2. The technology/architecture you use (affects how you implement the same old countermeasures, also not using a technology means you can discard threats - and hence countermeasures - that are only relevant for that technology) 3. The environment your app will deploy in (this is another shorthand for a very chunked up threat model - different environments have different threats, so not being in a particular environment means not having to care about a basket of threats peculiar to that enviroment, and so the associated countermeasures aren't relevant either) 4. The infrastructure you use (infrastructure may implement countermeasures so you don't need to) 5. A handful of well-aimed questions which may indicate you need less or more countermeasures One way to implement that whole process is to start with the complete set of countermeasures you can ever imagine being useful, and systematically delete those that be easily justified as not being relevant to the case in hand, or which don't have the right cost/benefit. And actually a lot of that can be automated too. I've got some code that does a proof of concept of that, which I intend to release (GPL) as soon as I get a minute to do so. It would be interesting to see if your code and mine could be made to use the same knowledge base of countermeasures. It is all XML based so maybe some kind of mapping is possible. Cheers, Frank. [...much good stuff deleted ...]
Current thread:
- one use for taxonomies Brenda (Jul 14)
- Re: one use for taxonomies Andrew van der Stock (Jul 14)
- Re: one use for taxonomies Brenda (Jul 15)
- Re: one use for taxonomies Frank O'Dwyer (Jul 15)
- RE: one use for taxonomies Mark Curphey (Jul 15)
- Re: one use for taxonomies Frank O'Dwyer (Jul 16)
- RE: one use for taxonomies Mark Curphey (Jul 16)
- RE: one use for taxonomies Mark Curphey (Jul 16)
- Re: one use for taxonomies Brenda (Jul 15)
- Re: one use for taxonomies Zhiguly (Jul 16)
- Re: one use for taxonomies Frank O'Dwyer (Jul 16)
- Re: one use for taxonomies Andrew van der Stock (Jul 14)
- Re: one use for taxonomies Paul B. Saitta (Jul 18)
- Re: @CHECK++ Re: one use for taxonomies Dennis W. Kennedy (Jul 18)
- Re: one use for taxonomies Frank O'Dwyer (Jul 18)