<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>A Brief Introduction to the Standard Annotation Language (SAL)</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx</link><description>Introduction Even though a prior blog I wrote “ Code Scanning Tools Do Not make Software Secure ” may have left some thinking I don’t like static analysis tools, nothing could be farther from the truth. In fact, there is a code analysis technology designed</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Kernel Mustard  &amp;raquo; Blog Archive   &amp;raquo; What about SAL for the rest of us?</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#602803</link><pubDate>Sat, 20 May 2006 22:54:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:602803</guid><dc:creator>Kernel Mustard  » Blog Archive   » What about SAL for the rest of us?</dc:creator><description>PingBack from &lt;a rel="nofollow" target="_new" href="http://kernelmustard.com/2006/05/20/what-about-sal-for-the-rest-of-us/"&gt;http://kernelmustard.com/2006/05/20/what-about-sal-for-the-rest-of-us/&lt;/a&gt;</description></item><item><title>re: A Brief Introduction to the Standard Annotation Language (SAL)</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#602896</link><pubDate>Sun, 21 May 2006 03:14:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:602896</guid><dc:creator>Alexei</dc:creator><description>Instead of trying to make C safer, you should have advocated proper use of C++. &amp;nbsp;Your code snippet:&lt;br&gt;&lt;br&gt;void FillString(&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCHAR* buf, &amp;nbsp; &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;size_t cchBuf, &amp;nbsp; &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;char ch) { &amp;nbsp;&lt;br&gt;&lt;br&gt; &amp;nbsp;for (size_t i = 0; i &amp;lt; cchBuf; i++) &amp;nbsp; { &amp;nbsp; &amp;nbsp; &lt;br&gt; &amp;nbsp; &amp;nbsp;buf[i] = ch; &amp;nbsp; &lt;br&gt; &amp;nbsp;} &lt;br&gt;}&lt;br&gt;&lt;br&gt;TCHAR *b = (TCHAR*)malloc(200*sizeof(TCHAR));&lt;br&gt;FillString(b,210,'x');&lt;br&gt;&lt;br&gt;re-written in C++ is nothing but:&lt;br&gt;&lt;br&gt;std::string b(199, 'x');&lt;br&gt;&lt;br&gt;See? &amp;nbsp;I choose this simplicity over SAL ugliness any day.&lt;br&gt;&lt;br&gt;C is an inherently low level programming language. &amp;nbsp;You can't fix it with SAL annotations.&lt;br&gt;&lt;br&gt;The general idea is that if you want to make your code more secure, use higher level abstractions. &amp;nbsp;That's all there is to it. &amp;nbsp;There is a pattern, don't you see it? &amp;nbsp;The proof is that up to this day you haven't provided a single example of higher level abstractions having security problems. &amp;nbsp;The use of std::vector over C arrays beats that stupid integer overflow problem, the use of std::string over C strings beats an array of C security problems like the one in this post of yours. &amp;nbsp;I can go on and on. &amp;nbsp;More than that. &amp;nbsp;There are whole books made obsolete by use of higher level abstractions, like &amp;quot;Secure Coding in C and C++.&amp;quot; &amp;nbsp;Such books are all about fixing security bugs in C.</description></item><item><title>SAL - pipped at the post by Michael Howard.</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#602905</link><pubDate>Sun, 21 May 2006 03:31:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:602905</guid><dc:creator>Tales from the Crypto</dc:creator><description>I've been spending some time this week in the evenings thinking on how I should introduce SAL - the Standard...</description></item><item><title>re: A Brief Introduction to the Standard Annotation Language (SAL)</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#603338</link><pubDate>Sun, 21 May 2006 21:05:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:603338</guid><dc:creator>michael_HOWARD</dc:creator><description>To Alexei&lt;br&gt;&lt;br&gt;Agreed - I like using STL where it's appropriate, but imagine FillString is used in a 100,000 places, and you don't want to bloat the code with std::string (and let's be frank, all of STL's ugliness too :) then it makes sense to annotate the call to FillString. </description></item><item><title>re: A Brief Introduction to the Standard Annotation Language (SAL)</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#603476</link><pubDate>Mon, 22 May 2006 04:45:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:603476</guid><dc:creator>Alun Jones</dc:creator><description>You're not even annotating the call to FillString - you annotate only the declaration and definition.</description></item><item><title>Okay, scratch what I said about SAL</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#603481</link><pubDate>Mon, 22 May 2006 04:57:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:603481</guid><dc:creator>Tales from the Crypto</dc:creator><description>Despite what Michael Howard says about how wonderful SAL is, and my own post from earlier today, I really...</description></item><item><title>re: A Brief Introduction to the Standard Annotation Language (SAL)</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#604861</link><pubDate>Tue, 23 May 2006 18:59:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:604861</guid><dc:creator>Jayaram Mulupuru</dc:creator><description>Can you elaborate on the differences in the nature of buffer overruns caught by SAL (as you illustrated in the examples above) and the /GS flag?&lt;br&gt;&lt;br&gt;Thanks.</description></item><item><title>PREfast, SAL and the Windows SDK</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#604958</link><pubDate>Tue, 23 May 2006 20:26:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:604958</guid><dc:creator>Michael Howard's Web Log</dc:creator><description>In a prior article, I wrote about the benefits of the Standard Annotation Language (SAL) available in...</description></item><item><title>re: A Brief Introduction to the Standard Annotation Language (SAL)</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#609733</link><pubDate>Mon, 29 May 2006 07:04:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:609733</guid><dc:creator>Anon Coward</dc:creator><description>&amp;gt; Can you elaborate on the differences in the nature of buffer overruns caught by SAL (as you illustrated in the examples above) and the /GS flag? &lt;br&gt;&lt;br&gt;/GS is a runtime check trying to mitigate stack buffer overflows leading to running expolit code.&lt;br&gt;&lt;br&gt;SAL enables static analysis to better find overflow (stack or heap) at compile time.&lt;br&gt;&lt;br&gt;Draw two circles that have some overlap... and then use both.</description></item><item><title>re: A Brief Introduction to the Standard Annotation Language (SAL)</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#610123</link><pubDate>Mon, 29 May 2006 18:05:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:610123</guid><dc:creator>Robert C. Seacord</dc:creator><description>Michael,&lt;br&gt;&lt;br&gt;This particular example strikes me as something that could be solved by better compiler technology rather than moving the burden out to the already overburdened application developer.&lt;br&gt;&lt;br&gt;In your example:&lt;br&gt;&lt;br&gt;void FillString(&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;TCHAR* buf, &amp;nbsp; &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;size_t cchBuf, &amp;nbsp; &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;char ch) { &lt;br&gt;&lt;br&gt; &amp;nbsp;for (size_t i = 0; i &amp;lt; cchBuf; i++) &amp;nbsp; { &amp;nbsp; &amp;nbsp; &lt;br&gt; &amp;nbsp; &amp;nbsp;buf[i] = ch; &amp;nbsp; &lt;br&gt; &amp;nbsp;}&lt;br&gt;} &lt;br&gt;Analysis of the foor loop indicates that cchBuf is the &amp;quot;TooFar&amp;quot; for buf (that is, values of cchBuf from 0 to cchBuf-1 must be suitable as an index for buf. &amp;nbsp;The compiler could easily associated this requirement with the function definition and flag any invocations of the function where this requirement is not met. &amp;nbsp;&lt;br&gt;&lt;br&gt;For more please read my article at: &lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://www.ddj.com/dept/cpp/184402075"&gt;http://www.ddj.com/dept/cpp/184402075&lt;/a&gt;</description></item><item><title>re: A Brief Introduction to the Standard Annotation Language (SAL)</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#610146</link><pubDate>Mon, 29 May 2006 19:02:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:610146</guid><dc:creator>michael_HOWARD</dc:creator><description>Robert - i'll pass this to the compiler guys - are there compilers doing this today?</description></item><item><title>An Intro to the Standard Annotation Language (SAL)</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#612124</link><pubDate>Wed, 31 May 2006 21:49:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:612124</guid><dc:creator>Rob Caron</dc:creator><description>Earlier this month, security guru Michael Howard authored a brief introduction to the Standard Annotation...</description></item><item><title>MSDN Flash Ireland - International Resources - 7 June 06</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#619145</link><pubDate>Tue, 06 Jun 2006 19:07:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:619145</guid><dc:creator>Robert Burke's Weblog</dc:creator><description>&amp;amp;amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Web Resources&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;amp;amp;nbsp;&lt;br&gt;&lt;br&gt;[Default] Register for the Windows Vista and Microsoft...</description></item><item><title>Windows Vista Security – A Bigger Picture</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#628209</link><pubDate>Mon, 12 Jun 2006 17:44:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:628209</guid><dc:creator>Michael Howard's Web Log</dc:creator><description>A couple of people have asked about the relationship between /GS, SAL and ASLR in Windows Vista. Here’s...</description></item><item><title>Cl??rigo  &amp;raquo; Blog Archive   &amp;raquo; (In)Seguridad en Vista</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#663495</link><pubDate>Wed, 12 Jul 2006 19:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:663495</guid><dc:creator>Cl??rigo  » Blog Archive   » (In)Seguridad en Vista</dc:creator><description>PingBack from &lt;a rel="nofollow" target="_new" href="http://clerigo.alucardx.net/index.php/2006/07/12/inseguridad-en-vista/"&gt;http://clerigo.alucardx.net/index.php/2006/07/12/inseguridad-en-vista/&lt;/a&gt;</description></item><item><title>How I will judge Windows Vista Security</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#1841827</link><pubDate>Fri, 09 Mar 2007 07:59:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1841827</guid><dc:creator>Michael Howard's Web Log</dc:creator><description>&lt;p&gt;Before I get started, I want to point out this is my opinion, not necessarily anyone else’s viewpoint.&lt;/p&gt;
</description></item><item><title>Lessons learned from the Animated Cursor Security Bug</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#2291549</link><pubDate>Fri, 27 Apr 2007 01:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2291549</guid><dc:creator>The Security Development Lifecycle</dc:creator><description>&lt;p&gt;Michael Howard here. A core tenet of the SDL is to take and incorporate lessons learned when we issue&lt;/p&gt;
</description></item><item><title>The Most Complex SAL annotation</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#3060585</link><pubDate>Sun, 03 Jun 2007 17:00:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3060585</guid><dc:creator>Michael Howard's Web Log</dc:creator><description>&lt;p&gt;While working on &amp;quot; Writing Secure Code for Windows Vista &amp;quot; I spent a good deal of time spelunking the&lt;/p&gt;
</description></item><item><title>Introduction to the Standard Annotation Language (SAL) for VC  </title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#5638781</link><pubDate>Wed, 24 Oct 2007 05:09:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5638781</guid><dc:creator>DotNetKicks.com</dc:creator><description>&lt;p&gt;You've been kicked (a good thing) - Trackback from DotNetKicks.com&lt;/p&gt;
</description></item><item><title>How to Get a Job in Information Security | Perimeter Grid</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#7363419</link><pubDate>Fri, 01 Feb 2008 04:27:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7363419</guid><dc:creator>How to Get a Job in Information Security | Perimeter Grid</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://perimetergrid.com/wp/2008/01/31/how-to-get-a-job-in-information-security/"&gt;http://perimetergrid.com/wp/2008/01/31/how-to-get-a-job-in-information-security/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>OS-Based Mitigations Against Common Attacks | Perimeter Grid</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#7450750</link><pubDate>Tue, 05 Feb 2008 02:41:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7450750</guid><dc:creator>OS-Based Mitigations Against Common Attacks | Perimeter Grid</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://perimetergrid.com/wp/2008/02/04/os-based-mitigations-against-common-attacks/"&gt;http://perimetergrid.com/wp/2008/02/04/os-based-mitigations-against-common-attacks/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Prefast And SAL Annotations</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#7479268</link><pubDate>Wed, 06 Feb 2008 03:36:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7479268</guid><dc:creator>Visual C++ Team Blog</dc:creator><description>&lt;p&gt;One thing that continues to amaze me are the powerful tools available to developers and QA nowadays.&lt;/p&gt;
</description></item><item><title>Prefast And SAL Annotations</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#7480445</link><pubDate>Wed, 06 Feb 2008 04:39:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7480445</guid><dc:creator>Noticias externas</dc:creator><description>&lt;p&gt;One thing that continues to amaze me are the powerful tools available to developers and QA nowadays.&lt;/p&gt;
</description></item><item><title>MSDN Blog Postings  &amp;raquo; Prefast And SAL Annotations</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#7480485</link><pubDate>Wed, 06 Feb 2008 04:41:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7480485</guid><dc:creator>MSDN Blog Postings  » Prefast And SAL Annotations</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://msdnrss.thecoderblogs.com/2008/02/05/prefast-and-sal-annotations/"&gt;http://msdnrss.thecoderblogs.com/2008/02/05/prefast-and-sal-annotations/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Resources to help you annotate code for static analysis</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#8399610</link><pubDate>Thu, 17 Apr 2008 00:39:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8399610</guid><dc:creator>Windows Driver Kit (WDK) Documentation Blog</dc:creator><description>&lt;p&gt;What are annotations? } Essentially comments in the code that can be understood by static analysis tools&lt;/p&gt;
</description></item><item><title>  How to Improve the Web | Mike Andrews</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#8525344</link><pubDate>Wed, 21 May 2008 02:46:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8525344</guid><dc:creator>  How to Improve the Web | Mike Andrews</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://www.mikeandrews.com/2008/05/20/how-to-improve-the-web/"&gt;http://www.mikeandrews.com/2008/05/20/how-to-improve-the-web/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Secure Coding Secrets?</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#9120310</link><pubDate>Wed, 19 Nov 2008 00:38:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9120310</guid><dc:creator>The Security Development Lifecycle</dc:creator><description>&lt;p&gt;Hi, Michael here. A recent article titled &amp;quot;NSA posts secrets to writing secure code&amp;quot; caught my eye in&lt;/p&gt;
</description></item><item><title>A szoftver minőségbiztosítási eszközök valós lehetőségei és korlátai</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#9394620</link><pubDate>Wed, 04 Feb 2009 08:07:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9394620</guid><dc:creator>Termékinformációk fejlesztőknek</dc:creator><description>&lt;p&gt;[Nacsa S&amp;#225;ndor, 2009. janu&amp;#225;r 13. – febru&amp;#225;r 3.]&amp;amp;#160; A minős&amp;#233;gbiztos&amp;#237;t&amp;#225;s k&amp;#233;rd&amp;#233;sk&amp;#246;re szinte alig ismert&lt;/p&gt;
</description></item><item><title>Please Join me in welcoming memcpy() to the SDL Rogues Gallery</title><link>http://blogs.msdn.com/michael_howard/archive/2006/05/19/a-brief-introduction-to-the-standard-annotation-language-sal.aspx#9617158</link><pubDate>Fri, 15 May 2009 00:44:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9617158</guid><dc:creator>The Security Development Lifecycle</dc:creator><description>&lt;p&gt;Over the last few years I have written a number of articles, papers and books describing some of the&lt;/p&gt;
</description></item></channel></rss>