<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The Security Development Lifecycle : threat modeling</title><link>http://blogs.msdn.com/sdl/archive/tags/threat+modeling/default.aspx</link><description>Tags: threat modeling</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>"The Threats to Our Products"</title><link>http://blogs.msdn.com/sdl/archive/2009/08/27/the-threats-to-our-products.aspx</link><pubDate>Fri, 28 Aug 2009 00:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9887486</guid><dc:creator>sdl</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sdl/comments/9887486.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sdl/commentrss.aspx?PostID=9887486</wfw:commentRss><description>&lt;P&gt;Adam here. &lt;/P&gt;
&lt;P&gt;I’ve learned to love STRIDE as a framework for thinking about threats, but it makes a lousy classification system. That is, I can look at a system to find information disclosure threats, but once I have an attack that leaks, say, the location of a DLL in memory to a remote attacker, is that Information Disclosure or Elevation of Privilege? It’s likely to make the latter easy, and down the classification rat-hole we go.&amp;nbsp;&amp;nbsp; I’d like to suggest that calling it ‘the STRIDE &lt;STRONG&gt;framework&lt;/STRONG&gt; is the most clear wording we can use.’&lt;/P&gt;
&lt;P&gt;I found the 1999 internal Microsoft article written by (then) Microsoft employees Loren Kohnfelder and Praerit Garg, and was pleased to discover that they intended STRIDE “to help you identify potential vulnerabilities in your product during a security analysis.” They also make repeated reference to a “proactive security analysis process,” and shows some of the thinking that led to the SDL. &amp;nbsp;I thought it was neat look into history, and so without further ado, &lt;A href="http://blogs.msdn.com/sdl/attachment/9887486.ashx" mce_href="http://blogs.msdn.com/sdl/attachment/9887486.ashx"&gt;it's attached&lt;/A&gt;.&amp;nbsp; (59KB .docx)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9887486" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/sdl/attachment/9887486.ashx" length="60331" type="application/vnd.openxmlformats-officedocument.word" /><category domain="http://blogs.msdn.com/sdl/archive/tags/threat+modeling/default.aspx">threat modeling</category></item><item><title>Experiences Threat Modeling At Microsoft</title><link>http://blogs.msdn.com/sdl/archive/2008/10/08/experiences-threat-modeling-at-microsoft.aspx</link><pubDate>Wed, 08 Oct 2008 21:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8991806</guid><dc:creator>sdl</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/sdl/comments/8991806.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sdl/commentrss.aspx?PostID=8991806</wfw:commentRss><description>Adam Shostack here.&amp;nbsp; Last weekend, I was at a &lt;A href="http://www.comp.lancs.ac.uk/modsec/program.php" mce_href="http://www.comp.lancs.ac.uk/modsec/program.php"&gt;Security Modeling Workshop,&lt;/A&gt; where I presented a paper on “&lt;A href="http://blogs.msdn.com/sdl/attachment/8991806.ashx" mce_href="http://blogs.msdn.com/sdl/attachment/8991806.ashx"&gt;Experiences Threat Modeling at Microsoft&lt;/A&gt;,” which readers of this blog might enjoy.&amp;nbsp; So please, enjoy! 
&lt;P&gt;And while I’m at it, I wanted to draw attention to some of the other presentations that I thought were very interesting, including one by Karine Peralta “&lt;A href="http://www.comp.lancs.ac.uk/modsec/papers/modsec08_submission_11.pdf" mce_href="http://www.comp.lancs.ac.uk/modsec/papers/modsec08_submission_11.pdf"&gt;&lt;I&gt;Specifying Security Aspects in UML Models&lt;/I&gt;&lt;/A&gt;” and “&lt;A href="http://www.comp.lancs.ac.uk/modsec/papers/modsec08_submission_4.pdf" mce_href="http://www.comp.lancs.ac.uk/modsec/papers/modsec08_submission_4.pdf"&gt;&lt;I&gt;Curriculum for Modelling Security: Experiences and Lessons Learned&lt;/I&gt;&lt;/A&gt;.”&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8991806" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/sdl/attachment/8991806.ashx" length="131043" type="application/pdf" /><category domain="http://blogs.msdn.com/sdl/archive/tags/threat+modeling/default.aspx">threat modeling</category></item><item><title>What do you want to know about SDL threat modeling?</title><link>http://blogs.msdn.com/sdl/archive/2008/07/31/what-do-you-want-to-know-about-sdl-threat-modeling.aspx</link><pubDate>Fri, 01 Aug 2008 03:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8795950</guid><dc:creator>sdl</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sdl/comments/8795950.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sdl/commentrss.aspx?PostID=8795950</wfw:commentRss><description>&lt;P&gt;Adam Shostack here. I'm working on a paper about "Experiences Threat Modeling at Microsoft" for an academic workshop on security modeling. I have some content that I think is pretty good, but I realize that I don't know all the questions that readers might have. &lt;/P&gt;
&lt;P&gt;So, what questions should I try to answer in such a paper? What would you like to know about? No promises that I'll have anything intelligent to say, but I'd love to know the questions you're asking. So please. Ask away!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8795950" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sdl/archive/tags/threat+modeling/default.aspx">threat modeling</category></item><item><title>Security Thoughts from TechEd 2008</title><link>http://blogs.msdn.com/sdl/archive/2008/06/26/security-thoughts-from-teched-2008.aspx</link><pubDate>Thu, 26 Jun 2008 18:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8657045</guid><dc:creator>sdl</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/sdl/comments/8657045.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sdl/commentrss.aspx?PostID=8657045</wfw:commentRss><description>&lt;P&gt;Hi, this week is a post from Michael Howard and Laura Machado de Wright, who both attended and presented at TechEd 2008 in Orlando the week of June 2&lt;SUP&gt;nd&lt;/SUP&gt;. &lt;/P&gt;
&lt;P&gt;First up is Laura. &lt;/P&gt;
&lt;P&gt;I have been a Security Program Manager for the last 3 years, working as a security advisor for a variety of products across Microsoft and the last seven months as a member of the SDL policy team.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;It's been a few years since I've been to TechEd, and this was my first time attending as a member of the security team. TechEd is now a two week conference, with one week dedicated to developers and&amp;nbsp; the other to IT professionals. &amp;nbsp;I think that breaking down the conference into a Developer week and an ITPro week was a good idea, and it allowed us to have good conversations with people who wanted more information about the SDL. I did two main things at TechEd:, I presented on threat modeling, and I spent a lot of time talking to customers at the SDL booth. At the SDL booth, we heard questions ranging from "What does the SDL stand for?" to "Our Web site was hacked; how do I stop it from happening again?" It was encouraging hearing people interested to hear more specifics about how we implement the SDL at Microsoft, and thinking through how they can apply it in their own companies.&amp;nbsp; My understanding from other TechEd veterans in our booth is that interest in the SDL seemed higher, which is great.&lt;/P&gt;
&lt;P&gt;During my Threat Modeling session, , most of the feedback and follow-up questions were similar to the ones in the booth: how to expand the threat modeling processes to their own companies, and how to get started. &lt;/P&gt;
&lt;P&gt;My typical response to both questions is to start small and do what makes sense for your organization. At &amp;nbsp;Microsoft, for example, when we introduce new SDL requirements, we usually start with a few teams so we can refine the requirement and supporting tools before expanding the requirements to a broader group. Similarly, while we have a core set of requirements that all teams have to meet, there are other requirements that are specific to a platform, scenario, or functionality. For example, there are some requirements that make sense for desktop-oriented products, but do not make sense for mobile devices. &amp;nbsp;You may very likely have to make changes to our policies to make them relevant to your organization, your scenarios, and functionality. &lt;/P&gt;
&lt;P&gt;Now over to Michael.&lt;/P&gt;
&lt;P&gt;Hi, Michael here.&lt;/P&gt;
&lt;P&gt;One of the joys of presenting at TechEd each year is hearing from real people about the issues they face using our products in the real world; rarely are the issues pure philosophical security geekness. This year I gave two talks and one "chalk talk." The talks were "Top Ten Strategies &lt;BR&gt;To Secure Your Code" and "How To Review Your Code&lt;BR&gt;and Test For Security Bugs", and the chalk talk, which was a lot of fun, was simply answering numerous developer questions.&lt;/P&gt;
&lt;P&gt;It's interesting to gauge overall security awareness from our customers, and there is no doubt that over the years, the level of security knowledge and maturity has risen. I think it's possible to evaluate overall security maturity by the questions posed. Some years ago, security was never really a topic of discussion other than those that relate to security technologies, such as how to use and manage X.509 certificates. About four years ago the tide really changed and people started asking more questions about "secure" application deployment and management, and developers wanted to learn more about securing their code; especially C and C++ code. Even then there was still a reliance on exterior defenses like firewalls. All too often I would hear people claim that they don't need to focus on securing their apps because a firewall was in the way. Heck, &lt;A href="http://blogs.msdn.com/david_leblanc/" mce_href="http://blogs.msdn.com/david_leblanc/"&gt;David&lt;/A&gt; and I documented this excuse in the original version of Writing Secure Code (Appendix D, "Lame Excuses We've Heard, #6, ‘We're Secure-we use a Firewall'") way back in 2002.&lt;/P&gt;
&lt;P&gt;Fast forward to 2008.&lt;/P&gt;
&lt;P&gt;Things have obviously changed. I don't know if finally the security message is getting through because many people asked me highly specific questions about securing their apps and how best to use the defenses we offer in Windows Vista and Windows Server 2008. &lt;/P&gt;
&lt;P&gt;I still hear the firewall excuse a little, but not too much!&lt;/P&gt;
&lt;P&gt;Perhaps the most telling trend I saw this year was a great deal of interest in the SDL. Not cursory, "that looks interesting" interest, but, "how can I implement this in my company" interest. After answering specific questions, I pointed most folks to&amp;nbsp; Jeremy's "&lt;A href="http://blogs.msdn.com/sdl/archive/2008/03/06/crawling-toward-sdl.aspx" mce_href="http://blogs.msdn.com/sdl/archive/2008/03/06/crawling-toward-sdl.aspx"&gt;Crawling Toward SDL&lt;/A&gt;" post on the subject.&lt;/P&gt;
&lt;P&gt;In my opinion, getting to a point where you want to change your development process shows you really understand there's an issue that needs fixing. &lt;/P&gt;And that's goodness.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8657045" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sdl/archive/tags/threat+modeling/default.aspx">threat modeling</category><category domain="http://blogs.msdn.com/sdl/archive/tags/SDL/default.aspx">SDL</category></item><item><title>SDL Threat Modeling: Past, Present and Future</title><link>http://blogs.msdn.com/sdl/archive/2008/06/17/sdl-threat-modeling-past-present-and-future.aspx</link><pubDate>Wed, 18 Jun 2008 00:59:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8612543</guid><dc:creator>sdl</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/sdl/comments/8612543.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sdl/commentrss.aspx?PostID=8612543</wfw:commentRss><description>&lt;p&gt;Adam Shostack here.&lt;/p&gt;  &lt;p&gt;I wanted to share my slides from the recent Layer One conference [link], where I talked about &amp;quot;SDL Threat Modeling: Past, Present and Future.&amp;quot;&lt;/p&gt;  &lt;p&gt;There are a few points that I wanted to emphasize. The first is that I'm talking about threat modeling from the perspective of the SDL. We have other threat modeling processes here at Microsoft, and we're working to bring you more clarity in how we speak about them. For my part, I'll try to clearly say &amp;quot;SDL threat modeling,&amp;quot; or be explicit when I'm talking about threat modeling in broad terms.&lt;/p&gt;  &lt;p&gt;Which brings me to my second point, and a slide I wanted to emphasize. (Shown here)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sdl/WindowsLiveWriter/SDLThreatModelingPastPresentandFuture_D2D9/image001_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image001" src="http://blogs.msdn.com/blogfiles/sdl/WindowsLiveWriter/SDLThreatModelingPastPresentandFuture_D2D9/image001_thumb.png" width="260" height="200" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I no longer think of threat modeling as one thing. I see it as a label for a set of ways to address the question of &amp;quot;what could go wrong&amp;quot; with a design or set of requirements. The SDL has one process. The folks in ACE and Patterns and Practices each have another. All are customized to meet various needs. Much like we have lots of programming languages which address different problems, we're going to have lots of threat modeling processes.&lt;/p&gt;  &lt;p&gt;Anyway, I hope you enjoy the slides.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8612543" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sdl/archive/tags/threat+modeling/default.aspx">threat modeling</category></item><item><title>SDL Threat Modeling @ ToorCon</title><link>http://blogs.msdn.com/sdl/archive/2008/04/24/sdl-threat-modeling-toorcon.aspx</link><pubDate>Fri, 25 Apr 2008 02:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8423042</guid><dc:creator>sdl</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sdl/comments/8423042.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sdl/commentrss.aspx?PostID=8423042</wfw:commentRss><description>&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Consolas size=3&gt;Adam Shostack here.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I spoke at Toorcon this past weekend on "SDL Threat Modeling: Past, Present and Future."&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I wanted to share my slides to help clarify a bit about where SDL threat modeling is and why, and a bit about&amp;nbsp;where we're going.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Consolas size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Consolas size=3&gt;(Click on the post title, and you'll see an attachment in the per-post page.)&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8423042" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/sdl/attachment/8423042.ashx" length="1385790" type="application/pdf" /><category domain="http://blogs.msdn.com/sdl/archive/tags/threat+modeling/default.aspx">threat modeling</category></item><item><title>Training People on Threat Modeling</title><link>http://blogs.msdn.com/sdl/archive/2008/03/14/training-people-on-threat-modeling.aspx</link><pubDate>Sat, 15 Mar 2008 02:11:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8212656</guid><dc:creator>sdl</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/sdl/comments/8212656.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sdl/commentrss.aspx?PostID=8212656</wfw:commentRss><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Adam Shostack here. Blogger Ian Grigg has an interesting &lt;a href="https://financialcryptography.com/mt/archives/001013.html"&gt;response&lt;/a&gt; to my threat modeling blog series, and I wanted to respond to it. In particular, Ian says &amp;#8220;I then would prefer to see the threat - property matrix this way:&amp;#8221; &lt;/p&gt;  &lt;p&gt;I wanted to share an additional table from our training, and talk about repudiation a bit more. &lt;/p&gt;  &lt;p&gt;Actually, I&amp;#8217;d like to repudiate the term &amp;#8220;repudiation.&amp;#8221; It&amp;#8217;s an awful name that most people never run into in day-to-day life. It doesn&amp;#8217;t hit the simplification bar the way say, &amp;#8220;denial,&amp;#8221; would. Unfortunately, STDIDE (Spoofing, Tampering, Denial, Information Disclosure, Denial of Service, Elevation of Privilege) doesn&amp;#8217;t make a very memorable acronym. Memorable is important when training people. Our reviewers have raised this as an issue, and &amp;#8217;d love to get feedback from our readers. How can we ensure that the software we build has the right level of logging and audit-ability? What evocative words can we use, and can you help us come up with a word or phrase that starts with R? Let us know! &lt;/p&gt;  &lt;p&gt;And then, here&amp;#8217;s the chart:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="400" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="100"&gt;Threat&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Property&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Definition&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Example&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;b&gt;Spoofing&lt;/b&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Authentication&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Impersonating something or someone else.&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Pretending to be any of billg, microsoft.com or ntdll.dll&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;b&gt;T&lt;/b&gt;ampering&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Integrity&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Modifying data or code&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Modifying a DLL on disk or DVD, or a packet as it traverses the LAN.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;b&gt;R&lt;/b&gt;epudiation&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Non-repudiation&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Claiming to have not performed an action.&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&amp;#8220;I didn&amp;#8217;t send that email,&amp;#8221; &amp;#8220;I didn&amp;#8217;t modify that file,&amp;#8221; &amp;#8220;I &lt;i&gt;certainly&lt;/i&gt; didn&amp;#8217;t visit that web site, dear!&amp;#8221;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;b&gt;I&lt;/b&gt;nformation Disclosure&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Confidentiality&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Exposing information to someone not authorized to see it&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Allowing someone to read the Windows source code; publishing a list of customers to a web site.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;b&gt;D&lt;/b&gt;enial of Service&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Availability&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Deny or degrade service to users&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Crashing Windows or a web site, sending a packet and absorbing seconds of CPU time, or routing packets into a black hole.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;b&gt;E&lt;/b&gt;levation of Privilege&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Authorization&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Gain capabilities without proper authorization&lt;/td&gt;        &lt;td valign="top" width="100"&gt;Allowing a remote internet user to run commands is the classic example, but going from a limited user to admin is also EoP.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;(Ian&amp;#8217;s post is here &lt;a href="https://financialcryptography.com/mt/archives/001013.html"&gt;https://financialcryptography.com/mt/archives/001013.html&lt;/a&gt; . IE users will see a warning about certificate authorities when visiting this site.&amp;#160; As I wrote this, Gunnar Peterson added commentary at &amp;quot;&lt;a href="http://1raindrop.typepad.com/1_raindrop/2008/03/threats-mechani.html"&gt;Threats, Mechanisms and Standards&lt;/a&gt;.&amp;quot;)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8212656" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sdl/archive/tags/threat+modeling/default.aspx">threat modeling</category></item><item><title>Wrapping up Threat Modeling</title><link>http://blogs.msdn.com/sdl/archive/2008/02/14/wrapping-up-threat-modeling.aspx</link><pubDate>Fri, 15 Feb 2008 01:51:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7702341</guid><dc:creator>sdl</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/sdl/comments/7702341.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sdl/commentrss.aspx?PostID=7702341</wfw:commentRss><description>&lt;p&gt;One of the critiques of the threat modeling &lt;s&gt;blog posts&lt;/s&gt; process is that it can seem interminable. And so, in this final post, I&amp;#8217;d like to offer up some final thoughts on language, and cognitive load.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Specification versus Analysis&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;When Larry Osterman was &lt;a href="http://blogs.msdn.com/larryosterman/archive/2007/09/14/threat-modeling-again-pulling-the-threat-model-together.aspx"&gt;writing about threat modeling&lt;/a&gt;, he casually tossed out:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;A threat model is a specification, just like your functional specification (a Program Management spec that defines the functional requirements of your component), your design specification (a development spec that defines the architecture that is required to implement the functional specification), and your test plan (a test spec that defines how you plan on ensuring that the design as implemented meets the requirements of the functional specification).&lt;/p&gt;    &lt;p&gt;Just like the functional, design and test specs, a threat model is a living document - as you change the design, you need to go back and update your threat model to see if any new threats have arisen since you started.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I found this pretty surprising. I think of threat modeling as an analysis technique, but hey, if test plans are specs, threat models aren&amp;#8217;t that different. (It took some private back and forth with Larry to convince me.) This brings me to the topic of what words we use to describe things.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;On language&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;[The English language] becomes ugly and inaccurate because our thoughts are foolish, but the slovenliness of our language makes it easier for us to have foolish thoughts. The point is that the process is reversible. Modern English, especially written English, is full of bad habits which spread by imitation and which can be avoided if one is willing to take the necessary trouble. If one gets rid of these habits one can think more clearly, and to think clearly is a necessary first step toward political regeneration: so that the fight against bad English is not frivolous and is not the exclusive concern of professional writers. (George Orwell, &lt;a href="http://www.mtholyoke.edu/acad/intrel/orwell46.htm"&gt;Politics and the English Language&lt;/a&gt;.)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;We ask people to threat model (as part of the SDL) by threat modeling their application. To do that, they model the design, and then have a threat modeling meeting in which someone runs the threat modeling tool to produce a threat modeling document. In our particular case, I&amp;#8217;m not sure it&amp;#8217;s easily avoided.&lt;/p&gt;  &lt;p&gt;&amp;#8220;We ask people to analyze their designs (as part of the SDL). To do that, they diagram the design, then have a threat modeling meeting in which someone runs the &lt;i&gt;codename&lt;/i&gt; tool to produce a threat modeling document.&amp;#8221;&lt;/p&gt;  &lt;p&gt;In fact, I&amp;#8217;ve worked hard to reduce jargon in the process, but at one point, went too far. I tried to convince people to say &amp;#8220;diagram&amp;#8221; instead of DFD, and they revolted. Actually, they didn&amp;#8217;t really revolt, but they did refuse to go along. Experienced threat modelers actually felt that the term DFD was &lt;i&gt;more clear&lt;/i&gt; than saying &amp;#8216;diagram,&amp;#8217; because DFD includes a specification of what kind of diagram, and they had already integrated the acronym into their thinking. Having integrated it, they could use it without thinking about it. Well, &lt;a href="http://www.proudlyserving.com/archives/2007/11/writing_about_m.html"&gt;as Adam Barr points out&lt;/a&gt;, &amp;#8220;you can pick your friends, and you can pick your nose, but you can't pick your online community's lexicon.&amp;#8221;&lt;/p&gt;  &lt;p&gt;It didn&amp;#8217;t add to their cognitive load to say &amp;#8220;DFD.&amp;#8221;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Cognitive Load&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;People can only handle so much new information at one time. Learning to drive a stick shift is harder than learning on an automatic, because there&amp;#8217;s a whole set of tasks you can ignore while the automatic transmission handles them for you. In my approach, this relates pretty closely to the concept of flow. If you&amp;#8217;re so focused on rules and jargon, you can&amp;#8217;t focus on what you should be building. Cool, well-designed features to help your customers.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;In Conclusion&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;We started this series by looking at the trouble with threat modeling. How people had trouble getting started, relating the process to their other work, or validating what they&amp;#8217;d done. We&amp;#8217;ve looked at the new threat modeling process, and the steps involved. We talked about how to get into the flow with threat modeling. How clear goals, direct and immediate feedback, and balancing ability and challenges set people up to focus their attention and succeed. We&amp;#8217;ve talked a bit about making threat modeling work better by adding structure to chaos, and how to use self-checks and rules of thumb to give people confidence they&amp;#8217;re on the right trail. We&amp;#8217;ve talked a very little bit about how to customize the process for your own needs, and where that customization can be dangerous. &lt;/p&gt;  &lt;p&gt;All of this has come out of looking at our threat modeling activity as a human activity, and asking how we can best shape it to help people get to the results that we want. I hope that our readers have enjoyed the series, which we&amp;#8217;ve converted into a downloadable document (&lt;a href="http://blogs.msdn.com/sdl/attachment/7702305.ashx"&gt;here&lt;/a&gt;.)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7702341" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sdl/archive/tags/threat+modeling/default.aspx">threat modeling</category></item><item><title>Threat Modeling Self Checks and Rules of Thumb</title><link>http://blogs.msdn.com/sdl/archive/2007/10/22/threat-modeling-self-checks-and-rules-of-thumb.aspx</link><pubDate>Tue, 23 Oct 2007 00:04:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5609011</guid><dc:creator>sdl</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sdl/comments/5609011.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sdl/commentrss.aspx?PostID=5609011</wfw:commentRss><description>&lt;p&gt;Adam again. I hope you&amp;#x2019;re still enjoying this as we hit #5 in the threat modeling series.&lt;/p&gt;  &lt;p&gt;In my last post, I talked about how almost everyone in software draws on whiteboards regularly, and this makes it &lt;b&gt;an ideal first step.&lt;/b&gt; It&amp;#x2019;s an ideal first step because everyone can do it, see that they&amp;#x2019;ve done it, and feel like they&amp;#x2019;re making progress.&lt;/p&gt;  &lt;p&gt;That wasn&amp;#x2019;t quite complete. Not only do we want people to see that they&amp;#x2019;ve done it, we want to give them a way to validate their work or other people&amp;#x2019;s work. So we ask them to tell a story. We&amp;#x2019;re not asking for Shakespeare here, we&amp;#x2019;re asking them to explain how their software will be used, and to make sure that their diagram supports that story, and that it relates to their actual software.&lt;/p&gt;  &lt;p&gt;We also give them rules of thumb (lots of rules of thumb) about things we often see wrong in diagrams: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Don't have data sinks: you write the data for a reason. Show who uses it.&lt;/li&gt;    &lt;li&gt;Data can&amp;#x2019;t move itself from one data store to another: show the process that moves it.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;(Larry Osterman has some in his blog post, &amp;quot;&lt;a href="http://blogs.msdn.com/larryosterman/archive/2007/09/21/threat-modeling-again-threat-modeling-rules-of-thumb.aspx"&gt;Threat Modeling Rules of Thumb&lt;/a&gt;&amp;quot; I helped edit those, but want to suggest additional changes. In particular, &amp;#x201C;you need to be concerned&amp;#x201D; is not actionable. &amp;#x201C;Review this carefully,&amp;#x201D; or &amp;#x201C;Focus your attention here&amp;#x201D; are more actionable. People threat modeling are already concerned.)&lt;/p&gt;  &lt;p&gt;Good &amp;#x201C;rules of thumb&amp;#x201D; encourage flow by empowering people to make a snap decision and move along.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5609011" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sdl/archive/tags/threat+modeling/default.aspx">threat modeling</category><category domain="http://blogs.msdn.com/sdl/archive/tags/SDL/default.aspx">SDL</category></item><item><title>Making Threat Modeling Work Better</title><link>http://blogs.msdn.com/sdl/archive/2007/10/16/making-threat-modeling-work-better.aspx</link><pubDate>Wed, 17 Oct 2007 03:23:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5478448</guid><dc:creator>sdl</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sdl/comments/5478448.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sdl/commentrss.aspx?PostID=5478448</wfw:commentRss><description>&lt;p&gt;Adam Shostack here, with part four of my threat modeling series. This post is a little less philosophical and a lot more prescriptive than the one about flow. It explains exactly how and why I changed a couple of elements of the process. The first is the brainstorming meeting, and the second is the way trust boundaries may be placed.&lt;/p&gt;  &lt;p&gt;The brainstorming meeting is a mainstay of expert threat modeling. It&amp;#x2019;s pretty simple: you put your security experts in a room with system diagrams and a whiteboard. Usually, you put your system designers in there, and make them promise not to strangle your experts. Optionally, you can add beer or scotch. Sometime later, you get a list of threats. How long depends on how big the system is, how well its requirements are documented, and how well your experts work together. &lt;/p&gt;  &lt;p&gt;We like having our developers threat model. There are a lot of reasons for this. Not only do they know the system better than anyone else, but getting people involved in a process helps ensure that they buy into it. &lt;/p&gt;  &lt;p&gt;Now this desire is great, but it leads to some issues, first and foremost is that many of the people who are now involved aren&amp;#x2019;t security experts. This means that they lack both direct experience of the process and the background that informs it. This isn&amp;#x2019;t a slam on them. I lack experience in the database design process, and I don&amp;#x2019;t have years of experience to help orient me. So I&amp;#x2019;d make mistakes designing a database, and someone who isn&amp;#x2019;t a security expert may make mistakes in security. For example, someone might try to use encryption to mitigate tampering threats. (The SDL crypto requirements cover this, and I try to gently correct them to integrity mechanisms like MACs or signatures.) This is a reality that we have to account for at the process design level.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Adding Structure to Chaos&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;So how does this relate to the brainstorming meeting? It&amp;#x2019;s a dramatic increase in the need for structure. Where experts may think they do better threat modeling with scotch in hand, , it certainly doesn&amp;#x2019;t lead to beginners having a flow experience. So we need a structure, and we need to provide it.&lt;/p&gt;  &lt;p&gt;We encourage people to get started by drawing a whiteboard diagram. Almost everyone in software draws on whiteboards regularly, and this makes it &lt;b&gt;an ideal first step.&lt;/b&gt; It&amp;#x2019;s an ideal first step because everyone can do it, see that they&amp;#x2019;ve done it, and feel like they&amp;#x2019;re making progress.&lt;/p&gt;  &lt;p&gt;The core mechanism we&amp;#x2019;ve used to provide it is the STRIDE/element chart. (I&amp;#x2019;ll talk a lot more about its origins and limits in a few posts, but for now, let&amp;#x2019;s pretend it&amp;#x2019;s gospel, and enumerates all possible threats.) Given this gospel, it becomes possible to step through the threat modeling diagram, &amp;#x201C;turn the crank,&amp;#x201D; and have threats come out. &amp;#x201C;Item 7 is a data flow? Let&amp;#x2019;s look for T,I and D.&amp;#x201D; (Tampering, Information disclosure, and Denial of service.)&lt;/p&gt;  &lt;p&gt;Similarly, we have four ways of addressing threats &amp;#x2013; redesign, standard mitigations, new mitigations, and risk acceptance. We have training on mitigating threats, we have explanation of why and when to use each (and they&amp;#x2019;re presented in a preferred order).&lt;/p&gt;  &lt;p&gt;Lastly, we provide advice about how to validate the threat model and it&amp;#x2019;s relation to reality.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://blogs.msdn.com/blogfiles/sdl/WindowsLiveWriter/TheNewThreatModelingProcess_100B8/tm-hampster-wheel_thumb.jpg" align="right" /&gt;&lt;/p&gt;  &lt;p&gt;Between these four steps and the hamster wheel which ties them together, we give people the structure in which they can take on the process. The other thing I wanted to address is how we respond to consistent &amp;#x201C;errors&amp;#x201D; that we see. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Where Trust Boundaries Show Up&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;We used to give people clear guidance that trust boundaries should only intersect with data flows. After all, you can&amp;#x2019;t really have a process that&amp;#x2019;s half-running as admin, and half as a normal user. Logically, you have two entities. And people kept drawing trust boundaries across processes and data stores. It drove me up the wall. It was &lt;i&gt;wrong.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;As people kept doing it, I decided to swallow my pride and accept it. I now tell people to put their trust boundaries wherever they believe one exists. And they&amp;#x2019;ve continued exactly as before, but I&amp;#x2019;m a lot happier, because I&amp;#x2019;ve found a way to help them draw more detailed diagrams where they need them. Which includes anywhere a trust boundary crosses a process or data store. They&amp;#x2019;re happier too. No one is telling them that they&amp;#x2019;re wrong.&lt;/p&gt;  &lt;p&gt;I was going to title this post &amp;#x201C;Lord grant me the strength to change the things I can, the courage to accept what I can&amp;#x2019;t, and the wisdom to know the difference,&amp;#x201D; but, first, it&amp;#x2019;s too long, and second, if we started that way, it would be wrong to add beer or scotch.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5478448" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sdl/archive/tags/threat+modeling/default.aspx">threat modeling</category><category domain="http://blogs.msdn.com/sdl/archive/tags/SDL/default.aspx">SDL</category></item><item><title>Getting into the Flow With Threat Modeling</title><link>http://blogs.msdn.com/sdl/archive/2007/10/11/getting-into-the-flow-with-threat-modeling.aspx</link><pubDate>Fri, 12 Oct 2007 02:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5408550</guid><dc:creator>sdl</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/sdl/comments/5408550.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sdl/commentrss.aspx?PostID=5408550</wfw:commentRss><description>&lt;P&gt;Adam Shostack again, with the third in our series on threat modeling. In this post, I want to explain one of the ‘lenses’ that seemed to help us focus threat modeling, and how I’ve applied it.&lt;/P&gt;
&lt;P&gt;The concept of &lt;A href="http://en.wikipedia.org/wiki/Flow_(psychology)" mce_href="http://en.wikipedia.org/wiki/Flow_(psychology)"&gt;flow&lt;/A&gt; originated with Mihaly Csikszentmihalyi. It refers to a state where people are energetically involved with what they’re doing. Seeing this a few times during threat modeling sessions made it obvious when it was missing, and it was missing often. I set out to address some of the elements that seemed to make threat modeling harder. The Wikipedia article (currently) has a good list, so I’ll focus in on a few of them:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Clear goals&lt;/LI&gt;
&lt;LI&gt;Direct and immediate feedback&lt;/LI&gt;
&lt;LI&gt;Balance between ability and challenge&lt;/LI&gt;
&lt;LI&gt;Focused attention&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Let’s take these one at a time.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Clear Goals&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Giving people clear goals is important because it helps take them from worrying about what your goals mean to worrying about how to achieve them. Without clear goals, it’s very challenging to get into the spirit of anything, whether playing a game or shipping an operating system. As goals go, “think like an attacker” and “brainstorm” aren’t up there with “A PC on every desktop.” The lack of a clear answer to “how do I know I’m done with my diagrams” or “how many threats should I have,” or “what is a good threat model” made it hard for people to do well, and just as importantly, even people who were doing well weren’t sure that they were doing well. Which brings us directly to the next point:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Direct and Immediate Feedback&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;When people have direct and immediate feedback, they can adjust their activities relatively easily.&amp;nbsp; If you’re cooking from a well written recipe, at each stage, you have some indicators that things are done.&amp;nbsp; “Are the onions brown?”&amp;nbsp; “Is the water boiling?”&amp;nbsp; “Does the pasta stick to the wall?”&amp;nbsp; This is true of any skill we’re learning.&amp;nbsp; With threat modeling, when there is no expert in the room, feedback can&lt;B&gt; &lt;/B&gt;take weeks or months to come back. &lt;B&gt;&lt;I&gt;&lt;/I&gt;&lt;/B&gt;As we rolled threat modeling out at Microsoft, it was possible for an entire threat model to be cooked without any course correction. We’re doing better now - there are more experienced people around, better documentation, and more focus on how to self-check. But at one time we asked people to engage in really complex tasks from the get go, without trying to achieve a…&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Balance Between Ability and Challenge&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Almost by definition, when you’re new at something, you don’t have a lot of skill around it. If the new activity is something highly complex, like speaking a foreign language, you’re likely to be anxious. And once you are skilled, simple tasks, like talking to a beginner, are often boring. Which brings us to the chart, which I’ve redrawn from Csikszentmihalyi’s book, Flow.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://blogs.msdn.com/blogfiles/sdl/WindowsLiveWriter/GettingintotheFlowWithThreatModeling_96D3/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/sdl/WindowsLiveWriter/GettingintotheFlowWithThreatModeling_96D3/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=219 alt=image src="http://blogs.msdn.com/blogfiles/sdl/WindowsLiveWriter/GettingintotheFlowWithThreatModeling_96D3/image_thumb.png" width=260 align=right border=0 mce_src="http://blogs.msdn.com/blogfiles/sdl/WindowsLiveWriter/GettingintotheFlowWithThreatModeling_96D3/image_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The ideal learning experiences involve a balance of challenge and reward, each of which grows as you learn. For example, when you buy Halo, there’s a training mission that allows you to run around doing simple tasks, learning the controls. If we dropped people into the live online game without any practice, they’d get slaughtered, and that’s bad for everyone. The &lt;A href="http://en.wikipedia.org/wiki/Newbie" mce_href="http://en.wikipedia.org/wiki/Newbie"&gt;newb&lt;/A&gt; is frustrated, and the experienced player is bored. (In fact, there’s pretty explicit acknowledgement of this in the &lt;A href="http://www.wired.com/gaming/virtualworlds/magazine/15-09/ff_halo" mce_href="http://www.wired.com/gaming/virtualworlds/magazine/15-09/ff_halo"&gt;Wired article on Halo&lt;/A&gt;.)&lt;/P&gt;
&lt;P&gt;So looking at the chart of skills versus challenge, there’s a channel in the middle—it’s the flow channel. We’d like to guide people there, by giving them challenges that are in line with their skills. Once people are there, we want to prod them from point A to point D, where there are larger challenges, and skills that allow people to address those challenges. Sometimes, we want them to leave their comfort zone and learn new things. To take on new challenges (going to B) and learn from them, going to D. If we don’t challenge people, they get bored, and it’s less likely that they’ll learn. (This obviously isn’t a complete model of learning, but it flows out of the discussion.)&lt;/P&gt;
&lt;P&gt;We want to do that for Halo, and we want to do that for threat modeling. To date, this has been implicit. We’ve simplified the process, in part in the interest of getting people out of the anxiety zone, and into a place where they can feel comfortable and then learn. Over time, we’ll be challenging and encouraging people to do more complex tasks as part of SDL threat modeling.&lt;/P&gt;
&lt;P&gt;This assumes that threat modeling is a frequent enough activity that people develop skills around it. I think that’s an ok assumption, as long as we design good refresher and update training and documentation.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Focused Attention&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;If you’re reading this blog post while talking on the phone and petting your dog, you’re going to get less out of it than if you do nothing else while reading it. Similarly, when you’re learning a new skill or performing a hard task, you need to focus your attention. Related to this is moving around. Getting a little blood flow helps you be energetic and engaged. This has been one of the hardest elements of flow to add to threat modeling. Many people here multi-task intensively, with laptops or blackberries always at hand. Challenging that habit seems like a challenge to the way people work, and I’ve shied away from issuing that challenge.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Why flow?&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;One final point I’d like to address is that flow is one of many frameworks we could use to address problems in threat modeling. My choice to use it was a driven by its striking absence. Flow isn’t the only framework for thinking about these things, and there are some criticisms associated with trying to shoehorn everything into flow. For threat modeling, it just seemed to well…flow.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5408550" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sdl/archive/tags/threat+modeling/default.aspx">threat modeling</category><category domain="http://blogs.msdn.com/sdl/archive/tags/SDL/default.aspx">SDL</category></item><item><title>The New Threat Modeling Process</title><link>http://blogs.msdn.com/sdl/archive/2007/10/01/the-new-threat-modeling-process.aspx</link><pubDate>Tue, 02 Oct 2007 04:15:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5232594</guid><dc:creator>sdl</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/sdl/comments/5232594.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sdl/commentrss.aspx?PostID=5232594</wfw:commentRss><description>&lt;p&gt;Adam Shostack here, with the second post in my series on the evolved threat modeling process. To summarize, what I&amp;#x2019;ve tried to achieve in changing the process is to simplify, prescribe, and offer self-checks. I&amp;#x2019;ll talk in the next post about why those three elements are so important to me. For now, let me describe the process.&lt;/p&gt;  &lt;p&gt;One of the largest changes that we&amp;#x2019;ve made is to a simplified process (and diagram). I like to say that this looks pretty much like every other software process diagram you see today. That&amp;#x2019;s intentional. There&amp;#x2019;s only so much we can expect people to take away from a class, and making this simple and familiar helps ensure there&amp;#x2019;s room for the other important parts.&lt;/p&gt;  &lt;p&gt;&amp;#xA0;&lt;/p&gt;  &lt;p&gt;First, the &amp;#x201C;&lt;a href="http://www.securitymetrics.org/content/Wiki.jsp?page=Welcome_blogentry_061005_1"&gt;process hamster wheel&lt;/a&gt;,&amp;#x201D; (with apologies to Yankee Group analyst Andy Jaquith):&lt;/p&gt;  &lt;p&gt;&amp;#xA0;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sdl/WindowsLiveWriter/TheNewThreatModelingProcess_100B8/tm-hampster-wheel_2.jpg"&gt;&lt;img id="id" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="176" alt="tm-hampster-wheel" src="http://blogs.msdn.com/blogfiles/sdl/WindowsLiveWriter/TheNewThreatModelingProcess_100B8/tm-hampster-wheel_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#xA0;&lt;/p&gt;  &lt;p&gt;Now that you&amp;#x2019;ve seen the wheel, I&amp;#x2019;ll briefly describe the steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Vision&lt;/strong&gt;: Consider your security requirements, scenarios and use cases to help frame your threat modeling. What are the security aspects of your scenarios? What do your personas expect or hope doesn&amp;#x2019;t happen? What are the security goals of the system you&amp;#x2019;re building, and how do those interact with the system as it stands? &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Model&lt;/strong&gt;: The basic idea is to create a diagram of your software, showing all trust boundaries. &lt;/li&gt; &lt;/ol&gt;  &lt;blockquote&gt;   &lt;p&gt;a. Draw a diagram of your software. We encourage use of the DFD formalisms, which Larry Osterman describes in &lt;a href="http://blogs.msdn.com/larryosterman/archive/2007/08/30/threat-modeling-once-again.aspx"&gt;this post&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;&amp;#xA0;&lt;/p&gt;    &lt;p&gt;Essentially, the elements are&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;External entities (anything outside your control) &lt;/li&gt;      &lt;li&gt;Processes (running code) &lt;/li&gt;      &lt;li&gt;Data stores (files, registry entries, shared memory, databases) &lt;/li&gt;      &lt;li&gt;Data flows (which connect all the other elements) &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;b. Draw trust boundaries between components. You can do this on a whiteboard, in Visio, or in one of the specialized threat modeling tools we&amp;#x2019;ve built. (A trust boundary is anywhere that more than one principal can access an object, such as a file or process.)&lt;/p&gt;    &lt;p&gt;c. If your trust boundary crosses something which isn&amp;#x2019;t a data flow, you need to break it into two logical elements, or draw a sub-diagram with more details. (This is different advice: we used to tell people trust boundaries could only cross data flows. People drew them anywhere that felt right. We decided to go with what people were doing&amp;#x2014;there was important information in what they were expressing.)&lt;/p&gt;    &lt;p&gt;d. If you need more details to express where trust boundaries are, add an additional diagram.&lt;/p&gt;    &lt;p&gt;e. When you don&amp;#x2019;t have any more trust boundaries to draw, you&amp;#x2019;re done.&lt;/p&gt;    &lt;p&gt;f. If a diagram doesn&amp;#x2019;t have any trust boundaries, you may have drawn too many details.&lt;/p&gt;    &lt;p&gt;3.&lt;strong&gt; Identify Threats&lt;/strong&gt; using STRIDE/element&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;For each element in your diagram, consider threats of the types indicated in this chart. (We&amp;#x2019;ll come back to the chart&amp;#x2019;s origins in a later post.)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sdl/WindowsLiveWriter/TheNewThreatModelingProcess_100B8/stride-chart_2.jpg"&gt;&lt;img id="id" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="186" alt="stride-chart" src="http://blogs.msdn.com/blogfiles/sdl/WindowsLiveWriter/TheNewThreatModelingProcess_100B8/stride-chart_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;There&amp;#x2019;s an important mis-conception we often see, which is that STRIDE is appropriate for use as a classification system. It&amp;#x2019;s really hard to use STRIDE to describe attacks&amp;#x2014;the impacts blend together really quickly. The most valuable use of STRIDE is to help people think about how threats have impacted elements of a design in the past. That is, it&amp;#x2019;s a framework for finding threats, not for describing them. &amp;#x201C;What if someone spoofs this host?&amp;#x201D;&lt;/p&gt;    &lt;p&gt;&amp;#xA0;&lt;/p&gt;    &lt;p&gt;4. &lt;strong&gt;Mitigate&lt;/strong&gt; &lt;/p&gt;    &lt;p&gt;Here on the SDL strategy team, we love threat modeling. We know that not everyone feels that way, and we ask teams to threat model so that they can find and &lt;b&gt;&lt;i&gt;mitigate&lt;/i&gt; &lt;/b&gt;threats. A threat model document with great diagrams and lots of threats isn&amp;#x2019;t very useful if you don&amp;#x2019;t take the key step of addressing the issues you find. There are four ways to do that:&lt;/p&gt;    &lt;ol&gt;     &lt;p&gt;a. Redesign to eliminate threats.&lt;/p&gt;      &lt;p&gt;b. Use standard mitigations, such as those provided by OS features, to mitigate threats.&lt;/p&gt;      &lt;p&gt;c. Invent new mitigations, understanding that this is a subtle art.&lt;/p&gt;      &lt;p&gt;d. Accept risk, when allowed by the SDL&lt;/p&gt;   &lt;/ol&gt; &lt;/blockquote&gt;  &lt;ol&gt;   &lt;p&gt;5.&lt;strong&gt;&amp;#xA0; Validate&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;There are two levels of validation. The first is within each stage, the second is a validation pass at the end of the process. That end of process validation entails:&lt;/p&gt; &lt;/ol&gt;  &lt;blockquote&gt;   &lt;p&gt;a. Make sure that the diagrams are up-to-date and accurate&lt;/p&gt; &lt;/blockquote&gt;  &lt;ol&gt;   &lt;p&gt;b. Ensure that you have STRIDE threats per data flow that crosses a trust boundary, and for each element that such a trust boundary connects to&lt;/p&gt;    &lt;p&gt;c. Make sure you&amp;#x2019;re mitigating each threat&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;i. You have a bug filed per threat that you want to mitigate. The bug should be of the form &amp;#x201C;attacker can do X. Proposed fix: Y.&amp;#x201D; You might include tradeoffs you&amp;#x2019;re making, and possibly have test plans in the bug, if you include those.&lt;/p&gt;   &lt;/blockquote&gt;    &lt;blockquote&gt;     &lt;p&gt;ii. You have a valid reason for each non-mitigated threat not being mitigated.&lt;/p&gt;   &lt;/blockquote&gt;    &lt;blockquote&gt;     &lt;p&gt;iii. All threats are in class i or ii.&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;5.a. On change, re-validate&lt;/p&gt;    &lt;p&gt;&amp;#xA0;&lt;/p&gt; &lt;/ol&gt;  &lt;p align="left"&gt;This hamster wheel has a very intentional brake on it: the word change, above validate. What that means is you want to go through the process again when you make changes that need to be on the diagram. Checking to see if your diagrams change is a relatively simple check that allows people to track changes against their threat model as their design iterates.&lt;/p&gt;  &lt;p&gt;In the next post, I&amp;#x2019;ll talk about the reasoning behind the design, and offer up some process tools that anyone can use to make a process more user-friendly.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5232594" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sdl/archive/tags/threat+modeling/default.aspx">threat modeling</category><category domain="http://blogs.msdn.com/sdl/archive/tags/SDL/default.aspx">SDL</category></item><item><title>The Trouble with Threat Modeling</title><link>http://blogs.msdn.com/sdl/archive/2007/09/26/the-trouble-with-threat-modeling-2.aspx</link><pubDate>Wed, 26 Sep 2007 22:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5149172</guid><dc:creator>sdl</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/sdl/comments/5149172.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sdl/commentrss.aspx?PostID=5149172</wfw:commentRss><description>&amp;nbsp; 
&lt;P class=MsoNormal style="MARGIN: 10pt 0in"&gt;&lt;FONT face=Calibri&gt;Adam Shostack here.&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;I said recently that I wanted to talk more about what I do. The core of what I do is help Microsoft’s product teams analyze the security of their designs by threat modeling. &lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;So I’m very concerned about how well we threat model, and how to help folks I work with do it better.&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;I’d like to start that by talking about some of the things that make the design analysis process difficult, then what we’ve done to address those things.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;As each team starts a new product cycle, they have to decide how much time to spend on the tasks that are involved in security.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;There’s competition for the time and attention of various people within a product team.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Human nature is that if a &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;process is easy or rewarding, people will spend time on it.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;If it’s not, they’ll do as little of it as they can get away with.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;So the process evolves, because, unlike &lt;A title="Dr. No" href="http://blogs.msdn.com/sdl/archive/2007/08/30/dr-no-and-risk-management.aspx" mce_href="http://blogs.msdn.com/sdl/archive/2007/08/30/dr-no-and-risk-management.aspx"&gt;Dr No&lt;/A&gt;,&lt;/SPAN&gt; we want to be aligned with what our product groups and customers want&lt;o:p&gt;&lt;/o:p&gt; &lt;/P&gt;
&lt;P&gt;There have been a lot of variants of things called “threat modeling processes” at Microsoft, and a lot more in the wide world.&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;People sometimes want to argue because they think Microsoft uses the term “threat modeling” differently than the rest of the world.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This is only a little accurate.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;There is a community which uses questions like “what’s your threat model” to mean “which attackers are you trying to stop?”&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Microsoft uses threat model to mean “which attacks are you trying to stop?”&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;There are other communities whose use is more like ours.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;In this paragraph, I’m attempting to mitigate a denial of service threat, where &lt;A href="http://www.thefreedictionary.com/prescriptivist" mce_href="http://www.thefreedictionary.com/prescriptivist"&gt;prescriptivists&lt;/A&gt; &lt;/SPAN&gt;try to drag us into a long discussion of how we’re using words.)&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;The processes I’m critiquing here are the versions of threat modeling that are presented in&lt;I&gt; &lt;A href="http://www.amazon.com/Writing-Secure-Second-Michael-Howard/dp/0735617228/ref=pd_bbs_sr_1/002-3554229-7012008?ie=UTF8&amp;amp;s=books&amp;amp;qid=1190834155&amp;amp;sr=8-1" mce_href="http://www.amazon.com/Writing-Secure-Second-Michael-Howard/dp/0735617228/ref=pd_bbs_sr_1/002-3554229-7012008?ie=UTF8&amp;amp;s=books&amp;amp;qid=1190834155&amp;amp;sr=8-1"&gt;Writing Secure Code&lt;/A&gt;, &lt;A href="http://www.amazon.com/Threat-Modeling-Microsoft-Professional-Swiderski/dp/0735619913/ref=pd_bbs_8/002-3554229-7012008?ie=UTF8&amp;amp;s=books&amp;amp;qid=1190834155&amp;amp;sr=8-8" mce_href="http://www.amazon.com/Threat-Modeling-Microsoft-Professional-Swiderski/dp/0735619913/ref=pd_bbs_8/002-3554229-7012008?ie=UTF8&amp;amp;s=books&amp;amp;qid=1190834155&amp;amp;sr=8-8"&gt;Threat Modeling&lt;/A&gt;&lt;/I&gt;, and &lt;A href="http://www.amazon.com/Security-Development-Lifecycle-Michael-Howard/dp/0735622140/ref=pd_bbs_5/002-3554229-7012008?ie=UTF8&amp;amp;s=books&amp;amp;qid=1190834155&amp;amp;sr=8-5" mce_href="http://www.amazon.com/Security-Development-Lifecycle-Michael-Howard/dp/0735622140/ref=pd_bbs_5/002-3554229-7012008?ie=UTF8&amp;amp;s=books&amp;amp;qid=1190834155&amp;amp;sr=8-5"&gt;&lt;I&gt;The Security Development Lifecycle&lt;/I&gt;&lt;/A&gt; books.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;In this first post of a series on threat modeling, I’m going to talk a lot about problems we had in the past.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;In the next posts, I’ll talk about what the process looks like today, and why we’ve made the changes we’ve made.&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;I want to be really clear that I’m not critiquing the people who have been threat modeling, or their work.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;A lot of people have put a tremendous amount of work in, and gotten some good results.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;There are all sorts of issues that our customers will never experience because of that work. &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;I am critiquing the processes, &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;saying we can do better, in places we are doing better, and I intend to ensure we continue to do better. &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;We ask feature teams to participate in threat modeling, rather than having a central team of security experts develop threat models.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;There’s a large trade-off associated with this choice.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The benefit is that everyone thinks about security early.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The cost is that we have to be very prescriptive in how we advise people to approach the problem.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Some people are great at “think like an attacker,” but others have trouble.&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Even for the people who are good at it, putting a &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;process in place is great for coverage, assurance and reproducibility.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;But the experts don’t expose the cracks in a process in the same way as asking everyone to participate.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Getting Started&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;The first problem with ‘the threat modeling process’ is that there are a lot of processes.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;People, eager to threat model, had a number of TM processes to choose from, which led to confusion.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;If you’re a security expert, you might be able to select the right process.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;If you’re not, judging and analyzing the processes might be a lot like analyzing cancer treatments.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Drugs?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Radiation?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Surgery?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It’s scary, complex, and the wrong choice might lead to a lot of unnecessary pain.&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;You want expert advice, and you want the experts to agree.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;Most of the threat modeling processes previously taught at Microsoft were long and complex, having as many as 11 steps.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;That’s a lot of steps to remember.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;There are steps which are much easier if you’re an expert who understands the process.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;For example, ‘asset enumeration.’&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Let’s say you’re threat modeling the GDI graphics library.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;What are the assets that GDI owns?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;A security expert might be able to answer the question, but anyone else will come to a screeching halt, and be unable to judge if they can skip this step and come back to it.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;(I’ll come back to the effects of this in a later post.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;I wasn’t around when the processes were created, and I don’t think there’s a lot of value in digging deeply into precisely how it got where it is.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I believe the core issue is that people tried to bring proven techniques to a large audience, and didn’t catch some of the problems as the audience changed from experts to novices.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;The final problem people ran into as they tried to get started was an overload of jargon, and terms imported from security.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;We toss around terms like repudiation as if everyone should know what it means, and sometimes implied they’re stupid if they don’t.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;(Repudiation is claiming that you didn’t do something.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;For example, “I didn’t write that email!,” “I don’t know what got into me last night!”&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;You can repudiate something you really did, and you can repudiate something you didn’t do.)&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Using jargon sent several unfortunate messages:&lt;BR&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;This is a process for experts only&lt;/LI&gt;
&lt;LI&gt;You’re not an expert&lt;/LI&gt;
&lt;LI&gt;You can tune out now&lt;/LI&gt;
&lt;LI&gt;We don't really expect you to do this well&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal&gt;Of course, that wasn’t the intent, but it often was the effect.&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;The Disconnected Process&lt;/B&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;Another set of problems is that threat modeling can feel disconnected from the development process.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The extreme programming folks are fond of only doing what they need to do to ship, and Microsoft shipped code without threat models for a long time.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The further something is from the process of building code, the less likely it is to be complete and up to date.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;That problem was made worse because there weren’t a lot of people who would say “let me see the threat model for that.”&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;So there wasn’t a lot of pressure to keep threat models up to date, even if teams had done a good job up front with them.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;There may be more pressure with other specs which are used by a broader set of people during development.&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;Validation&lt;/B&gt;&lt;BR&gt;&lt;BR&gt;Once a team had started threat modeling, they had trouble knowing if they were doing a good job.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Had they done enough?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Was their threat model a good representation of the work they had done, or were planning to do?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;When we asked people to draw diagrams, we didn’t tell them when they could stop, or what details didn’t matter.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;When we asked them to brainstorm about threats, we didn’t guide them as to how many they should find.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;When they found threats, what were they supposed to do about them?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This was easier when there was an expert in the room to provide advice on how to mitigate the threat effectively. &lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;How should they track them?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Threats aren’t quite bugs—you can never remove a threat, only mitigate it.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;So perhaps it didn’t make sense to track them like that, but that left threats in a limbo. &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;"Return on Investment"&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormalThe expensive.&lt;SPAN were they challenging, only not processes modeling threat step 11&gt;&amp;nbsp; &lt;/SPAN&gt;The time invested often didn’t seem like it was paying off.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Sometimes it really didn’t pay off.&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;(David LeBlanc makes this point forcefully in “&lt;A href="http://blogs.msdn.com/david_leblanc/archive/2007/09/19/threat-modeling-the-bold-button-is-boring.aspx" mce_href="http://blogs.msdn.com/david_leblanc/archive/2007/09/19/threat-modeling-the-bold-button-is-boring.aspx"&gt;Threat Modeling the Bold Button is Boring&lt;/A&gt;”) &lt;/SPAN&gt;Sometimes it just felt that way—Larry Osterman made that point, unintentionally in “&lt;A href="http://blogs.msdn.com/larryosterman/archive/2007/09/17/threat-modeling-again-presenting-the-playsound-threat-model.aspx" mce_href="http://blogs.msdn.com/larryosterman/archive/2007/09/17/threat-modeling-again-presenting-the-playsound-threat-model.aspx"&gt;Threat Modeling Again, Presenting the PlaySound Threat Model&lt;/A&gt;,” &lt;/SPAN&gt;where he said “Let's look at a slightly more interesting case where threat modeling exposes an issue.”&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Youch!&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;But as I wrote in a comment on that post, “What you've been doing here is walking through a lot of possibilities.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Some of those turn out to be uninteresting, and we learn something.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Others (as we've discussed in email) were pretty clearly uninteresting”&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It can be important to walk through those possibilities so we know they’re uninteresting.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Of course, we’d like to reduce the time it takes to look at each uninteresting issue.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;Other Problems&lt;/B&gt;&lt;BR&gt;&lt;BR&gt;Larry Osterman lays out some other reasons threat modeling is hard in a blog post: &lt;A href="http://blogs.msdn.com/larryosterman/archive/2007/08/30/threat-modeling-once-again.aspx"&gt;http://blogs.msdn.com/larryosterman/archive/2007/08/30/threat-modeling-once-again.aspx&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class=MsoNormal style="MARGIN-LEFT: 0.5in"&gt;One thing that was realized very early on is that our early efforts at threat modeling were quite ad-hoc.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;We sat in a room and said "Hmm, what might the bad guys do to attack our product?" It turns out that this isn't actually a BAD way of going about threat modeling, and if that's all you do, you're way better off than you were if you'd done nothing.&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-LEFT: 0.5in"&gt;Why doesn't it work?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;There are a couple of reasons:&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-LEFT: 0.5in"&gt;It takes a special mindset to think like a bad guy.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Not everyone can switch into that mindset.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;For instance, I can't think of the number of times I had to tell developers on my team "It doesn't matter that you've checked the value on the client, you still need to check it on the server because the client that's talking to your server might not be your code.". &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-LEFT: 0.5in"&gt;Developers tend to think in terms of what a customer needs.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;But many times, the things that make things really cool for a customer provide a superhighway for the bad guy to attack your code.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-LEFT: 0.5in"&gt;It's ad-hoc.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Microsoft asks every single developer and program manager to threat model (because they're the ones who know what the code is doing).&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Unfortunately that means that they're not experts on threat modeling. Providing structure helps avoid mistakes.&lt;BR&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal&gt;With all these problems, we still threat model, because it pays dividends.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;In the next posts, I’ll talk about what we’ve done to improve things, what the process looks like now, and perhaps a bit about what it might look like either in the future, or adopted by other organizations.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5149172" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sdl/archive/tags/threat+modeling/default.aspx">threat modeling</category><category domain="http://blogs.msdn.com/sdl/archive/tags/SDL/default.aspx">SDL</category></item></channel></rss>