<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title><![CDATA[[SecurityRatty] tag: redesign]]></title>
    <link>http://securityratty.com/tag/redesign</link>
    <description></description>
    <pubDate>Mon, 01 Oct 2007 21:15:35 +0000</pubDate>
    <generator>iRatty Engine</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <item>
      <title><![CDATA[The web browser is sick but wheres the cure?]]></title>
      <link>http://securityratty.com/article/c1a26694b7d3db2c185a5f976e06cc90</link>
      <guid>http://securityratty.com/article/c1a26694b7d3db2c185a5f976e06cc90</guid>
      <description><![CDATA[Blogger: Ramon Krikken
The web browser is one of those peculiar pieces of software, having to accept input from arbitrary sources and then parse and render the data that is sent to it. Part of this it...]]></description>
      <content:encoded><![CDATA[
<div xmlns="http://www.w3.org/1999/xhtml"><p>Blogger: Ramon Krikken</p>

<p>The web browser is one of those peculiar pieces of software, having to accept input from arbitrary sources and then parse and render the data that is sent to it. Part of this it does by itself, and other parts are taken care of by handlers and plug-ins. In doing so, it displays hypertext, images, videos, and even runs active content like Flash, JavaScript, and ActiveX. </p>

<p>But however much we love the browser, we’ve also come to hate the myriad of vulnerabilities that affect it. Everything from cross-site scripting to remote code execution via maliciously formed animated cursor files and Flash content can make browsing a hazardous activity. The browser is sick, and that’s not desirable for a platform we use for important business and personal transactions.</p>

<p>Worsening the browser’s diagnosis is the <a href="http://taossa.com.nyud.net:8080/archive/bh08sotirovdowdslides.pdf">recent paper</a> from Mark Dowd and Alexander Sotirov, sub-titled “Setting back browser security by 10 years,” which discusses how to bypass Microsoft Vista’s memory protection capabilities with some added effort for the exploit designers. It’s not that all of the techniques are necessarily new, but the browser appears to be particularly vulnerable to easy exploitation. </p>

<p>Surprising? Not exactly, when we take into account that the browser is suffering from the same disease as the general purpose operating system: bloat and compatibility. We expect the browser to do ever more, but everything we used it for before still needs to work as if it were yesterday. It feels a bit like people insisting on using a cardboard box as a safe, and wondering why their money keeps getting stolen.</p>

<p>It’s not like we haven’t been working on the browser’s cure, though. There have been some improvements in the browsers themselves, the operating systems have also implemented compensating controls, but most of all, there has been an enormous push for securing the web applications that deliver the data in the first place. Unfortunately, the latter two won’t help secure the browser in the long run.</p>

<p>The first issue is that not all content will come from ‘nice’ servers, the second that the server can only make an educated guess on how a browser will parse and render a given set of data, and the third that operating system controls have their own limitations, whether by design or implementation (for example needing to re-compile existing code to enable certain protections.) The browser, in the end, has to be mostly responsible for keeping itself safe; the operating system must assist it in doing so.</p>

<p>So we’re in a pickle. The browser is sick (and the operating system is too), but it’s hard to cure it without a redesign that will undoubtedly impact compatibility, the ever-so-desired multi-functionality, or its ease of use. We can layer defenses by using web filtering in the enterprise environment, but in the end – for the consumer market in particular – we need to fix the browser itself. I can think of a few things I think might help: </p>

<ul><li>Some kind of <a href="http://people.mozilla.com/~bsterne/site-security-policy/">site security policy</a>&nbsp; to restrict where the browser loads auxiliary content from, and which data it can ‘trust’, when loading a web page (I’d prefer mandatory enforcement, and adding an HTML tag to be able to indicate blocks of untrustworthy data.)</li>

<li>Restricted compartments for plug-ins to run in, ensuring that their bugs cannot easily affect the whole browser.</li>

<li>Better software development practices for the plug-ins and content parsers themselves, so that they’re less vulnerable, and compiled with the latest protection measures to begin with.</li></ul>

<p>All of this means more work, and some of it means a lot of unhappy reactions when things stop working. Even then we will of course still have to deal with additional vulnerabilities, such as those that may be present in hardware, but we will at least have taken prudent steps to ‘find a cure.’</p>

</div>
<img src="http://feeds.feedburner.com/~r/SecurityAndRiskManagementStrategiesBlog/~4/364862623" height="1" width="1"/>]]></content:encoded>
      <pubDate>Thu, 14 Aug 2008 07:11:14 +0000</pubDate>
      <category domain="http://securityratty.com/tag/browser">browser</category>
      <category domain="http://securityratty.com/tag/web browser">web browser</category>
      <category domain="http://securityratty.com/tag/browser appears">browser appears</category>
      <category domain="http://securityratty.com/tag/web">web</category>
      <category domain="http://securityratty.com/tag/cure">cure</category>
      <category domain="http://securityratty.com/tag/browser security">browser security</category>
      <category domain="http://securityratty.com/tag/content">content</category>
      <category domain="http://securityratty.com/tag/runs active content">runs active content</category>
      <category domain="http://securityratty.com/tag/browsers cure">browsers cure</category>
      <source url="http://feeds.feedburner.com/~r/SecurityAndRiskManagementStrategiesBlog/~3/364862623/the-web-browser.html">The web browser is sick but wheres the cure?</source>
    </item>
    <item>
      <title><![CDATA[The web browser is sick ??? but where???s the cure?]]></title>
      <link>http://securityratty.com/article/ed0b490e06092c5b7a4f3957bd361fa2</link>
      <guid>http://securityratty.com/article/ed0b490e06092c5b7a4f3957bd361fa2</guid>
      <description><![CDATA[Blogger: Ramon Krikken
The web browser is one of those peculiar pieces of software, having to accept input from arbitrary sources and then parse and render the data that is sent to it. Part of this it...]]></description>
      <content:encoded><![CDATA[
<div xmlns="http://www.w3.org/1999/xhtml"><p>Blogger: Ramon Krikken</p>

<p>The web browser is one of those peculiar pieces of software, having to accept input from arbitrary sources and then parse and render the data that is sent to it. Part of this it does by itself, and other parts are taken care of by handlers and plug-ins. In doing so, it displays hypertext, images, videos, and even runs active content like Flash, JavaScript, and ActiveX. </p>

<p>But however much we love the browser, we???ve also come to hate the myriad of vulnerabilities that affect it. Everything from cross-site scripting to remote code execution via maliciously formed animated cursor files and Flash content can make browsing a hazardous activity. The browser is sick, and that???s not desirable for a platform we use for important business and personal transactions.</p>

<p>Worsening the browser???s diagnosis is the <a href="http://taossa.com.nyud.net:8080/archive/bh08sotirovdowdslides.pdf">recent paper</a> from Mark Dowd and Alexander Sotirov, sub-titled ???Setting back browser security by 10 years,??? which discusses how to bypass Microsoft Vista???s memory protection capabilities with some added effort for the exploit designers. It???s not that all of the techniques are necessarily new, but the browser appears to be particularly vulnerable to easy exploitation. </p>

<p>Surprising? Not exactly, when we take into account that the browser is suffering from the same disease as the general purpose operating system: bloat and compatibility. We expect the browser to do ever more, but everything we used it for before still needs to work as if it were yesterday. It feels a bit like people insisting on using a cardboard box as a safe, and wondering why their money keeps getting stolen.</p>

<p>It???s not like we haven???t been working on the browser???s cure, though. There have been some improvements in the browsers themselves, the operating systems have also implemented compensating controls, but most of all, there has been an enormous push for securing the web applications that deliver the data in the first place. Unfortunately, the latter two won???t help secure the browser in the long run.</p>

<p>The first issue is that not all content will come from ???nice??? servers, the second that the server can only make an educated guess on how a browser will parse and render a given set of data, and the third that operating system controls have their own limitations, whether by design or implementation (for example needing to re-compile existing code to enable certain protections.) The browser, in the end, has to be mostly responsible for keeping itself safe; the operating system must assist it in doing so.</p>

<p>So we???re in a pickle. The browser is sick (and the operating system is too), but it???s hard to cure it without a redesign that will undoubtedly impact compatibility, the ever-so-desired multi-functionality, or its ease of use. We can layer defenses by using web filtering in the enterprise environment, but in the end ??? for the consumer market in particular ??? we need to fix the browser itself. I can think of a few things I think might help: </p>

<ul><li>Some kind of <a href="http://people.mozilla.com/~bsterne/site-security-policy/">site security policy</a>&nbsp; to restrict where the browser loads auxiliary content from, and which data it can ???trust???, when loading a web page (I???d prefer mandatory enforcement, and adding an HTML tag to be able to indicate blocks of untrustworthy data.)</li>

<li>Restricted compartments for plug-ins to run in, ensuring that their bugs cannot easily affect the whole browser.</li>

<li>Better software development practices for the plug-ins and content parsers themselves, so that they???re less vulnerable, and compiled with the latest protection measures to begin with.</li></ul>

<p>All of this means more work, and some of it means a lot of unhappy reactions when things stop working. Even then we will of course still have to deal with additional vulnerabilities, such as those that may be present in hardware, but we will at least have taken prudent steps to ???find a cure.???</p>

</div>
]]></content:encoded>
      <pubDate>Thu, 14 Aug 2008 07:11:14 +0000</pubDate>
      <category domain="http://securityratty.com/tag/browser">browser</category>
      <category domain="http://securityratty.com/tag/web browser">web browser</category>
      <category domain="http://securityratty.com/tag/browser appears">browser appears</category>
      <category domain="http://securityratty.com/tag/browser security">browser security</category>
      <category domain="http://securityratty.com/tag/web">web</category>
      <category domain="http://securityratty.com/tag/content">content</category>
      <category domain="http://securityratty.com/tag/runs active content">runs active content</category>
      <category domain="http://securityratty.com/tag/web page">web page</category>
      <category domain="http://securityratty.com/tag/system controls">system controls</category>
      <source url="http://srmsblog.burtongroup.com/2008/08/the-web-browser.html">The web browser is sick ??? but where???s the cure?</source>
    </item>
    <item>
      <title><![CDATA[Reverse-Engineering Exploits from Patches]]></title>
      <link>http://securityratty.com/article/aea53023200a15c1c12bfc50c0477df8</link>
      <guid>http://securityratty.com/article/aea53023200a15c1c12bfc50c0477df8</guid>
      <description><![CDATA[This is interesting research : given a security patch, can you automatically reverse-engineer the security vulnerability that is being patched and create exploit code to exploit it
Turns out you can....]]></description>
      <content:encoded><![CDATA[<p>This is <a href="http://www.cs.cmu.edu/~dbrumley/pubs/apeg.html">interesting research</a>: given a security patch, can you automatically reverse-engineer the security vulnerability that is being patched and create exploit code to exploit it?</p>

<p>Turns out you can.</p>

<blockquote>What does this mean?

<p>Attackers can simply wait for a patch to be released, use these techniques, and with reasonable chance, produce a working exploit within seconds. Coupled with a worm, all vulnerable hosts could be compromised before most are even aware a patch is available, let alone download it. Thus, Microsoft should redesign Windows Update. We propose solutions which prevent several possible schemes, some of which could be done with existing technology.</blockquote></p>

<p>Full paper <a href="http://www.cs.cmu.edu/~dbrumley/pubs/apeg.pdf">here</a>.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/schneier/fulltext?a=0rGEwLG"><img src="http://feeds.feedburner.com/~f/schneier/fulltext?i=0rGEwLG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/schneier/fulltext?a=ZKSjDHG"><img src="http://feeds.feedburner.com/~f/schneier/fulltext?i=ZKSjDHG" border="0"></img></a>
</div>]]></content:encoded>
      <pubDate>Wed, 23 Apr 2008 09:35:08 +0000</pubDate>
      <category domain="http://securityratty.com/tag/exploit">exploit</category>
      <category domain="http://securityratty.com/tag/security patch">security patch</category>
      <category domain="http://securityratty.com/tag/exploit code">exploit code</category>
      <category domain="http://securityratty.com/tag/patch">patch</category>
      <category domain="http://securityratty.com/tag/security vulnerability">security vulnerability</category>
      <category domain="http://securityratty.com/tag/simply wait">simply wait</category>
      <category domain="http://securityratty.com/tag/redesign windows">redesign windows</category>
      <category domain="http://securityratty.com/tag/propose solutions">propose solutions</category>
      <category domain="http://securityratty.com/tag/vulnerable hosts">vulnerable hosts</category>
      <source url="http://www.schneier.com/blog/archives/2008/04/reverseengineer.html">Reverse-Engineering Exploits from Patches</source>
    </item>
    <item>
      <title><![CDATA[Making Threat Modeling Work Better]]></title>
      <link>http://securityratty.com/article/96ecbbe30364ae5984ae7f1a0bdc7144</link>
      <guid>http://securityratty.com/article/96ecbbe30364ae5984ae7f1a0bdc7144</guid>
      <description><![CDATA[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...]]></description>
      <content:encoded><![CDATA[<p>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.</p>  <p>The brainstorming meeting is a mainstay of expert threat modeling. It&#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. </p>  <p>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. </p>  <p>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&#x2019;t security experts. This means that they lack both direct experience of the process and the background that informs it. This isn&#x2019;t a slam on them. I lack experience in the database design process, and I don&#x2019;t have years of experience to help orient me. So I&#x2019;d make mistakes designing a database, and someone who isn&#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.</p>  <p><b>Adding Structure to Chaos</b></p>  <p>So how does this relate to the brainstorming meeting? It&#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&#x2019;t lead to beginners having a flow experience. So we need a structure, and we need to provide it.</p>  <p>We encourage people to get started by drawing a whiteboard diagram. Almost everyone in software draws on whiteboards regularly, and this makes it <b>an ideal first step.</b> It&#x2019;s an ideal first step because everyone can do it, see that they&#x2019;ve done it, and feel like they&#x2019;re making progress.</p>  <p>The core mechanism we&#x2019;ve used to provide it is the STRIDE/element chart. (I&#x2019;ll talk a lot more about its origins and limits in a few posts, but for now, let&#x2019;s pretend it&#x2019;s gospel, and enumerates all possible threats.) Given this gospel, it becomes possible to step through the threat modeling diagram, &#x201C;turn the crank,&#x201D; and have threats come out. &#x201C;Item 7 is a data flow? Let&#x2019;s look for T,I and D.&#x201D; (Tampering, Information disclosure, and Denial of service.)</p>  <p>Similarly, we have four ways of addressing threats &#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&#x2019;re presented in a preferred order).</p>  <p>Lastly, we provide advice about how to validate the threat model and it&#x2019;s relation to reality.</p>  <p><img src="http://blogs.msdn.com/blogfiles/sdl/WindowsLiveWriter/TheNewThreatModelingProcess_100B8/tm-hampster-wheel_thumb.jpg" align="right" /></p>  <p>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 &#x201C;errors&#x201D; that we see. </p>  <p><b>Where Trust Boundaries Show Up</b></p>  <p>We used to give people clear guidance that trust boundaries should only intersect with data flows. After all, you can&#x2019;t really have a process that&#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 <i>wrong.</i></p>  <p>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&#x2019;ve continued exactly as before, but I&#x2019;m a lot happier, because I&#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&#x2019;re happier too. No one is telling them that they&#x2019;re wrong.</p>  <p>I was going to title this post &#x201C;Lord grant me the strength to change the things I can, the courage to accept what I can&#x2019;t, and the wisdom to know the difference,&#x201D; but, first, it&#x2019;s too long, and second, if we started that way, it would be wrong to add beer or scotch.</p><img src="http://blogs.msdn.com/aggbug.aspx?PostID=5478448" width="1" height="1">]]></content:encoded>
      <pubDate>Tue, 16 Oct 2007 20:23:53 +0000</pubDate>
      <category domain="http://securityratty.com/tag/threat">threat</category>
      <category domain="http://securityratty.com/tag/process">process</category>
      <category domain="http://securityratty.com/tag/process helps ensure">process helps ensure</category>
      <category domain="http://securityratty.com/tag/developers threat model">developers threat model</category>
      <category domain="http://securityratty.com/tag/database design process">database design process</category>
      <category domain="http://securityratty.com/tag/security">security</category>
      <category domain="http://securityratty.com/tag/trust boundaries">trust boundaries</category>
      <category domain="http://securityratty.com/tag/threat model">threat model</category>
      <category domain="http://securityratty.com/tag/security experts">security experts</category>
      <source url="http://blogs.msdn.com/sdl/archive/2007/10/16/making-threat-modeling-work-better.aspx">Making Threat Modeling Work Better</source>
    </item>
    <item>
      <title><![CDATA[The New Threat Modeling Process]]></title>
      <link>http://securityratty.com/article/0b2de27ab1ef185846b968c1dd9088d2</link>
      <guid>http://securityratty.com/article/0b2de27ab1ef185846b968c1dd9088d2</guid>
      <description><![CDATA[Adam Shostack here, with the second post in my series on the evolved threat modeling process. To summarize, what Ive tried to achieve in changing the process is to simplify, prescribe, and offer...]]></description>
      <content:encoded><![CDATA[<p>Adam Shostack here, with the second post in my series on the evolved threat modeling process. To summarize, what I&#x2019;ve tried to achieve in changing the process is to simplify, prescribe, and offer self-checks. I&#x2019;ll talk in the next post about why those three elements are so important to me. For now, let me describe the process.</p>  <p>One of the largest changes that we&#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&#x2019;s intentional. There&#x2019;s only so much we can expect people to take away from a class, and making this simple and familiar helps ensure there&#x2019;s room for the other important parts.</p>  <p>&#xA0;</p>  <p>First, the &#x201C;<a href="http://www.securitymetrics.org/content/Wiki.jsp?page=Welcome_blogentry_061005_1">process hamster wheel</a>,&#x201D; (with apologies to Yankee Group analyst Andy Jaquith):</p>  <p>&#xA0;</p>  <p><a href="http://blogs.msdn.com/blogfiles/sdl/WindowsLiveWriter/TheNewThreatModelingProcess_100B8/tm-hampster-wheel_2.jpg"><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" /></a> </p>  <p>&#xA0;</p>  <p>Now that you&#x2019;ve seen the wheel, I&#x2019;ll briefly describe the steps:</p>  <ol>   <li><strong>Vision</strong>: 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&#x2019;t happen? What are the security goals of the system you&#x2019;re building, and how do those interact with the system as it stands? </li>    <li><strong>Model</strong>: The basic idea is to create a diagram of your software, showing all trust boundaries. </li> </ol>  <blockquote>   <p>a. Draw a diagram of your software. We encourage use of the DFD formalisms, which Larry Osterman describes in <a href="http://blogs.msdn.com/larryosterman/archive/2007/08/30/threat-modeling-once-again.aspx">this post</a>.</p>    <p>&#xA0;</p>    <p>Essentially, the elements are</p>    <ol>     <li>External entities (anything outside your control) </li>      <li>Processes (running code) </li>      <li>Data stores (files, registry entries, shared memory, databases) </li>      <li>Data flows (which connect all the other elements) </li>   </ol>    <p>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&#x2019;ve built. (A trust boundary is anywhere that more than one principal can access an object, such as a file or process.)</p>    <p>c. If your trust boundary crosses something which isn&#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&#x2014;there was important information in what they were expressing.)</p>    <p>d. If you need more details to express where trust boundaries are, add an additional diagram.</p>    <p>e. When you don&#x2019;t have any more trust boundaries to draw, you&#x2019;re done.</p>    <p>f. If a diagram doesn&#x2019;t have any trust boundaries, you may have drawn too many details.</p>    <p>3.<strong> Identify Threats</strong> using STRIDE/element</p> </blockquote>  <blockquote>   <p>For each element in your diagram, consider threats of the types indicated in this chart. (We&#x2019;ll come back to the chart&#x2019;s origins in a later post.)</p> </blockquote>  <blockquote>   <p><a href="http://blogs.msdn.com/blogfiles/sdl/WindowsLiveWriter/TheNewThreatModelingProcess_100B8/stride-chart_2.jpg"><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" /></a> </p>    <p>There&#x2019;s an important mis-conception we often see, which is that STRIDE is appropriate for use as a classification system. It&#x2019;s really hard to use STRIDE to describe attacks&#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&#x2019;s a framework for finding threats, not for describing them. &#x201C;What if someone spoofs this host?&#x201D;</p>    <p>&#xA0;</p>    <p>4. <strong>Mitigate</strong> </p>    <p>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 <b><i>mitigate</i> </b>threats. A threat model document with great diagrams and lots of threats isn&#x2019;t very useful if you don&#x2019;t take the key step of addressing the issues you find. There are four ways to do that:</p>    <ol>     <p>a. Redesign to eliminate threats.</p>      <p>b. Use standard mitigations, such as those provided by OS features, to mitigate threats.</p>      <p>c. Invent new mitigations, understanding that this is a subtle art.</p>      <p>d. Accept risk, when allowed by the SDL</p>   </ol> </blockquote>  <ol>   <p>5.<strong>&#xA0; Validate</strong></p>    <p>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:</p> </ol>  <blockquote>   <p>a. Make sure that the diagrams are up-to-date and accurate</p> </blockquote>  <ol>   <p>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</p>    <p>c. Make sure you&#x2019;re mitigating each threat</p>    <blockquote>     <p>i. You have a bug filed per threat that you want to mitigate. The bug should be of the form &#x201C;attacker can do X. Proposed fix: Y.&#x201D; You might include tradeoffs you&#x2019;re making, and possibly have test plans in the bug, if you include those.</p>   </blockquote>    <blockquote>     <p>ii. You have a valid reason for each non-mitigated threat not being mitigated.</p>   </blockquote>    <blockquote>     <p>iii. All threats are in class i or ii.</p>   </blockquote>    <p>5.a. On change, re-validate</p>    <p>&#xA0;</p> </ol>  <p align="left">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.</p>  <p>In the next post, I&#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.</p><img src="http://blogs.msdn.com/aggbug.aspx?PostID=5232594" width="1" height="1">]]></content:encoded>
      <pubDate>Mon, 01 Oct 2007 21:15:35 +0000</pubDate>
      <category domain="http://securityratty.com/tag/process">process</category>
      <category domain="http://securityratty.com/tag/threat">threat</category>
      <category domain="http://securityratty.com/tag/process validation entails">process validation entails</category>
      <category domain="http://securityratty.com/tag/threat model">threat model</category>
      <category domain="http://securityratty.com/tag/software process diagram">software process diagram</category>
      <category domain="http://securityratty.com/tag/people">people</category>
      <category domain="http://securityratty.com/tag/people trust boundaries">people trust boundaries</category>
      <category domain="http://securityratty.com/tag/love threat">love threat</category>
      <category domain="http://securityratty.com/tag/hamster wheel">hamster wheel</category>
      <source url="http://blogs.msdn.com/sdl/archive/2007/10/01/the-new-threat-modeling-process.aspx">The New Threat Modeling Process</source>
    </item>
  </channel>
</rss>
