Finally it's time to think about threat modeling the PlaySound API.
Let's go back to the DFD that I included in my earlier post, since everything flows from the DFD.
This dataflow diagram contains a number of elements, they are:
Now that we've enumerated the elements, we apply the STRIDE/Element methodology, which allows us to enumerate the threats that this component faces:
Phew. You mean that the PlaySound API can be attacked in 33 different ways? That's unbelievable.
It's true. There ARE 33 ways that you can attack the PlaySound API, however many of them are identical, and some of which are irrelevant. That's the challenge of the next part of the process, which is the analysis phase.
As I mentioned in the first STRIDE-per-element post, STRIDE-per-element is a framework for analysis. That's where common sense and your understanding of the system comes into focus.
And that's the next part in the series: Analyzing the threats enumerated by STRIDE-per-element. This is the point at which all the previous articles come together.
Adam Shostack here. I've been meaning to talk more about what I actually do, which is help the teams
Hypothetical question here. Suppose the design of the throttler were reversed, so that opening a network socket would impose a Denial of Service on PlaySound. Would that be #7 in your list? Do you have a way to distinguish intended threats from unintended threats?
Norman, I don't believe so. There's a huge difference between a denial of service and a reduction in service (IMHO). A Denial of Service issue might result in a MSRC bulletin (depending on the DoS issue - in some components like the shell or ie, they doesn't necessarily result in bulletins, instead DoS issues often are deferred to the next service pack (it all depends on the individual circumstances)). But a slowdown is highly unlikely to result in a MSRC bulletin (although it might result in a QFE (like the recent performance and reliability hotfixes)).
But that IS a very good question.
In my last post , I enumerated a bewildering array of threats that the PlaySound API is subject to, today
>> Do you have a way to distinguish intended threats from
>> unintended threats?
meant in the design of the threat model, not in Microsoft's decision whether to issue a bulletin about it.
On the other issue
> There's a huge difference between a denial of service and a
> reduction in service (IMHO).
For PlaySound maybe it wouldn't often matter, though if we want to play an alarm warning that a hard drive is overheating then it would matter. But in general I think it depends on how huge the difference is. If a reduction in service means that a bank's web site can process 50% of customer payments that it was supposed to process, I think the difference between 50% and 100% is huger than the difference between 50% and 0%.
Norman, threats are. Your analysis may indicate whether a threat is relevant (or not), whether you want to mitigate it (or not). But there is no such thing as an "intended" or "unintended" threat.
For some components, resiliance against DoS threats takes many forms - As I mentioned in my post about mitigations, if your particular component is vulnerable to DoS threats, there are many strategies you can use to mitigate the vulnerability.
I want to wrap up the threat modeling posts with a summary and some comments on the entire process. Yeah,