<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title><![CDATA[The Security Development Lifecycle]]></title>
    <link>http://securityratty.com/feed/1c14d8fb2584c922415db6384341087a</link>
    <description></description>
    <pubDate>Thu, 31 Jul 2008 15:13:00 +0000</pubDate>
    <generator>iRatty Engine</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <item>
      <title><![CDATA[Mitigating Exploitation Techniques]]></title>
      <link>http://securityratty.com/article/27bfc341fbca807ff6ecae555aaf5bad</link>
      <guid>http://securityratty.com/article/27bfc341fbca807ff6ecae555aaf5bad</guid>
      <description><![CDATA[Hi, Matt Miller from Microsofts Security Science team here to talk about exploitation &amp; mitigation

Over the past decade exploitation techniques have been developed and refined to the point that very...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri>Hi, Matt Miller from Microsoft’s Security Science team here to talk about exploitation &amp; mitigation.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri>Over the past decade exploitation techniques have been developed and refined to the point that very little expertise has been needed to successfully exploit software vulnerabilities.&nbsp; These refinements have lowered the bar for attackers and drastically increased the probability that an attack will be successful.&nbsp; This has led to the need for mitigation techniques that can prevent or otherwise reduce the reliability of a given exploitation technique.&nbsp; In relation to one another, we can think about exploitation techniques as attempting to drive the probability of successful exploitation to 100%, whereas mitigation techniques attempt to drive the same probability to zero.&nbsp; While probability gives us a nice measure for the effectiveness of a mitigation technique, it doesn't give us immediate insight into the specific problems being solved by mitigations or the techniques that are being used to solve those problems.<o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri>Understanding the problems that are solved by mitigations is what provided the motivation for the presentation I will be giving at BlueHat.&nbsp; Many of the materials in this presentation were taken from my work with Leviathan Security Group and have been repurposed to focus on taking attendees on a journey through the technical evolution of the mitigation techniques developed by Microsoft.&nbsp; This evolution is illustrated in terms of the problems each mitigation technique is attempting to solve, the methods used to solve them, and how well each mitigation has stood the test of time thus far.&nbsp; The journey itself starts first with /GS and ends with a glimpse of the mitigation techniques we might expect to see in the future.&nbsp; <o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: PMingLiU; mso-fareast-theme-font: minor-fareast; mso-ansi-language: EN-US; mso-fareast-language: ZH-TW; mso-bidi-language: AR-SA">It is my hope that this presentation will illustrate that mitigation<SPAN style="COLOR: #1f497d">s</SPAN>, when working in concert with one another, can be an effective method <SPAN style="COLOR: black; mso-themecolor: text1">of</SPAN><SPAN style="COLOR: #1f497d"> </SPAN>helping to keep users secure by reducing the probability of a successful exploitation attempt for the majority of known exploitation techniques.</SPAN><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8974688" width="1" height="1">]]></content:encoded>
      <pubDate>Thu, 02 Oct 2008 20:07:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/techniques">techniques</category>
      <category domain="http://securityratty.com/tag/mitigation technique">mitigation technique</category>
      <category domain="http://securityratty.com/tag/mitigation">mitigation</category>
      <category domain="http://securityratty.com/tag/mitigation techniques attempt">mitigation techniques attempt</category>
      <category domain="http://securityratty.com/tag/exploitation">exploitation</category>
      <category domain="http://securityratty.com/tag/mitigation techniques">mitigation techniques</category>
      <category domain="http://securityratty.com/tag/exploitation techniques">exploitation techniques</category>
      <category domain="http://securityratty.com/tag/successful exploitation attempt">successful exploitation attempt</category>
      <category domain="http://securityratty.com/tag/successful">successful</category>
      <source url="http://blogs.msdn.com/sdl/archive/2008/10/02/mitigating-exploitation-techniques.aspx">Mitigating Exploitation Techniques</source>
    </item>
    <item>
      <title><![CDATA[SDL Sessions at BlueHat]]></title>
      <link>http://securityratty.com/article/bddb4f5b0c8437f73140811dafbc6401</link>
      <guid>http://securityratty.com/article/bddb4f5b0c8437f73140811dafbc6401</guid>
      <description><![CDATA[Bryan here. Last January, I wrote a post on this blog bemoaning the difficulty of making security interesting and sexy to developers. Applied research conferences generally place a much greater...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Bryan here. Last January, I wrote a post on this blog bemoaning the difficulty of making security interesting and “</FONT><A href="http://blogs.msdn.com/sdl/archive/2008/01/29/sexy-development-lifecycle.aspx"><FONT face=Calibri color=#0000ff size=3>sexy</FONT></A><FONT face=Calibri size=3>” to developers. Applied research conferences generally place a much greater emphasis on revealing new vulnerabilities and new attack techniques, and much less emphasis on educating people on how to actually fix those vulnerabilities. I was at </FONT><A href="http://www.rsaconference.com/"><FONT face=Calibri color=#0000ff size=3>RSA Conference</FONT></A><FONT size=3><FONT face=Calibri> last April, and I attended a session by a very well-regarded, high-profile security researcher. He gave an eloquent and educational presentation on the dangers of a significant new attack vector, but all the prescriptive guidance he gave for dealing with the threat amounted to something like, “If you’re worried about this kind of thing, talk to your browser manufacturer.” No offense to this presenter, but if I’m going to listen to 70 minutes of discussion of a dangerous threat, I want to leave the room with a clear understanding of what I can do to solve the problem! It’s not enough just to know that the problem exists.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>So, in conjunction with the </FONT><A href="http://blogs.technet.com/bluehat/"><FONT face=Calibri size=3>BlueHat</FONT></A><FONT size=3><FONT face=Calibri> team, I am pleased to announce that the SDL team will be organizing the sessions for the second day of the fall BlueHat conference. The BlueHat SDL sessions will be laser-focused on not just describing vulnerabilities but also solving them. Every attendee should leave every presentation with a clear idea of exactly what he or she needs to do to protect themselves from the threat that was discussed during the session.<o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>The sessions will begin, appropriately, with the topic of secure design. Danny Dhillon of </FONT><A href="http://www.emc.com/"><FONT face=Calibri size=3>EMC</FONT></A><FONT face=Calibri size=3> and the SDL team’s own Adam Shostack will each present their organization’s approach to threat modeling. As a bonus, Adam will also be demonstrating the new </FONT><A href="http://download.microsoft.com/download/1/5/0/150636A9-9EA8-4D00-9E6B-2723F4C188B4/Microsoft%20SDL%20Threat%20Modeling%20Tool%203.0.pdf"><FONT face=Calibri size=3>SDL Threat Modeling tool</FONT></A><FONT face=Calibri size=3> that you might have heard about </FONT><A href="http://blogs.msdn.com/sdl/archive/2008/09/16/sdl-press-tour-announcements.aspx"><FONT face=Calibri size=3>last week</FONT></A><FONT size=3><FONT face=Calibri>. <o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Next up is Matt Miller, a recent and very welcome </FONT><A href="http://blogs.msdn.com/michael_howard/archive/2008/08/18/matt-miller-joins-the-security-science-team.aspx"><FONT face=Calibri size=3>addition</FONT></A><FONT face=Calibri size=3> to the Microsoft Security Science team. Matt has a fantastic presentation on the evolution of buffer overflow attacks and on the corresponding development of overflow mitigations. From there we will switch gears to look at some managed code implementation issues: </FONT><A href="http://www.isecpartners.com/"><FONT face=Calibri size=3>iSEC Partners</FONT></A><FONT size=3><FONT face=Calibri>’ Scott Stender and Alex Vidergar will demonstrate coding techniques to mitigate elusive concurrency vulnerabilities in web applications.<o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri>At this point we will have covered the Design and Implementation phases of the SDL; where better to go from here than Verification? One of the most important activities in the Verification phase is fuzzing, and we have a trio of security experts from the Microsoft Security Science team to talk about it. Jason Shirk, Lars Opstad, and Dave Weinstein will answer three of the most common fuzzing questions: How should I fuzz? When have I fuzzed enough? And what do I do now that I’ve fuzzed? <o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Finally, we will wrap up the Verification phase talks with a return appearance to BlueHat by </FONT><A href="http://www.stachliu.com/"><FONT face=Calibri size=3>Stach &amp; Liu</FONT></A><FONT size=3><FONT face=Calibri>’s Vinnie Liu. Vinnie will compare different approaches to security verification – static code analysis, blackbox analysis, and manual code review – and make recommendations as to when each approach is best used.<o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Even if you can’t make it in to BlueHat in person, you can still watch the sessions via streaming media on </FONT><A href="http://technet.microsoft.com/"><FONT face=Calibri color=#0000ff size=3>TechNet</FONT></A><FONT face=Calibri size=3>. Additionally, webcast interviews with the speakers – condensed “Cliff’s Notes” versions of their full presentations – will be posted on </FONT><A href="http://channel9.msdn.com/Search/Default.aspx?Term=bluehat"><FONT face=Calibri color=#0000ff size=3>Channel 9</FONT></A><FONT size=3><FONT face=Calibri>. And we’ll be continuing the BlueHat tradition of inviting speakers and other industry notables to guest blog about their topics and the latest security trends. More information on all of these resources will be posted here when it becomes available.<o:p></o:p></FONT></FONT></P><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8965212" width="1" height="1">]]></content:encoded>
      <pubDate>Thu, 25 Sep 2008 12:05:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/sdl">sdl</category>
      <category domain="http://securityratty.com/tag/bluehat">bluehat</category>
      <category domain="http://securityratty.com/tag/sessions">sessions</category>
      <category domain="http://securityratty.com/tag/sdl team">sdl team</category>
      <category domain="http://securityratty.com/tag/sdl threat">sdl threat</category>
      <category domain="http://securityratty.com/tag/bluehat sdl sessions">bluehat sdl sessions</category>
      <category domain="http://securityratty.com/tag/bluehat conference">bluehat conference</category>
      <category domain="http://securityratty.com/tag/verification phase talks">verification phase talks</category>
      <category domain="http://securityratty.com/tag/verification phase">verification phase</category>
      <source url="http://blogs.msdn.com/sdl/archive/2008/09/25/sdl-sessions-at-bluehat.aspx">SDL Sessions at BlueHat</source>
    </item>
    <item>
      <title><![CDATA[About the SDL Pro Network]]></title>
      <link>http://securityratty.com/article/dc28bc3dae82ee1f5322434291949577</link>
      <guid>http://securityratty.com/article/dc28bc3dae82ee1f5322434291949577</guid>
      <description><![CDATA[Hello all, Dave here
I expect that a number of you have seen the announcement and various press articles or Steve Lipner's Tuesday post about our launch of the SDL Threat Modeling Tool 3.0, the SDL...]]></description>
      <content:encoded><![CDATA[Hello all, Dave here... 
<P>I expect that a number of you have seen the <A href="http://www.microsoft.com/presspass/features/2008/sep08/09-16lipnersdl.mspx" mce_href="http://www.microsoft.com/presspass/features/2008/sep08/09-16lipnersdl.mspx">announcement</A> and various press articles or <A href="http://blogs.msdn.com/sdl/archive/2008/09/16/sdl-press-tour-announcements.aspx" mce_href="http://blogs.msdn.com/sdl/archive/2008/09/16/sdl-press-tour-announcements.aspx">Steve Lipner's Tuesday post</A> about our launch of the SDL Threat Modeling Tool 3.0, the SDL Optimization Model and the <A href="http://download.microsoft.com/download/0/E/9/0E9AC448-30B2-4451-9E23-46244AFABB7F/Microsoft%20SDL%20Pro%20Network%20_Fact%20Sheet.pdf" mce_href="http://download.microsoft.com/download/0/E/9/0E9AC448-30B2-4451-9E23-46244AFABB7F/Microsoft%20SDL%20Pro%20Network%20_Fact%20Sheet.pdf">SDL Pro Network</A>.&nbsp; Since I was intimately involved with the creation of the SDL Pro Network, I thought I'd write a few words about our objectives and chat a bit about the thinking behind our partner choices for the pilot phase.</P>
<P>So, what are we hoping to gain by creating a network of security consulting and training experts to work with customers who want to implement the SDL?&nbsp; Generally speaking, this question has a two-part answer:&nbsp; First, Microsoft is, and always will be a partner-driven company - we rely on the skills and capabilities of our partners to provide specialized services and broad geographic coverage for Microsoft products and services.&nbsp; Second, even though there are talented folks in the <A href="http://www.microsoft.com/services/microsoftservices/default.mspx" mce_href="http://www.microsoft.com/services/microsoftservices/default.mspx">Microsoft Services</A> organization, it's clear that we will need help from our partners to scale to meet the demand.&nbsp; I can't tell you how many times the folks on the SDL team have been approached by people - after an executive briefing, or a session at TechEd - asking for guidance in implementing SDL in their own organizations.&nbsp; When we look at the demand and pair it with the geographic diversity of our customer base, it's clear that a partner approach is the right answer.</P>
<P>Now a few words about the partners who will be participating in the pilot phase...</P>
<P>After the decision was made to work with partners on SDL delivery, we had two primary criteria that we had to address; partner quality, and manageability of the SDL Pro Network pilot. We have all seen instances where individuals or consulting organizations have represented themselves to the IT community as having security expertise when in reality the "experts for hire" were simply reading a page or two ahead of the customer in whatever security tome was "in vogue" at the time.&nbsp; </P>
<P>Based on those observations, it was clear that partner "quality" was a critical criterion. &nbsp;Fortunately for us, we didn't have to look far to satisfy our quality bar - many of the companies in the SDL Pro Network pilot have direct experience with executing portions of the SDL on <I>our</I> products, or have delivered services to Microsoft in a security context. Design reviews, code reviews, penetration testing, training&nbsp;and other tasks critical to SDL implementation were (and are) common fare for these folks.</P>
<P>Despite the customer demand for SDL that I alluded to above, starting with a small pilot was the right thing to do; a small group of trusted consultancies supports our imperative for quality and it allows us to pragmatically grow the SDL Pro Network as the market matures. &nbsp;As we continue to evolve and innovate with the SDL, we'll have a strong core of partners to help drive the software security message. </P>
<P>Will we grow the SDL Pro Network?&nbsp; The qualified answer is: "When the market demands it..." - there are a number of talented potential partners who meet the quality bar - and clearly, the need for security in software development will grow to demand additional talented specialists. However, it's our plan to begin with a small set of partners of known expertise, and then respond to growing demand as it materializes.</P>
<P>So there you have it - the nuanced beginning and bright future of the SDL Pro Network...&nbsp; I invite your comments, and encourage you to check in at the <A href="http://www.microsoft.com/sdl" mce_href="http://www.microsoft.com/sdl">SDL Portal</A> as we continue to build out the program</P><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8958114" width="1" height="1">]]></content:encoded>
      <pubDate>Thu, 18 Sep 2008 23:12:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/sdl">sdl</category>
      <category domain="http://securityratty.com/tag/sdl pro network">sdl pro network</category>
      <category domain="http://securityratty.com/tag/sdl implementation">sdl implementation</category>
      <category domain="http://securityratty.com/tag/network">network</category>
      <category domain="http://securityratty.com/tag/sdl delivery">sdl delivery</category>
      <category domain="http://securityratty.com/tag/sdl optimization model">sdl optimization model</category>
      <category domain="http://securityratty.com/tag/quality">quality</category>
      <category domain="http://securityratty.com/tag/partner quality">partner quality</category>
      <category domain="http://securityratty.com/tag/security">security</category>
      <source url="http://blogs.msdn.com/sdl/archive/2008/09/18/about-the-sdl-pro-network.aspx">About the SDL Pro Network</source>
    </item>
    <item>
      <title><![CDATA[SDL Press Tour Announcements]]></title>
      <link>http://securityratty.com/article/a59f58bb44b7c02ada643ca33c630f24</link>
      <guid>http://securityratty.com/article/a59f58bb44b7c02ada643ca33c630f24</guid>
      <description><![CDATA[Steve Lipner here

Last week I participated in a press tour talking to press and analysts about the evolution of the SDL. Most of our past discussions with press and analysts have centered on folks...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><FONT color=#002060 size=3 face=Calibri>Steve Lipner here.</FONT></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT color=#002060 size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><FONT size=3><FONT color=#002060><FONT face=Calibri>Last week I participated in a “press tour” talking to press and analysts about the evolution of the SDL. Most of our past discussions with press and analysts have centered on folks who follow security, but this time we also spoke with publications and analysts who write for software development organizations.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I was struck by the extent to which the folks who focus on development have been grappling with many of the issues about developing secure software that we’ve focused on here at Microsoft.<SPAN style="COLOR: red"><o:p></o:p></SPAN></FONT></FONT></FONT></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><o:p><FONT color=#002060 size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><FONT size=3><FONT color=#002060><FONT face=Calibri>Security beat reporters, whom we have been working with for years, have been exposed to a regular stream of news on the latest bugs, worms and viruses, and Microsoft’s ability to react quickly to customers affected by those attacks with patches has been the industry story for many years.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Last week, I had an opportunity to get out and tell the other side of the story – what we are doing proactively as a major software vendor and platform provider to help eliminate vulnerabilities during the development process.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Based on feedback from reporters and analysts who know this space, our work to take Microsoft’s SDL best practices and share them externally has clearly been a need in the industry for a long time.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN></FONT></FONT></FONT></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><o:p><FONT color=#002060 size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><FONT color=#002060 size=3 face=Calibri>The specific occasion that motivated me to spend a week in conference rooms, airplanes and hotel rooms was today’s announcement of new initiatives in sharing aspects of the SDL with the development community.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>These initiatives don’t make secure development a “cut and dried” process, but I believe they will take things one step further toward enabling developers to build more secure software.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I’d encourage you to look at our </FONT><A href="http://msdn.microsoft.com/en-us/security/cc967276.aspx"><FONT size=3 face=Calibri>announcements</FONT></A><FONT color=#002060 size=3 face=Calibri>.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I’m really excited that we’re taking these new steps to share more of our secure development practices and tools with developers who need them.</FONT></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><o:p><FONT color=#002060 size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><FONT color=#002060 size=3 face=Calibri>As always, we’d welcome your feedback about these new programs and what we should do next.</FONT></P><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8954076" width="1" height="1">]]></content:encoded>
      <pubDate>Tue, 16 Sep 2008 12:04:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/development">development</category>
      <category domain="http://securityratty.com/tag/secure development practices">secure development practices</category>
      <category domain="http://securityratty.com/tag/software development organizations">software development organizations</category>
      <category domain="http://securityratty.com/tag/development process">development process</category>
      <category domain="http://securityratty.com/tag/press">press</category>
      <category domain="http://securityratty.com/tag/secure development">secure development</category>
      <category domain="http://securityratty.com/tag/press tour">press tour</category>
      <category domain="http://securityratty.com/tag/sdl">sdl</category>
      <category domain="http://securityratty.com/tag/practices">practices</category>
      <source url="http://blogs.msdn.com/sdl/archive/2008/09/16/sdl-press-tour-announcements.aspx">SDL Press Tour Announcements</source>
    </item>
    <item>
      <title><![CDATA[New addition to the starting line-up...]]></title>
      <link>http://securityratty.com/article/bba1eed8238898849e065890447b0038</link>
      <guid>http://securityratty.com/article/bba1eed8238898849e065890447b0038</guid>
      <description><![CDATA[Hey all Dave here
Wanted to drop a quick note to introduce the latest member of the SDL team - Katie Moussouris
Many of you may already know Katie from her past work on the MSRC Ecosystem Strategy...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri><?xml:namespace prefix = o /><o:p>Hey all – Dave here…</o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri><o:p>Wanted to drop a quick note to introduce the latest member of the SDL team - Katie Moussouris!</o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri><o:p>Many of you may already know Katie from her past work on the <A class="" title="MSRC Ecosystem Strategy Team" href="http://blogs.technet.com/ecostrat/default.aspx" target=_blank mce_href="http://blogs.technet.com/ecostrat/default.aspx">MSRC Ecosystem Strategy Team</A> or her tenure at Symantec and @Stake. </o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri><o:p>Katie has joined the SDL team to help drive crucial elements of our SDL outreach effort; her primary responsibility will be managing our relationships with security consulting and training partners. She’ll additionally be tasked with ongoing analysis of the SDL – with a goal of assisting industry verticals that are looking to apply the SDL in critical computing scenarios.&nbsp; </o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri><o:p>It goes without saying that she will be a regular contributor on the SDL Blog – but given her expertise, it’s likely she’ll continue to blog on an occasional basis over on Ecostrat...</o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri><o:p>Anyway – here’s Katie in her own words!</o:p></FONT></FONT></P>
<BLOCKQUOTE>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri><o:p><EM>Katie Moussouris is a Senior Security Program Manager in the Security Development Lifecycle (SDL) Outreach Team, working to bring Microsoft’s SDL to partners, vendors and customers in order to improve the security of the Internet as a whole. Katie began her nerdy life programming her C64 in grade school, writing her own Zork-like text-based adventure – which was of limited use, since she had no friends and she knew all the puzzles in her own game.&nbsp; Good thing she eventually left her room and found some like-minded people at a local 2600 meeting.</EM></o:p></FONT></FONT></P></BLOCKQUOTE>
<BLOCKQUOTE>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri><o:p><EM>Katie’s professional background is application security, having come from Symantec by way of the @stake acquisition. Katie founded the Microsoft Vulnerability Research Program (MSVR), extending the focus of Microsoft’s security vulnerability research to third party software.&nbsp; Katie also founded and ran the Symantec Vulnerability Research Program, the first program of its kind in Symantec's history to allow the publication through Responsible Disclosure of original vulnerability advisories discovered by Symantec researchers. In addition to performing security research, Katie has been an application penetration tester for Fortune 500 companies across numerous industries. She has uncovered serious vulnerabilities during the course of her work before they could be widely exploited by hooligans and criminals for either fun or profit, respectively.<BR></P></BLOCKQUOTE></EM></o:p></FONT></FONT><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8945661" width="1" height="1">]]></content:encoded>
      <pubDate>Thu, 11 Sep 2008 18:32:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/sdl">sdl</category>
      <category domain="http://securityratty.com/tag/sdl outreach effort">sdl outreach effort</category>
      <category domain="http://securityratty.com/tag/katie">katie</category>
      <category domain="http://securityratty.com/tag/katie moussouris">katie moussouris</category>
      <category domain="http://securityratty.com/tag/microsofts sdl">microsofts sdl</category>
      <category domain="http://securityratty.com/tag/security">security</category>
      <category domain="http://securityratty.com/tag/security research">security research</category>
      <category domain="http://securityratty.com/tag/sdl team">sdl team</category>
      <category domain="http://securityratty.com/tag/security development lifecycle">security development lifecycle</category>
      <source url="http://blogs.msdn.com/sdl/archive/2008/09/11/new-addition-to-the-starting-line-up.aspx">New addition to the starting line-up...</source>
    </item>
    <item>
      <title><![CDATA[SDL and the XSS Filter, Revisited]]></title>
      <link>http://securityratty.com/article/716886a1157dce9a26be34d638f2a814</link>
      <guid>http://securityratty.com/article/716886a1157dce9a26be34d638f2a814</guid>
      <description><![CDATA[Bryan here. Since Steve called me out in his post on the XSS Filter last week, I feel obligated to clarify my position. I believe that the SDL blog is mainly for development teams; after all,...]]></description>
      <content:encoded><![CDATA[<P class=MsoPlainText style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">Bryan here. Since Steve called me out in his post on the <A class="" href="http://blogs.msdn.com/sdl/archive/2008/08/27/sdl-and-the-xss-filter.aspx" mce_href="http://blogs.msdn.com/sdl/archive/2008/08/27/sdl-and-the-xss-filter.aspx">XSS Filter</A> last week, I feel obligated to clarify my position. </SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'; mso-ascii-theme-font: minor-latin; mso-ascii-font-family: Calibri">☺</SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-family: Consolas; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"> I believe that the SDL blog is mainly for development teams; after all, development is the D in SDL. Now, development teams are made up of more than just developers. Development teams include everyone involved in the development process from management on down. But development teams don’t include end users. While XSS Filter is a great, innovative XSS defense technology, there’s really nothing that development teams can do to take advantage of it. Users alone make the decision as to whether they’re g</SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">oing to take advantage of XSS Filter: they either use IE8 and get it, or they use another browser and don’t get it.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">That being said, there are some interesting implications that XSS Filter and other user-specified defenses have for the SDL. Given that XSS Filter is effective in stopping many types of reflected XSS attacks, should we relax the SDL coding and testing requirements around server-side XSS defense? Of course not. For one reason, the SDL requirements are effective in preventing forms of XSS that XSS Filter does not address, like persistent XSS. For another, not everyone uses IE 8. If we were to relax server-side requirements now, we would jeopardize IE 7 users, as well as Firefox, Safari, Opera, Chrome, and all the other browsers’ users.<o:p></o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">But what if these conditions change? What if David and others on the <A class="" href="http://blogs.technet.com/swi/" mce_href="http://blogs.technet.com/swi/">security science team</A> develop a new version of XSS Filter that’s effective against all forms of XSS? And what if all the browser manufacturers develop similar technology and implement it in their browsers? (Or alternatively, what if every user on the planet switches to IE 8? </SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Courier New'; mso-ascii-theme-font: minor-latin; mso-ascii-font-family: Calibri">☺</SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-family: Consolas; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">) Then would we relax the server-side XSS defense requirements? Yes, we probably would.</SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"><o:p></o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">I’ve always been more of a security pragmatist than a security purist. While the security purist in me would want to keep the requirements around to prevent developers from falling back into bad habits, the security pragmatist in me would recognize that development teams have a limited amount of bandwidth, and making them defend against rare, obscure vulnerabilities is a poor use of their time. Unfortunately, we’re not likely to face this scenario any time in the near future, so the SDL will continue to require server-side input validation and output encoding to prevent XSS attacks.<o:p></o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoPlainText style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin">We now return you to your regularly scheduled development-focused blog.<o:p></o:p></SPAN></P><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8934730" width="1" height="1">]]></content:encoded>
      <pubDate>Mon, 08 Sep 2008 16:18:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/xss">xss</category>
      <category domain="http://securityratty.com/tag/xss filter">xss filter</category>
      <category domain="http://securityratty.com/tag/persistent xss">persistent xss</category>
      <category domain="http://securityratty.com/tag/server-side xss defense">server-side xss defense</category>
      <category domain="http://securityratty.com/tag/development teams include">development teams include</category>
      <category domain="http://securityratty.com/tag/development teams">development teams</category>
      <category domain="http://securityratty.com/tag/development">development</category>
      <category domain="http://securityratty.com/tag/sdl">sdl</category>
      <category domain="http://securityratty.com/tag/sdl requirements">sdl requirements</category>
      <source url="http://blogs.msdn.com/sdl/archive/2008/09/08/sdl-and-the-xss-filter-revisited.aspx">SDL and the XSS Filter, Revisited</source>
    </item>
    <item>
      <title><![CDATA[SDL and the XSS Filter]]></title>
      <link>http://securityratty.com/article/ce479edf032699e552a4cb52750d1f63</link>
      <guid>http://securityratty.com/article/ce479edf032699e552a4cb52750d1f63</guid>
      <description><![CDATA[Steve Lipner here. When the Internet Explorer team posted the announcement about the XSS Filter feature in IE8 I asked some other members of the SDL blog team why arent we talking about the new XSS...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Calibri size=3>Steve Lipner here.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>When the Internet Explorer team posted the announcement about the </FONT><A href="http://blogs.msdn.com/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx"><FONT face=Calibri color=#0000ff size=3>XSS Filter feature in IE8</FONT></A><FONT size=3><FONT face=Calibri> <SPAN style="mso-spacerun: yes">&nbsp;</SPAN>I asked some other members of the SDL blog team “why aren’t we talking about the new XSS Filter feature on the SDL blog?” &nbsp;Bryan and Jeremy said something like “that’s a mitigation that only applies to specific clients and a subset of attacks”.&nbsp; So we didn’t cross-reference IE’s XSS Filter post on the SDL blog at the time.&nbsp; Instead, I agreed to write a subsequent post about the relationship of XSS Filter to the SDL and to the ways that our SDL and security science teams think about improving product security.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Calibri size=3>For those of you who aren’t familiar with XSS Filter, a brief summary is that it is a client-side defense against reflected cross-site scripting (XSS) attacks.&nbsp; It works by recognizing that reflected XSS attacks inject script into the string that the browser sends to the targeted web server.&nbsp; If the server doesn’t neuter or strip out the injected script, it gets sent back to the browser and executed in the context of the target web page.&nbsp; Bad things then happen.&nbsp; At a high level, XSS Filter remembers the string that the browser sent to the server, and looks at the server’s response to see if any of the script was actually in that string.&nbsp; If it was, then XSS Filter decides that it got there because it was injected by an XSS attack and blocks the script from executing.&nbsp; The rest of the web page renders as usual.&nbsp; This is a vastly oversimplified sketch of XSS Filter – for details, see the post by David Ross, inventor of XSS Filter on the </FONT><A href="http://blogs.technet.com/swi/archive/2008/08/19/ie-8-xss-filter-architecture-implementation.aspx"><FONT face=Calibri color=#0000ff size=3>Security Vulnerability Research and Defense blog</FONT></A><FONT size=3><FONT face=Calibri>.<o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri>So what does XSS Filter have to do with the SDL?&nbsp; Well, for almost nine years, since XSS was first discovered at Microsoft, we’ve been trying to figure out effective ways to reduce vulnerability to XSS attacks.&nbsp; Our focus has been on improving the ways that web page developers code their pages, and we’ve developed a lot of tools and techniques for making web content safer from XSS attacks and for detecting XSS vulnerabilities in live pages.&nbsp; The SDL requires the use of many of these tools and techniques, and we’re sure we’ve prevented a lot of XSS vulnerabilities from being introduced into Microsoft web pages as a result.&nbsp; <o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT size=3><FONT face=Calibri>But while we identify (and the SDL requires) measures that allow developers to avoid classes of vulnerabilities, we also look to identify more sweeping solutions that can either 1) eliminate classes of vulnerabilities, 2) reduce their severity, or 3) reduce the likelihood of attacks being successful.&nbsp; The process usually starts from deep understanding of a class of vulnerabilities and attacks, and then we broaden defenses from there.&nbsp; In the case of XSS Filter, David’s years of work researching XSS led him to come up with an approach that blocks many of the most common vulnerabilities to reflected attacks found on the web today.&nbsp; The solution is compatible with existing web pages (doesn’t “break the web”) and thus we were able to enable it by default for users of Internet Explorer 8.&nbsp; Because it’s a client-side mitigation, it will help protect users from attacks even though the sites they visit may be vulnerable to XSS.&nbsp; <o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Calibri size=3>Our work on buffer overrun defenses follows a somewhat similar pattern – we started by prescribing coding techniques, banning the use of some APIs, and building tools that detect coding constructs that look like buffer overruns.&nbsp; As we gained a deeper understanding of how buffer overruns can be exploited, we enhanced the </FONT><A href="http://msdn.microsoft.com/en-us/library/8dbf701c(VS.80).aspx"><FONT face=Calibri size=3>/GS compiler flag</FONT></A><FONT face=Calibri size=3> and added </FONT><A href="http://blogs.msdn.com/michael_howard/archive/2006/05/26/address-space-layout-randomization-in-windows-vista.aspx"><FONT face=Calibri color=#0000ff size=3>ASLR</FONT></A><FONT size=3><FONT face=Calibri> in a quest to cause classes of exploits to fail even if a buffer overrun remains.&nbsp; We’re not yet close to eliminating the SDL requirements for use of tools and coding techniques, but the SDL also requires the use of the mitigations to reduce the severity of vulnerabilities that slip past.&nbsp; Will we ever get to the point where the mitigating technologies are so strong that we can relax the coding requirements?&nbsp; Maybe not, but we will continue to introduce technologies that reduce the chances of a successful attack.<o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Calibri size=3>Similarly, in the case of XSS, even after IE8 ships, the SDL will continue to require the use of safe web site coding practices and tools such as the </FONT><A href="http://msdn.microsoft.com/en-us/library/aa973813.aspx"><FONT face=Calibri color=#0000ff size=3>Anti-XSS library</FONT></A><FONT size=3><FONT face=Calibri> both to protect users of browsers other than IE8 and to provide protection in recognition of the fact that XSS Filter is a mitigation or defense in depth rather than a complete solution.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>But we’ll also be keeping our eyes open (and doing active research) in the quest for an even more effective defense – whether client or server side – that eliminates XSS for good.<o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face=Calibri size=3>This post is a little far afield from the normal content of the SDL blog, but I thought it was important to provide a picture of the role of security science and security research in defining SDL requirements and in making major improvements in software security.&nbsp; You can read more about our work in security science in the </FONT><A href="http://blogs.technet.com/swi/default.aspx"><FONT face=Calibri color=#0000ff size=3>Security Vulnerability Research and Defense blog</FONT></A><FONT size=3><FONT face=Calibri>.</FONT></FONT></P><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8900490" width="1" height="1">]]></content:encoded>
      <pubDate>Wed, 27 Aug 2008 11:35:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/xss">xss</category>
      <category domain="http://securityratty.com/tag/xss filter">xss filter</category>
      <category domain="http://securityratty.com/tag/xss vulnerabilities">xss vulnerabilities</category>
      <category domain="http://securityratty.com/tag/xss led">xss led</category>
      <category domain="http://securityratty.com/tag/anti-xss library">anti-xss library</category>
      <category domain="http://securityratty.com/tag/xss attack">xss attack</category>
      <category domain="http://securityratty.com/tag/xss attacks">xss attacks</category>
      <category domain="http://securityratty.com/tag/attacks">attacks</category>
      <category domain="http://securityratty.com/tag/xss filter remembers">xss filter remembers</category>
      <source url="http://blogs.msdn.com/sdl/archive/2008/08/27/sdl-and-the-xss-filter.aspx">SDL and the XSS Filter</source>
    </item>
    <item>
      <title><![CDATA[Security is bigger than finding and fixing bugs]]></title>
      <link>http://securityratty.com/article/9c8ebf47be004fc532a7e7de3eceed48</link>
      <guid>http://securityratty.com/article/9c8ebf47be004fc532a7e7de3eceed48</guid>
      <description><![CDATA[Ive been catching up on various security-related articles that Ive been meaning to read, and the following article was on the list...]]></description>
      <content:encoded><![CDATA[<P>I’ve been catching up on various security-related articles that I’ve been meaning to read, and the following article was on the list <A href="http://www.itnews.com.au/News/73635,google-shares-its-security-secrets.aspx">http://www.itnews.com.au/News/73635,google-shares-its-security-secrets.aspx</A> about Google’s “security secrets.” <BR>&nbsp;<BR>Quoting from the article: </P>
<BLOCKQUOTE>
<P>“In order to keep its products safe, Google has adopted a philosophy of 'security as a cultural value'. The programme includes mandatory security training for developers, a set of in-house security libraries, and code reviews both by Google developers and outside security researchers."</P></BLOCKQUOTE>
<P>I think it is great that Google has a security program they are willing to talk about and I could not agree more with the ‘security as a cultural value’ philosophy. But isn’t there something really fundamental missing here? Design? There is a lot more to software engineering other than coding and testing. <BR>&nbsp;<BR>The SDL has a very large set of implementation-related requirements, but there are many design-related requirements also.</P>
<P>Computer security experts have known since the early 1970s that you have to get the design right; and our experiences with the SDL over the last 5 years have taught us that you need to consider security and privacy (but remember, you have to ship too!) very early in the design phase and have a consistent end-to-end process if you truly hope to reduce vulnerabilities and create more secure software. This is how the SDL is helping to create ‘security as a cultural value’ at Microsoft. </P>
<P>We’ve seen a general trend downward in security vulnerabilities in Microsoft products, and the IBM X-Force 2008 mid-year <A href="http://www-935.ibm.com/services/us/iss/xforce/midyearreport/xforce-midyear-report-2008.pdf" mce_href="http://www-935.ibm.com/services/us/iss/xforce/midyearreport/xforce-midyear-report-2008.pdf">report</A> backs the assertion that we’re making progress; according to the report Microsoft’s share of total vulnerabilities decreased from 3.7% in 2007 (1st place) to 2.5% (that’s 2.5% for <STRONG><U>all</U></STRONG> Microsoft products; a more appropriate comparison might be Windows vs Linux vs Mac OSX, or SQL Server vs Oracle vs DB2) in the first 6 months of 2008 (3rd place.) This is an encouraging signal that the SDL is working on a large scale… of course, it might also show that vulnerability researchers are moving to easier targets, which, to me shows the SDL is working too.<BR>&nbsp;<BR>What do you think?<BR></P><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8867829" width="1" height="1">]]></content:encoded>
      <pubDate>Thu, 14 Aug 2008 16:09:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/security">security</category>
      <category domain="http://securityratty.com/tag/security researchers">security researchers</category>
      <category domain="http://securityratty.com/tag/security vulnerabilities">security vulnerabilities</category>
      <category domain="http://securityratty.com/tag/computer security experts">computer security experts</category>
      <category domain="http://securityratty.com/tag/googles security secrets">googles security secrets</category>
      <category domain="http://securityratty.com/tag/in-house security libraries">in-house security libraries</category>
      <category domain="http://securityratty.com/tag/security program">security program</category>
      <category domain="http://securityratty.com/tag/microsoft products">microsoft products</category>
      <category domain="http://securityratty.com/tag/sdl">sdl</category>
      <source url="http://blogs.msdn.com/sdl/archive/2008/08/14/security-is-bigger-than-finding-and-fixing-bugs.aspx">Security is bigger than finding and fixing bugs</source>
    </item>
    <item>
      <title><![CDATA[What do you want to know about SDL threat modeling?]]></title>
      <link>http://securityratty.com/article/aaf51efd3aec9fd8fc8ca4ad32cfd19e</link>
      <guid>http://securityratty.com/article/aaf51efd3aec9fd8fc8ca4ad32cfd19e</guid>
      <description><![CDATA[Adam Shostack here. I'm working on a paper about &quot;Experiences Threat Modeling at Microsoft&quot; for an academic workshop on security modeling. I have some content that I think is pretty good, but I...]]></description>
      <content:encoded><![CDATA[<P>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. </P>
<P>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!</P><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8795950" width="1" height="1">]]></content:encoded>
      <pubDate>Thu, 31 Jul 2008 20:27:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/questions">questions</category>
      <category domain="http://securityratty.com/tag/experiences threat">experiences threat</category>
      <category domain="http://securityratty.com/tag/adam shostack">adam shostack</category>
      <category domain="http://securityratty.com/tag/paper">paper</category>
      <category domain="http://securityratty.com/tag/academic workshop">academic workshop</category>
      <category domain="http://securityratty.com/tag/promises">promises</category>
      <category domain="http://securityratty.com/tag/answer">answer</category>
      <category domain="http://securityratty.com/tag/content">content</category>
      <category domain="http://securityratty.com/tag/microsoft">microsoft</category>
      <source url="http://blogs.msdn.com/sdl/archive/2008/07/31/what-do-you-want-to-know-about-sdl-threat-modeling.aspx">What do you want to know about SDL threat modeling?</source>
    </item>
    <item>
      <title><![CDATA[Improve Security with "A Layer of Hurt"]]></title>
      <link>http://securityratty.com/article/8863df5f439aabcb64e3fc7d0777f2bf</link>
      <guid>http://securityratty.com/article/8863df5f439aabcb64e3fc7d0777f2bf</guid>
      <description><![CDATA[Hello, Michael here
I got a lot of interesting comments from my TechEd 2008 presentation entitled, &quot;How To Review Your Code And Test For Security Bugs,&quot; but the most comments and questions were...]]></description>
      <content:encoded><![CDATA[Hello, Michael here. 
<P>I got a lot of interesting comments from my <A href="http://blogs.msdn.com/sdl/archive/2008/06/26/security-thoughts-from-teched-2008.aspx" mce_href="http://blogs.msdn.com/sdl/archive/2008/06/26/security-thoughts-from-teched-2008.aspx">TechEd 2008 presentation</A> entitled, "How To Review Your Code And Test For Security Bugs," but the most comments and questions were reserved for fuzz testing; I was blown away by the number of people who thought fuzz testing was hard, or that you only left fuzz testing to ‘leet hackers.</P>
<P>During the presentation I mentioned in some depth how to perform fuzz testing, and what parts of an application should be fuzz testing targets. I also introduced an idea (that's not new) to help people who have never performed fuzz testing begin fuzz testing with very little cost and friction. The idea is to add a small layer of code to an application to automatically mutate untrusted data as it comes into an application; I called that code layer "a layer of hurt."</P>
<P>Before I continue, I want to point out that fuzzing is an SDL requirement, but the idea in this blog post is not an SDL requirement, it's just another way to help meet SDL fuzzing requirements.</P>
<P>Adding a layer of hurt, as shown in the picture below, is pretty simple as it involves adding code to an application to tweak data as it comes into an application. You can work out where to place the fuzzing code by looking at your threat models to see where data crosses trust boundaries. You could also simply grep the code looking for APIs that read data, for example:</P>
<UL>
<LI>Read from files: fread, ReadFile</LI>
<LI>Reading from sockets: recv, recvfrom</LI>
<LI>For .NET code, any stream.Read</LI></UL>
<P>You get the picture.</P>
<P>The fuzzing code should appear right after the API that reads that data.</P>
<P mce_keep="true">For example, C or C++ code that reads from a UDP socket and then fuzzes the data before it's consumed by the rest of the application might look like this:</P><FONT size=1 face=Courier>
<P>char RecvBuf[1024];<BR>int&nbsp; BufLen = sizeof(RecvBuf);</P>
<P mce_keep="true">int result = recvfrom(<BR>&nbsp;&nbsp; RecvSocket, <BR>&nbsp;&nbsp; RecvBuf, <BR>&nbsp;&nbsp; BufLen, <BR>&nbsp;&nbsp; 0, <BR>&nbsp;&nbsp; (SOCKADDR *)&amp;SenderAddr, <BR>&nbsp;&nbsp; &amp;SenderAddrSize);</P></FONT><FONT size=1 face=Courier>
<P>#ifdef _FUZZ<BR>&nbsp;&nbsp; Fuzz(RecvBuf,&amp;BufLen);<BR>#endif</P></FONT>
<P>Or, in C#, code that reads from an untrusted file:</P><FONT size=1 face=Courier>
<P>FileStream fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read);<BR>uint len = (uint)(fileStream.Length);<BR>byte[] fileData = new byte[fileStream.Length];<BR>fileStream.Read(fileData, 0, (int)len);<BR>fileStream.Close();</P></FONT><FONT size=1 face=Courier>
<P mce_keep="true">#if _FUZZ_<BR>&nbsp; Malform pain = new Malform();<BR>&nbsp; fileData = pain.Fuzz(fileData);<BR>#endif</P></FONT>
<P>In both code examples, Fuzz() mutates the incoming data. In the C++ case, the fuzzing code looks like this:</P><FONT size=1 face=Courier>
<P>void Fuzz(_Inout_bytecap_(*pcbBuf) char *pBuf, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _Inout_ size_t *pcbBuf) {<BR><BR>&nbsp; if (!pcbBuf || !pBuf || !*pcbBuff || *pBuf) return;<BR>&nbsp; if ((rand() % 100) &gt; 5) return; // fuzz about 5% of Buffers</P>
<P>&nbsp; size_t cLoop = 1 + (rand() % 4);</P>
<P>&nbsp; for (size_t j = 0; j &lt; cLoop; j++) {</P>
<P>&nbsp;&nbsp;&nbsp; size_t i=0,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iLow = rand() % *pcbBuf,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iHigh = 1+rand() % *pcbBuf,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iIter = 1+rand() % 8;<BR><BR>&nbsp;&nbsp;&nbsp; if (iLow &gt; iHigh)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {size_t t=iHigh; iHigh=iLow; iLow=t;}</P>
<P>&nbsp;&nbsp;&nbsp; char ch=0;<BR>&nbsp;&nbsp;&nbsp; switch(rand() % 9) {</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 0 : // reset upper bits<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=iLow; i &lt; iHigh; i++)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBuf[i] &amp;= 0x7F;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 1 : // set upper bits<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=iLow; i &lt; iHigh; i++)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBuf[i] |= 0x80;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 2 : // toggle all bits<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=iLow; i &lt; iHigh; i++)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBuf[i] ^= 0xFF;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 3 : // set to random chars<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=iLow; i &lt; iHigh; i++)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBuf[i] = (char)(rand() % 256);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 4 : // set NULL chars to (possibly) non-NULL<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=iLow; i &lt; iHigh; i++)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!pBuf[i])&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBuf[i] = (char)(rand() % 256);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 5 : // swap adjacent bytes<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=iLow; i &lt; __max(iHigh-1,iLow); i+= iIter)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {char t=pBuf[i]; pBuf[i] = pBuf[i+1]; pBuf[i+1]=t;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 6 : // set to random chars every n-bytes<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=iLow; i &lt; __max(iHigh-1,iLow); i+= iIter)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBuf[i] = (char)(rand()%256);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 7 : // set bytes to one random char<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ch=(char)(rand() % 256);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=iLow; i &lt; iHigh; i++)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBuf[i] = ch;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default: // truncate stream<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *pcbBuf = iHigh;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }<BR>}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </P></FONT>
<P>The sample C# and C++ fuzzing code is available as a ZIP file at the end of this post.</P>
<P>This code is an example of dumb-fuzzing, which is fuzzing with little or no regard for the data structure being manipulated. If you've never performed any kind of fuzz testing in the past, then you will probably find bugs with this simple fuzzing technique. Once you have weeded out the low-hanging bugs, you may need to turn your attention to smarter fuzzers. For example, in theory, this code would find few if any bugs in a PNG parser, because PNG files have a built in check-sum, so if you fuzz a PNG file, you'd have to recalculate the checksum to get decent code coverage.</P>
<P>When I showed this code during my presentation, I urged people to add it to their applications today if they currently don't do fuzz testing, and simply run their applications through their normal testing processes. Within three days of my presentation I received emails from people saying they had found bugs. I have no doubt others did too.</P>
<P>One of the comments I made during the session was,"If you can't spend the time on great fuzzing, fuzz anyway" and adding a "layer of hurt" is a reasonable start.</P>
<P>Please feel free to sound off if you have ideas to help improve the code and let us know what you think, either through email or comments to this post.</P><img src="http://blogs.msdn.com/aggbug.aspx?PostID=8794487" width="1" height="1">]]></content:encoded>
      <pubDate>Thu, 31 Jul 2008 15:13:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/layer">layer</category>
      <category domain="http://securityratty.com/tag/code layer">code layer</category>
      <category domain="http://securityratty.com/tag/code">code</category>
      <category domain="http://securityratty.com/tag/decent code coverage">decent code coverage</category>
      <category domain="http://securityratty.com/tag/fuzz">fuzz</category>
      <category domain="http://securityratty.com/tag/void fuzz">void fuzz</category>
      <category domain="http://securityratty.com/tag/ifdef fuzz">ifdef fuzz</category>
      <category domain="http://securityratty.com/tag/code examples">code examples</category>
      <category domain="http://securityratty.com/tag/perform fuzz">perform fuzz</category>
      <source url="http://blogs.msdn.com/sdl/archive/2008/07/31/improve-security-with-a-layer-of-hurt.aspx">Improve Security with "A Layer of Hurt"</source>
    </item>
  </channel>
</rss>
