<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>&#62;kloctalk&#187; Software Security</title>
	<atom:link href="http://www.klocwork.com/blog/category/security/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.klocwork.com/blog</link>
	<description>&#62;kloctalk is a blog and a community for software development professionals who create and maintain mission-critical software and the challenges they face on a daily basis.</description>
	<lastBuildDate>Wed, 08 Feb 2012 13:45:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Security Issues with Apple iOS?</title>
		<link>http://www.klocwork.com/blog/2011/11/security-issues-with-apple-ios/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=security-issues-with-apple-ios</link>
		<comments>http://www.klocwork.com/blog/2011/11/security-issues-with-apple-ios/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 18:01:04 +0000</pubDate>
		<dc:creator>Todd Landry</dc:creator>
				<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[software security]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1419</guid>
		<description><![CDATA[As a pretty avid Apple user (2 iPhones, 1 iPad2, iMac, iPod Touch, MacBook Pro, etc.), and the fact that I work in the business of software quality and security, I must admit that this article caught my attention. The article outlines how a well-known security researcher, who focuses on Apple, has found a software [...]]]></description>
			<content:encoded><![CDATA[<p>As a pretty avid Apple user (2 iPhones, 1 iPad2, iMac, iPod Touch, MacBook Pro, etc.), and the fact that I work in the business of software quality and security, I must admit that this <a href="http://ca.reuters.com/article/technologyNews/idCATRE7A708Q20111108">article</a> caught my attention. The article outlines how a well-known security researcher, who focuses on Apple, has found a software flaw in the iPhone and iPad, which could allow hackers to build malicious apps.What makes this even more scary is that the Apple Store may not catch these malicious apps.<a href="http://www.klocwork.com/blog/wp-content/uploads/2011/11/download.jpeg"><img class="alignright size-full wp-image-1422" title="download" src="http://www.klocwork.com/blog/wp-content/uploads/2011/11/download.jpeg" alt="" width="254" height="198" /></a></p>
<p>To add another twist to this story, the researcher in question has been ejected from participating in Apple&#8217;s developer programs. Read about that <a href="http://news.cnet.com/8301-27076_3-57320190-248/apple-boots-security-guru-who-exposed-iphone-exploit/">here</a>.</p>
<p>Are we now getting to the point where hackers are going to start trying more aggressively to exploit Apple products? In a <a href="http://news.cnet.com/8301-27080_3-10444561-245.html">survey</a> done in 2010, over 50% of respondents thought Windows was either &#8220;very&#8221; or &#8220;extremely&#8221; vulnerable compared to only 20% for Apple. I wonder if that has changed? More importantly, do I need to start worrying about my daughter downloading the Archie comic app from the App Store?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2011/11/security-issues-with-apple-ios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft banned function list</title>
		<link>http://www.klocwork.com/blog/2011/09/microsoft-banned-function-list/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=microsoft-banned-function-list</link>
		<comments>http://www.klocwork.com/blog/2011/09/microsoft-banned-function-list/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 19:58:37 +0000</pubDate>
		<dc:creator>Alen Zukich</dc:creator>
				<category><![CDATA[Software Security]]></category>
		<category><![CDATA[banned functions]]></category>
		<category><![CDATA[buffer overflow]]></category>
		<category><![CDATA[SDL]]></category>
		<category><![CDATA[source code analysis]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1389</guid>
		<description><![CDATA[We have blogged before about software security guidelines, but there is one we haven&#8217;t discussed.  Several years ago Microsoft published the &#8220;Security Development Lifecycle (SDL) Banned Function Calls&#8221; list.  These banned functions can be a good way to remove a significant number of potential code vulnerabilities from C and C++ code.  They provide recommendations on [...]]]></description>
			<content:encoded><![CDATA[<p>We have blogged before about <a href="http://www.klocwork.com/blog/2010/06/the-alphabet-soup-of-software-security-guidelines/">software security guidelines</a>, but there is one we haven&#8217;t discussed.  Several years ago Microsoft published the &#8220;<a href="http://msdn.microsoft.com/en-us/library/bb288454.aspx" target="_blank">Security Development Lifecycle (SDL) Banned Function Calls</a>&#8221; list.  These banned functions can be a good way to remove a significant number of potential code vulnerabilities from C and C++ code.  They provide recommendations on better or safer functions to use with the caveat that even these &#8220;safer&#8221; function should be used with care.</p>
<p><a href="http://www.klocwork.com/blog/wp-content/uploads/2011/09/banned.jpg"><img class="alignleft size-full wp-image-1391" title="banned" src="http://www.klocwork.com/blog/wp-content/uploads/2011/09/banned.jpg" alt="" width="204" height="204" /></a>You can use the <a href="http://www.microsoft.com/download/en/details.aspx?id=24817">banned.h</a> file to identify and obtain deprecation warnings or, even better, use this as part of your source code analysis.  Leveraging these warning as part of your source code analysis solution means you have better ways to filter and manage the solution as opposed to a dump of potentially thousands of warnings.  Add that into your code review tool and you have some good discussion points for your peer code reviews.</p>
<p>Like any security guideline, the question becomes how useful are these?  There is no question that these banned functions are <a href="http://sigttou.com/ban-programmers-not-functions" target="_blank">debatable</a>.  The complaint that I hear the most is that &#8220;n&#8221; functions can be used safely so they should not be part of the list.  But you can still get yourself in a whole heap of trouble with these functions as well.  Take this example from Micheal Howard&#8217;s blog:  <a href="http://blogs.msdn.com/b/michael_howard/archive/2004/10/29/249713.aspx" target="_blank">Buffer Overflow in Apache 1.3.xx fixed on Bugtraq &#8211; the evils of strncpy and strncat!</a>.</p>
<p>I believe there is merit in identifying these functions so you can ask yourself if you&#8217;re using them securely.  For more information and training on the Microsoft SDL you can look at the course &#8220;<a href="http://developer.klocwork.com/klocwork-university/security-innovation/microsoft-sdl" target="_blank">Intro to the Microsoft Security Development Lifecycle</a>&#8221; on our web page.</p>
<p>Is anyone out there using the Microsoft banned function list religiously?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2011/09/microsoft-banned-function-list/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Secure Coding eLearning Resource</title>
		<link>http://www.klocwork.com/blog/2011/09/secure-coding-elearning-resource/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=secure-coding-elearning-resource</link>
		<comments>http://www.klocwork.com/blog/2011/09/secure-coding-elearning-resource/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 14:49:13 +0000</pubDate>
		<dc:creator>Brendan Harrison</dc:creator>
				<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[elearning]]></category>
		<category><![CDATA[Microsoft Security Development Lifecycle]]></category>
		<category><![CDATA[OWASP]]></category>
		<category><![CDATA[software security]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1382</guid>
		<description><![CDATA[One of the common challenges we hear from customers regarding their software security assurance programs is developer education. Sure, there are many great tools out there that can help with security, but when it comes down to it, if you&#8217;re going to truly build a culture of secure software (and not just audit your system [...]]]></description>
			<content:encoded><![CDATA[<p>One of the common challenges we hear from customers regarding their <a title="Software Security Assurance" href="http://www.klocwork.com/solutions/software-security-assurance/" target="_blank">software security assurance</a> programs is developer education. Sure, there are many great tools out there that can help with security, but when it comes down to it, if you&#8217;re going to truly build a culture of secure software (and not just audit your system now and then), your development team needs to be well versed on key security concepts, defensive coding principles, common attack vectors, not to mention the ins and outs of specific coding vulnerabilities like <a title="Buffer Overflow" href="http://www.klocwork.com/products/documentation/current/Checkers:ABR" target="_blank">buffer overflows</a>.</p>
<p><a href="http://www.klocwork.com/blog/wp-content/uploads/2011/09/secure-coding-ccxx1.png"><img class="alignright size-full wp-image-1384" title="secure-coding-ccxx" src="http://www.klocwork.com/blog/wp-content/uploads/2011/09/secure-coding-ccxx1.png" alt="Secure Coding for C/C++ Course" width="697" height="560" /></a></p>
<p>Well, we agree. That&#8217;s why we&#8217;ve partnered with our friends at <a title="Security Innovation" href="http://www.securityinnovation.com/" target="_blank">Security Innovation</a> to make some of their developer eLearning courses available for free on the new, revamped <a title="Klocwork University" href="http://developer.klocwork.com/klocwork-university" target="_blank">Klocwork University</a>. I encourage you to check out the <a title="Secure Coding for C/C++" href="http://developer.klocwork.com/klocwork-university/security-innovation/secure-coding" target="_blank">Secure Coding for C/C++</a> course &#8211; it&#8217;s approx 60 minutes in length, features interactive material, and is a great introductory course into many of the key concepts required to build secure software. We also have a course on Microsoft&#8217;s Secure SDL and the OWASP Top 10. Check it out!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2011/09/secure-coding-elearning-resource/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Electronic imports contain security threats</title>
		<link>http://www.klocwork.com/blog/2011/07/electronic-imports-contain-security-threats/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=electronic-imports-contain-security-threats</link>
		<comments>http://www.klocwork.com/blog/2011/07/electronic-imports-contain-security-threats/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 17:29:26 +0000</pubDate>
		<dc:creator>Alen Zukich</dc:creator>
				<category><![CDATA[Software Security]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[software security]]></category>
		<category><![CDATA[Static Analysis]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1354</guid>
		<description><![CDATA[I read an interesting post on electronic imports that could contain security threats.  I can only speak from the software perspective, but I can say that most customers I’ve dealt with usually integrate some sort of software security audit process with any 3rd-party integrator and from my experience that means adopting static analysis.  How many [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.klocwork.com/blog/wp-content/uploads/2011/07/computer-security.jpg"><img class="alignleft size-full wp-image-1356" title="computer-security" src="http://www.klocwork.com/blog/wp-content/uploads/2011/07/computer-security.jpg" alt="" width="196" height="258" /></a>I read an interesting <a href="http://www.reuters.com/article/2011/07/11/cybersecurity-electronics-idUSN1E76A0SF20110711" target="_blank">post</a> on electronic imports that could contain security threats.  I can only speak from the software perspective, but I can say that most customers I’ve dealt with usually integrate some sort of software security audit process with any 3<sup>rd</sup>-party integrator and from my experience that means adopting static analysis.  How many organizations are there that haven’t jumped on board with static analysis?  Probably more than I can count.</p>
<p>It would be very interesting to hear of some of the Armed Services and Intelligence cyber threats that the government has not publically disclosed.  That might be an eye opener.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2011/07/electronic-imports-contain-security-threats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Evolution of Static Code Analysis &#8211; Part 3: The Present Day</title>
		<link>http://www.klocwork.com/blog/2011/06/the-evolution-of-static-code-analysis-part-3-the-present-day/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-evolution-of-static-code-analysis-part-3-the-present-day</link>
		<comments>http://www.klocwork.com/blog/2011/06/the-evolution-of-static-code-analysis-part-3-the-present-day/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 20:10:37 +0000</pubDate>
		<dc:creator>Todd Landry</dc:creator>
				<category><![CDATA[General Coding]]></category>
		<category><![CDATA[General Industry]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[code analysis]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[source code analysis]]></category>
		<category><![CDATA[Static Analysis]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1322</guid>
		<description><![CDATA[My first 2 posts looked at 2 different eras of Static Code Analysis, the Early Years and the Early 21st Century. The SCA solutions of these times were revolutionary, and helped software development teams a great deal. But they had their warts. In the final post in this series, I’m going to introduce you to [...]]]></description>
			<content:encoded><![CDATA[<p>My first 2 posts looked at 2 different eras of Static Code Analysis, the <a href="http://www.klocwork.com/blog/2011/05/the-evolution-of-static-code-analysis-part-1-the-early-years/">Early Years</a> and the <a href="http://www.klocwork.com/blog/2011/05/the-evolution-of-source-code-analysis-part-2-the-early-21st-century/">Early 21</a><sup><a href="http://www.klocwork.com/blog/2011/05/the-evolution-of-source-code-analysis-part-2-the-early-21st-century/">st</a></sup><a href="http://www.klocwork.com/blog/2011/05/the-evolution-of-source-code-analysis-part-2-the-early-21st-century/"> Century</a>. The SCA solutions of these times were revolutionary, and helped software development teams a great deal. But they had their warts.</p>
<p>In the final post in this series, I’m going to introduce you to the present day Static Code Analysis technology and how it is impacting developers.</p>
<p><strong>The Present Day</strong></p>
<p>I’m a huge fan of Reece’s Peanut Butter Cups. I love them. I keep active so I don&#8217;t feel guilty eating them. In a strange, convoluted way, the 3<sup>rd</sup> generation of static code analysis tools are like this delicious combination of chocolate and peanut butter. Let me explain.</p>
<p><a href="http://www.klocwork.com/blog/wp-content/uploads/2011/05/reeces.jpeg"><img class="size-full wp-image-1323 alignright" title="reeces" src="http://www.klocwork.com/blog/wp-content/uploads/2011/05/reeces.jpeg" alt="" width="259" height="194" /></a></p>
<div class="mceTemp">I’m sure you remember from my previous posts how the 1<sup>st</sup> generation tools (i.e. Lint) gave questionable results but was still considered by developers as a tool exclusively for them, and the 2<sup>nd</sup> generation tools gave really good results but moved away from being a developer tool.</div>
<div class="mceTemp">The 3<sup>rd</sup> generation tools recognized that the developer must be an integral part of the process of identifying, fixing and preventing bugs from reaching the code stream and so, they took the proven results from the 2<sup>nd</sup> gen tools and delivered them right to the developer’s desktop.</div>
<p>Eureka! Now developers are able to perform an analysis locally, using their development environment of choice, while still getting the high accuracy and consistency that was previously only possible by checking in their code and waiting for the integration build to take place.</p>
<p>Think about the ramifications of this:</p>
<ul>
<li>cleaner code is being checked in </li>
<li>the ‘rinse-repeat’ vicious cycle of rework is drastically reduced</li>
<li>quality teams are now able to focus on testing the product’s functionality rather than spending cycles uncovering something that could easily and quickly be found by automated tools. </li>
</ul>
<p>Mmmm-mmmm good. Sounds like a win-win-win to me!</p>
<p>I think the best thing about these 3rd generation tools is simply the fact that developers are now able to resume ownership of the quality and security of the code they are producing.</p>
<p>Well, I hope you enjoyed this walk down memory lane. I sure did. Now I&#8217;m looking for spare change because I see a trip to the vending machine in my immediate future.</p>
<p>If you want to know more about the 3rd Generation tools, feel free to drop me a line.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2011/06/the-evolution-of-static-code-analysis-part-3-the-present-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>To report, or not to report&#8230;</title>
		<link>http://www.klocwork.com/blog/2011/06/to-report-or-not-to-report/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=to-report-or-not-to-report</link>
		<comments>http://www.klocwork.com/blog/2011/06/to-report-or-not-to-report/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 20:10:20 +0000</pubDate>
		<dc:creator>Gwyn Fisher</dc:creator>
				<category><![CDATA[Nasty Bugs]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Static Analysis]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1333</guid>
		<description><![CDATA[Creating a source code analysis (SCA) engine is a balancing act, a decision process of where you believe the most value can be found along the spectrum that is the signal-to-noise ratio of the detection process. At one end lies the realm of massive noise and hopefully complete coverage, whilst at the other is the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" style="margin-left: 5px; margin-right: 5px;" src="http://images.all-free-download.com/images/graphiclarge/balance_scale_clip_art_10655.jpg" alt="Balance" width="425" height="274" />Creating a source code analysis (SCA) engine is a balancing act, a decision process of where you believe the most value can be found along the spectrum that is the signal-to-noise ratio of the detection process. At one end lies the realm of massive noise and hopefully complete coverage, whilst at the other is the quiet calm of the theoretically useful but ultimately useless realm of no noise, but ultimately no signal either.</p>
<p>That may sound counter-intuitive. Shouldn’t a zero noise point on the spectrum be accompanied by an infinitely strong signal? Perhaps in the world of DSP this is true, but in the world of SCA reducing noise comes right along with a reduction in detection capability &#8211; it’s unfortunately almost a straight-line correlation.</p>
<p>So if we assume that we’re trying to balance a couple of dials on our theoretical tuner, we might start by reducing or dampening noise – it’s the most obvious place to start, after all. Nobody likes to listen to their favorite FM station through the curtain of hissing and popping that accompanies the act of driving through a major city.  Likewise no developer likes sifting through a long list of bogus detection errors in order to find the hidden gems. But to drag out the analogy, assume that the only way of reducing hiss on your FM signal is to turn down the volume… now you’ve got less hiss, but also less Bruce Springsteen goodness to accompany it.</p>
<p>Balance is what we need here, obviously. Enough Boss to make us ignore the hiss, or to put it in a more SCA-like context, enough interesting bugs to make us ignore the incorrect, or the irrelevant (correct detections on the part of the engine that the developer just doesn’t care about, e.g. low memory conditions in a memory-insensitive environment).</p>
<p>Consider the following simple example that clearly lies &#8220;on the line&#8221;:</p>
<pre><span style="font-size: small;"><span style="font-family: courier new,courier;">    void foo(char* s, int a)</span><span style="font-family: courier new,courier;">
    {
</span><span style="font-family: courier new,courier;">        char* s1 = s;
</span><span style="font-family: courier new,courier;">        if( a &gt; 0 )
</span><span style="font-family: courier new,courier;">            *s1 = 'a';   // potentially use an uninitialized ‘s1’</span><span style="font-family: courier new,courier;">
    }
</span><span style="font-family: courier new,courier;">
    void bar(int m)
    {
        char *s;
        foo(s, m);       // s is not initialized prior to calling ‘foo’
    }</span></span></pre>
<p>So&#8230; to report, or not to report?</p>
<p>Lacking any other information, it is obvious that function ‘foo’ interacts under certain situations (when parameter ‘a’ is positive) with parameter ‘s’ (aliased as local variable ‘s1’). As we have no knowledge about the provenance of parameter ‘s’ when analyzing ‘foo’, however, there’s nothing here to cause a report and so we squirrel away the knowledge of what ‘foo’ does for later use.</p>
<p>When analyzing ‘bar’ we know what ‘foo’ does, and we know we’ve got an uninitialized local pointer, ‘s’. But again we’re lacking enough knowledge to know the valid values, or ranges, that parameter ‘m’ may take. There are definitely a set of circumstances here in which we know a problem will occur (if parameter ‘m’ is positive), and a set of circumstances in which we know a problem will not occur (if parameter ‘m’ is zero or negative) – this much is encoded in the functional behavior of ‘foo’. But is it a defect, or should we filter out the report in favor of providing only those situations in which we can be “sure” the bug not only exists, but can be proven to be exercised?</p>
<p>There’s the art of balance in a nut-shell, and it revolves around the phrase “lacking any other information.” In the ideal world, lacking any restrictions in terms of time, memory or computing power (or indeed actual from-the-wall power, as we have to worry about now), we might defer all such decisions until we categorically know that a particular data value is passed down the call graph far enough to get to ‘foo’. But in the real world of multi-million LOC projects, that approach simply can’t scale.</p>
<p>And so, calling on balance as our friend, we can bias a localized decision to report or not, given that we know to at least one order of approximation that bad things could happen here. Different engines pronounce that bias differently, leading to one of the greatest divides between prevalent solutions.</p>
<p>Now ask yourself, as the developer, is it a worthy report if you know that 10 levels up the call graph there’s a check on what eventually becomes parameter ‘m’ to ensure that it’s never positive? Perhaps you’d automatically classify this as a false positive and, annoyed at the tool, move onto the next report. Or perhaps, seeing the size of the gap in the call graph, you might just choose to code defensively, initializing ‘s’ to NULL in ‘bar’ and adding guard code to &#8216;foo&#8217; because, hey, you never know.</p>
<p>And as we’ve all seen so many times over the years, “you never know” might just as well be written “and so it came to pass&#8230;”</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2011/06/to-report-or-not-to-report/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Toughen up your code with software security best practices</title>
		<link>http://www.klocwork.com/blog/2011/04/toughen-up-your-code-with-software-security-best-practices/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=toughen-up-your-code-with-software-security-best-practices</link>
		<comments>http://www.klocwork.com/blog/2011/04/toughen-up-your-code-with-software-security-best-practices/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 14:06:47 +0000</pubDate>
		<dc:creator>Patti Murphy</dc:creator>
				<category><![CDATA[Coding Standards]]></category>
		<category><![CDATA[General Coding]]></category>
		<category><![CDATA[General Industry]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Microsoft Security Development Lifecycle]]></category>
		<category><![CDATA[OWASP]]></category>
		<category><![CDATA[SDL]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1302</guid>
		<description><![CDATA[Crying into your wadded Kleenex about how your vulnerabilities were exploited may make for compelling TV, but when it comes to software security, they’ll cost you a lot more than your personal dignity. Or maybe they&#8217;ll cost you millions of dollars in lost business and your personal dignity. Why not toughen up your code by [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.klocwork.com/blog/wp-content/uploads/2011/04/cope-crying-baby-800x800.jpg"><img class="alignright size-full wp-image-1309" title="cope-crying-baby-800x800" src="http://www.klocwork.com/blog/wp-content/uploads/2011/04/cope-crying-baby-800x800.jpg" alt="" width="360" height="239" /></a>Crying into your wadded Kleenex about how your vulnerabilities were exploited may make for compelling TV, but when it comes to software security, they’ll cost you a lot more than your personal dignity. Or maybe they&#8217;ll cost you millions of dollars in lost business <em>and </em>your personal dignity.</p>
<p>Why not toughen up your code by implementing software security best practices that prevent or mitigate the risks?</p>
<p>That’s why you should head on over to the<a href="http://developer.klocwork.com/browse/free-courses-security-innovation" target="_blank"> Klocwork Developer Network</a> and check out the free eLearning courses provided by <a href="https://teamprofessor.securityinnovation.com/ed/Portal/default.asp?location=&amp;selectedIndex=1-" target="_blank">Security Innovation</a>, an industry leader in software security and cryptography. To view learning resources, just log in or register.</p>
<p>Here&#8217;s a brief description of each course:</p>
<ul>
<li><a href="http://developer.klocwork.com/members/security-innovations/owasp-top-ten-threats-and-mitigations" target="_blank"><strong> </strong></a><strong><a href="http://developer.klocwork.com/members/security-innovations/owasp-top-ten-threats-and-mitigations">OWASP Top 10 – Threats and Mitigations</a> </strong></li>
</ul>
<p style="padding-left: 30px;">Learn strategies and best practices for understanding, identifying and mitigating the risk of vulnerabilities and attacks within the OWASP Top 10.</p>
<ul>
<li><a href="http://developer.klocwork.com/members/security-innovations/intro-microsoft-security-development-lifecycle-sdl" target="_blank"><strong>Intro to the Microsoft Security Development Lifecycle (SDL) </strong></a></li>
</ul>
<p style="padding-left: 30px;">The Security Development Lifecycle (SDL), a key security engineering process that was spawned from Microsoft’s Trustworthy Computing Initiative. Learn the necessary steps to meet SDL requirements, and identify the appropriate tools required by the SDL.</p>
<ul>
<li><a href="http://developer.klocwork.com/members/security-innovations/cross-site-scripting-aspnet" target="_blank"><strong>Intro to XSS – Asp.Net examples </strong></a></li>
</ul>
<p style="padding-left: 30px;">Learn to understand the mechanisms behind cross-site scripting vulnerabilities, describe cross-site scripting vulnerabilities and their consequences, and apply secure coding best practices to prevent cross-site scripting vulnerabilities.</p>
<ul>
<li><a href="http://developer.klocwork.com/members/security-innovations/cross-site-scripting-jsp" target="_blank"><strong>Intro to XSS – Java </strong></a></li>
</ul>
<p style="padding-left: 30px;">Learn to understand the mechanisms behind cross-site scripting vulnerabilities, describe cross-site scripting vulnerabilities and their consequences, and apply secure coding best practices to prevent cross-site scripting vulnerabilities.</p>
<p style="padding-left: 30px;">Have fun, code safely and put that Kleenex away (unless it&#8217;s allergy season).</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>EN-CA</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin-top:0cm; 	mso-para-margin-right:0cm; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} --> <!--[endif]--></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p class="MsoNormal">Crying into your wadded Kleenex about how your vulnerabilities were exploited may make for compelling TV, but when it comes to software security, they’ll cost you a lot more than your personal dignity.</p>
<p class="MsoNormal">That’s why you should head on over to our Developer Network and check out free eLearning security courses provided by Security Innovations, an industry leader in software security and cryptography.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">You can wail and gnash your teeth over your exploited vulnerabilitiesSoftware security isn’t just finding your soft spots that attackers can exploit, it’s preventing them in the first place.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">OWASP Top 10 – Threats and Mitigations</p>
<p class="MsoNormal">There are hundreds of risks to web applications.<span> </span>Each year, the Open Web Application Security Project (OWASP) publishes its Top Ten list, representing its opinion of the most critical web application security flaws. Mitigating these flaws will help an organization greatly reduce the risk of a web application being compromised.<span> </span>Regulatory bodies, including PCI-DSS and the Federal Trade Commission, recommend addressing the OWASP Top 10 as part of an organization’s best practices.<span> </span>This course will provide personnel with strategies and best practices for understanding, identifying and mitigating the risk of vulnerabilities and attacks within the OWASP Top 10. Prerequisite: none.</p>
<p class="MsoNormal">Intro to the Microsoft Security Development Lifecycle (SDL)</p>
<p class="MsoNormal">This course introduces the Security Development Lifecycle (SDL), a key security engineering process that was spawned from Microsoft’s Trustworthy Computing Initiative.<span> </span>Students will learn how to design and implement products that meet an organization’s security needs.<span> </span>Upon completion of this course, the participant will be able to identify the benefits of the Security Development Lifecycle, recognize the importance of the Final Security Review, follow the necessary steps to meet SDL requirements, and identify the appropriate tools required by the SDL.<span> </span>Prerequisite: basic knowledge of the software development lifecycle.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Intro to XSS – Asp.Net examples</p>
<p class="MsoNormal">In this course, students will learn to understand the mechanisms behind cross-site scripting vulnerabilities, describe cross-site scripting vulnerabilities and their consequences, and apply secure coding best practices to prevent cross-site scripting vulnerabilities.<span> </span>Prerequisite:<span> </span>Basic knowledge of Web technologies, ASP.NET, and C# programming language.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Intro to XSS – Java</p>
<p class="MsoNormal">In this course, students will learn to understand the mechanisms behind cross-site scripting vulnerabilities, describe cross-site scripting vulnerabilities and their consequences, and apply secure coding best practices to prevent cross-site scripting vulnerabilities.<span> </span>Prerequisite:<span> </span>Basic knowledge of Web technologies, and Java Server Pages (JSP).</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2011/04/toughen-up-your-code-with-software-security-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a Software Security Threat Model</title>
		<link>http://www.klocwork.com/blog/2011/04/building-a-software-security-threat-model/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=building-a-software-security-threat-model</link>
		<comments>http://www.klocwork.com/blog/2011/04/building-a-software-security-threat-model/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 19:34:44 +0000</pubDate>
		<dc:creator>Brendan Harrison</dc:creator>
				<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Static Analysis]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1291</guid>
		<description><![CDATA[We&#8217;ve talked at length before regarding software security assurance and the role static analysis can play in ensuring code is written securely. We&#8217;ve got a bunch of great resources for anyone looking to dive into this particular aspect of software security: Summary of various secure coding standards, including links to specific checkers supported by Klocwork [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve talked at length before regarding <a title="Software Security Assurance" href="http://www.klocwork.com/solutions/software-security-assurance/" target="_blank">software security assurance</a> and the role static analysis can play in ensuring code is written securely. We&#8217;ve got a bunch of great resources for anyone looking to dive into this particular aspect of software security: <br />
 <a href="http://www.klocwork.com/blog/wp-content/uploads/2011/04/lock1.jpg"><img class="alignright size-full wp-image-1294" title="lock" src="http://www.klocwork.com/blog/wp-content/uploads/2011/04/lock1.jpg" alt="Lock" width="219" height="230" /></a></p>
<ul>
<li>Summary of various <a title="Secure Coding Standards" href="http://www.klocwork.com/solutions/security-coding-standards/" target="_blank">secure coding standards</a>, including links to specific checkers supported by Klocwork</li>
<li><a title="Free Secure Coding e-Learning" href="http://developer.klocwork.com/browse/free-courses-security-innovation" target="_blank">Free secure coding e-learning</a> courses, including an intro to Microsoft&#8217;s secure development lifecycle</li>
<li>A &#8216;buyer&#8217;s guide&#8217; to <a title="Selecting a Static Analysis Tool" href="http://www.klocwork.com/resources/download.php?file=klocwork-case-study-aci">selecting a static analysis tool </a>as part of a secure coding program authored by a major payment software company</li>
</ul>
<p>To build on this, next month our CTO Gwyn Fisher and the CTO of Security Innovation, Jason Taylor will be hosting a talk that expands the discussion beyond secure coding strategies alone. Jason will be talking at length on how to build a threat model for software, in particular embedded software. Gwyn will then walk through how customers should be building their software with this threat model in mind &#8211; everything from code reviews to static analysis and testing strategies. I urge you to <a title="Webinar Registration" href="https://www.techwebonlineevents.com/ars/eventregistration.do?mode=eventreg&amp;F=1003124&amp;K=CAA1CC" target="_blank">register for the webinar</a> and check it out &#8211; there will be lots of good information being discussed.</p>
<ul>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2011/04/building-a-software-security-threat-model/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>What, me worry (about Mac-attacks)?</title>
		<link>http://www.klocwork.com/blog/2010/12/what-me-worry-about-mac-attacks/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-me-worry-about-mac-attacks</link>
		<comments>http://www.klocwork.com/blog/2010/12/what-me-worry-about-mac-attacks/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 13:26:13 +0000</pubDate>
		<dc:creator>Todd Landry</dc:creator>
				<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[antivirus]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[software security]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1149</guid>
		<description><![CDATA[After being a PC user for most of my life, I just can&#8217;t help but feel a little bit exposed without any kind of antivirus on my shiny new Mac. I mean, I&#8217;ve heard it ad nauseum that the Mac just isn&#8217;t as prone to attacks as PCs are, but I for one just find [...]]]></description>
			<content:encoded><![CDATA[<p>After being a PC user for most of my life, I just can&#8217;t help but feel a little bit exposed without any kind of antivirus on my shiny new Mac. I mean, I&#8217;ve heard it ad nauseum that the Mac just isn&#8217;t as prone to attacks as PCs are, but I for one just find that hard to believe.<a href="http://www.klocwork.com/blog/wp-content/uploads/2010/12/alfred-E-Neuman.jpg"><img class="alignright size-full wp-image-1167" title="alfred E Neuman" src="http://www.klocwork.com/blog/wp-content/uploads/2010/12/alfred-E-Neuman.jpg" alt="" width="250" height="251" /></a></p>
<p>It is a computer that connects to the Internet after all; there has to be some level of risk there. According to this <a href="http://www.securemac.com/">site</a>, there are regular updates to address new Trojan horses, and other security violations and threats, so obviously Apple is taking this seriously.</p>
<p>Many industry &#8216;experts&#8217; are starting to think that maybe antivirus on a Mac is (and will continue to be) more important moving forward. <a href="http://www.rarticle.com/2010/11/mac-antivirus-is-it-worth-it/">Some</a> believe that a Mac is just inherently less susceptible to viruses, while <a href="http://www.zath.co.uk/do-mac-os-x-users-need-anti-virus-protection/">others</a> speculate that there may be other reasons behind it. Either way, the PC side of my brain has convinced me to at least investigate this a little more.</p>
<p>So, do you have an antivirus protection on your Mac?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/12/what-me-worry-about-mac-attacks/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Rootkitting a PLC &#8211; who would have thought they were vulnerable</title>
		<link>http://www.klocwork.com/blog/2010/10/rootkitting-a-plc-who-would-have-thought-they-were-vulnerable/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rootkitting-a-plc-who-would-have-thought-they-were-vulnerable</link>
		<comments>http://www.klocwork.com/blog/2010/10/rootkitting-a-plc-who-would-have-thought-they-were-vulnerable/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 18:05:12 +0000</pubDate>
		<dc:creator>Eric Hollebone</dc:creator>
				<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[software security]]></category>
		<category><![CDATA[Static Analysis]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1115</guid>
		<description><![CDATA[Part of my life has been spent in the manufacturing sector working with industrial automation devices, but the discovery of the Stuxnet virus is the first time I&#8217;ve ever heard of specifically virus targeting and even rootkitting a PLC (programmable logic controller) or  SCADA (supervisory control and data acquisition) network. When working in industrial plants, we took [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.klocwork.com/blog/wp-content/uploads/2010/10/PLC_Control_Simple.jpg"><img class="alignleft size-medium wp-image-1116" style="margin-right: 10px;" title="Stuxnet infection" src="http://www.klocwork.com/blog/wp-content/uploads/2010/10/PLC_Control_Simple-300x102.jpg" alt="" width="300" height="102" /></a>Part of my life has been spent in the manufacturing sector working with industrial automation devices, but the discovery of the <a title="Wikipedia description: Stuxnet" href="http://en.wikipedia.org/wiki/Stuxnet" target="_blank">Stuxnet</a> virus is the first time I&#8217;ve ever heard of specifically virus targeting and even <a title="Wikipedia definition: rootkit" href="http://en.wikipedia.org/wiki/Rootkit">rootkitting</a> a <a title="Wikipedia definition: PLC" href="http://en.wikipedia.org/wiki/Programmable_Logic_Controller">PLC</a> (programmable logic controller) or  <a title="Wikipedia definition: SCADA" href="http://en.wikipedia.org/wiki/SCADA" target="_blank">SCADA</a> (supervisory control and data acquisition) network.</p>
<p>When working in industrial plants, we took the standard precautions with regard to Windows viruses and even started to add virus protection for Linux, but never did it occur to any of us that the industrial automation equipment might be at risk. Whenever the subject was even brought up, which was rare in itself, there were the standard arguments:</p>
<ul>
<li>Oh, it&#8217;s on a physically separate network (or VLAN configuration), only USB (thumb/flash) drives are allowed and they&#8217;re virus checked before use.</li>
<li>Oh, it&#8217;s running a completely different processor/operating system/architecture &#8211; there&#8217;s no way it can be infected.</li>
</ul>
<p>The consequences of infection are severe.   These devices run everything from our nuclear power plants to complex manufacturing assembly lines, aircraft controls (<a title="Wikipedia definition: FADEC" href="http://en.wikipedia.org/wiki/FADEC" target="_blank">FADECs</a>) and chemical refineries, just to name a few.  In its most basic of functions, industrial automation is used for two purposes: to keep humans safe and to produce products for less cost.  Interrupting either of these is going to kill someone or cost a company a large chunk of change.</p>
<p>So, what does this all mean?  It means that industrial automation and PLC vendors had better start hardening their solutions for security vulnerabilities and elevate the quality of their firmware and software components using security vulnerability tools such as <a title="Klocwork's static analysis" href="http://www.klocwork.com/products/insight/klocwork-truepath/">Klocwork&#8217;s static analysis</a> just as the general computing industry has done for the past 30 years.</p>
<p>For an in-depth analysis and timeline, refer to either Symantec&#8217;s whitepaper on their <a href="http://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/w32_stuxnet_dossier.pdf" target="_blank">Stuxnet analysis</a> or the work done by ESET on their version of <a href="http://www.eset.com/resources/white-papers/Stuxnet_Under_the_Microscope.pdf" target="_blank">Stuxnet</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/10/rootkitting-a-plc-who-would-have-thought-they-were-vulnerable/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Alphabet Soup of Software Security Guidelines</title>
		<link>http://www.klocwork.com/blog/2010/06/the-alphabet-soup-of-software-security-guidelines/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-alphabet-soup-of-software-security-guidelines</link>
		<comments>http://www.klocwork.com/blog/2010/06/the-alphabet-soup-of-software-security-guidelines/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 13:48:33 +0000</pubDate>
		<dc:creator>Todd Landry</dc:creator>
				<category><![CDATA[Compliance]]></category>
		<category><![CDATA[General Coding]]></category>
		<category><![CDATA[General Industry]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[software security]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=1001</guid>
		<description><![CDATA[With the recent story that the iPad has inherent security vulnerabilities, I thought it might be an appropriate time to delve into the world of software security guidelines&#8230;but I must warn you, this blog will contain an abnormal amount of acronyms, and may not be suitable for all audiences. When talking about software security guidelines, [...]]]></description>
			<content:encoded><![CDATA[<p>With the recent <a href="http://www.techeye.net/hardware/ipad-has-another-security-flaw-says-hacker-group">story</a> that the iPad has inherent security vulnerabilities, I thought it might be an appropriate time to delve into the world of software security guidelines&#8230;but I must warn you, this blog will contain an abnormal amount of <a href="http://codyfrew.wordpress.com/2007/06/29/acronyms-friends-or-foes/">acronyms</a>, and may not be suitable for all audiences.<a href="http://www.klocwork.com/blog/wp-content/uploads/2010/06/soup.jpg"><img class="alignright size-medium wp-image-1002" title="soup" src="http://www.klocwork.com/blog/wp-content/uploads/2010/06/soup-300x189.jpg" alt="" width="300" height="189" /></a></p>
<p>When talking about software security guidelines, there are really 5 or 6 organizations that are leading the charge, and they include:</p>
<p>-          OWASP</p>
<p>-          SANS Institute</p>
<p>-          MITRE</p>
<p>-          PCI Security Standards Council</p>
<p>-          SEI</p>
<p>Let’s first look at <a href="http://www.owasp.org/index.php/Main_Page">OWASP</a>. OWASP stands for Open Web Application Security Project, which is a not-for-profit charitable organization that is focused on improving the security of application software. They are probably best known for their Top 10 lists from 2004, 2007, and most recently <a href="http://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project">2010</a>.</p>
<p>Next is the <a href="http://www.sans.org/">SANS Institute</a>. SANS of course is a FLA that stands for SysAdmin, Audit, Networking, Security. The SANS Institute claims to be the most trusted source for computer security training, certification and research, and have been developing and releasing their <a href="http://www.sans.org/top-cyber-security-risks/">Top 20 </a>annually for the past 7 years or so.</p>
<p>The <a href="http://www.mitre.org/">MITRE Corporation </a>is a not-for-profit organization that was founded in the late 50’s, and has over 7,000 very smart dudes (65% have Masters or PhDs). MITRE has come up with their own security guideline as well, that is the <a href="http://cwe.mitre.org/">CWE </a>(Common Weakness Enumeration) and it provides a common language of discourse for discussing, finding and dealing with the causes of software security vulnerabilities as they are found in code, design, or system architecture. The CWE lists over 800 programming errors, design errors, and architectural errors that can lead to exploitable vulnerabilities. Interestingly, MITRE and SANS decided to collaborate to come up with the <a href="http://cwe.mitre.org/top25/">CWE Top 25</a>, yet another “Top” list they have been putting together for the last couple of years.</p>
<p>The <a href="https://www.pcisecuritystandards.org/index.shtml">PCI Security Standards Council </a>was founded by American Express, Discover Financial Services, JCB International, MasterCard Worldwide, and Visa, Inc. and is an open global forum for the ongoing development, enhancement, storage, dissemination and implementation of security standards for account data protection. The PCI SSC has come up with the <a href="https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml">PCI DSS</a>, “a multifaceted security standard that includes requirements for security management, policies, procedures, network architecture, software design and other critical protective measures. This comprehensive standard is intended to help organizations proactively protect customer account data”.</p>
<p>Finally, there is the <a href="http://www.sei.cmu.edu/">SEI </a>(the Software Engineering Institute, which is a federally funded R&amp;D center at CMU, aka Carnegie Mellon University). The SEI is home to <a href="http://www.cert.org/">CERT </a>which was established in 1988 to address internet security problems and to find ways to reduce the number and impact of security breaches. CERT focuses on protection, detection, and response to attacks on networked computer systems. Surprisingly enough, CERT is not actually an acronym.</p>
<p>Neither PCI nor CERT has received the memo yet that in order to be cool, you have to have a “Top X” list&#8230;perhaps next year?</p>
<p>Now, not to be left out of the fun, the NCSD (National Cyber Security Division) of the DHS (Department of Homeland Security) has their own strategic initiative called BSI (Build Security In). The NCSD obviously wants to cover pretty much all the bases since, in addition to their own <a href="https://buildsecurityin.us-cert.gov/bsi/home.html">BSI</a>, they also sponsor pretty much all of the other guidelines.</p>
<p>I would be remiss if I didn&#8217;t at least acknowledge a few other notables with respect to software security guidelines, and to make it more interesting, I will only provide the acronym. I challenge you to come up with the full name. So, a few others involved in security guidelines are NIST (who run a project called SAMATE, and also run an event called SATE, which BTW is also sponsored by DHS NCSD), WASC, and finally STIG. For fun, I’ll throw in CVE, even though it is not a guideline, but more of a dictionary or list that was put together by MITRE, and shockingly is sponsored by DHS NCSD. I&#8217;m starting to think that DHS wants to be everyone&#8217;s BFF.</p>
<p>Hopefully you’ve learned a little more about the alphabet soup of security guidelines out there. If you&#8217;re scratching your head thinking WTF, you&#8217;re probably not alone&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/06/the-alphabet-soup-of-software-security-guidelines/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Google offers cash reward for finding bugs in Chrome</title>
		<link>http://www.klocwork.com/blog/2010/02/google-offers-cash-reward-for-finding-bugs-in-chrome/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google-offers-cash-reward-for-finding-bugs-in-chrome</link>
		<comments>http://www.klocwork.com/blog/2010/02/google-offers-cash-reward-for-finding-bugs-in-chrome/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 20:23:58 +0000</pubDate>
		<dc:creator>Eric Hollebone</dc:creator>
				<category><![CDATA[General Coding]]></category>
		<category><![CDATA[Nasty Bugs]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[software security]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=814</guid>
		<description><![CDATA[As Google Chrome climbs out of obscurity in the browser market and expands into a light-weight but fully functional OS, security seems to have become a top of mind issue over at chromium headquarters. In the Chromium Blog, Chris Evans of Chrome Security announced a cash for bugs initiative, paying between 500 and 1337 USD depending on the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.klocwork.com/blog/wp-content/uploads/2010/02/Google_Chrome_Browser_log_nobugs.png"><img class="alignleft size-full wp-image-816" title="Google Chrome Browser logo - no Bugs" src="http://www.klocwork.com/blog/wp-content/uploads/2010/02/Google_Chrome_Browser_log_nobugs.png" alt="Google Chrome no bugs" width="142" height="133" /></a>As Google Chrome climbs out of obscurity in the <a title="January 2010 Browser Market Share [according to netmarketshare]" href="http://www.netmarketshare.com/report.aspx?qprid=0&amp;qptimeframe=M&amp;qpsp=132&amp;qpcustomb=" target="_blank">browser market </a>and expands into a light-weight but<a title="Chromium OS" href="http://dev.chromium.org/chromium-os"> fully functional OS</a>, security seems to have become a top of mind issue over at chromium headquarters.</p>
<p>In the Chromium Blog, Chris Evans of Chrome Security announced a <a href="http://blog.chromium.org/2010/01/encouraging-more-chromium-security.html">cash for bugs initiative</a>, paying between 500 and <a title="10100111001 (Leet)" href="http://en.wikipedia.org/wiki/Leet">1337</a> USD depending on the severity for any previously undiscovered flaw.  I am glad to see Google encouraging the community at large to participate in hardening my current browser of choice.  As Chris points out, Mozilla was one of the first to embark on this type of program, but I am happy to see Chrome following suit.  Me and my online transactions appreciate it.</p>
<p>Hmm.  Maybe I should roll-up the sleeves and  invoke the  &#8221;<a title="“I’m gonna write me a new minivan” – is zero software bugs the right goal?" href="http://www.klocwork.com/blog/2009/10/im-gonna-write-me-a-new-minivan-is-zero-software-bugs-the-right-goal/" target="_self">I&#8217;m gonna write me a minivan</a>&#8221; approach and get the driveway cleared for the armored cash trucks.</p>
<p>But seriously, if you&#8217;re interested in helping out and getting a small reward for your efforts, visit the <a title="Chromium Vulnerability Contribution Program" href="http://dev.chromium.org/Home/chromium-security/Chromium_Vulnerability_Contribution_Program_.pdf?attredirects=0&amp;d=1" target="_blank">Chromium Security</a> project.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2010/02/google-offers-cash-reward-for-finding-bugs-in-chrome/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>From Static Analysis to 0day Exploit &#8211; a demonstration</title>
		<link>http://www.klocwork.com/blog/2009/12/from-static-analysis-to-0day-exploit-a-demonstration/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=from-static-analysis-to-0day-exploit-a-demonstration</link>
		<comments>http://www.klocwork.com/blog/2009/12/from-static-analysis-to-0day-exploit-a-demonstration/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 22:32:40 +0000</pubDate>
		<dc:creator>Eric Hollebone</dc:creator>
				<category><![CDATA[Nasty Bugs]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Static Analysis]]></category>
		<category><![CDATA[0day exploit]]></category>
		<category><![CDATA[buffer overrun]]></category>
		<category><![CDATA[software security]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=528</guid>
		<description><![CDATA[I have always been fascinated by the whole area of code vulnerabilities and security exploits and how hackers turn those issues into real-world problems for the rest of us. Jeremy Brown posted an interesting article on Jeremy&#8217;s Computer Security blog where he uses his security know-how to draw a straight line between a software vulnerability found with [...]]]></description>
			<content:encoded><![CDATA[<p>I have always been fascinated by the whole area of code vulnerabilities and security exploits and how hackers turn those issues into real-world problems for the rest of us.</p>
<p>Jeremy Brown posted an interesting article on <a title="From Static Analysis to 0day Exploit" href="http://jbrownsec.blogspot.com/2009/12/from-static-analysis-to-0day-exploit.html" target="_blank">Jeremy&#8217;s Computer Security blog</a> where he uses his security know-how to draw a straight line between a software vulnerability found with <a href="http://www.klocwork.com/products/insight/klocwork-truepath/">static analysis</a> and a real <a href="http://en.wikipedia.org/wiki/0day">0day</a> exploit on an open source project called <a title="The Graphical Audio Language" href="http://galan.sourceforge.net/" target="_blank">gAlan</a>.</p>
<p>Jeremy takes us on a short journey where he finds an unprotected buffer with static analysis, creates an exploit payload to cause a buffer overrun, rewrites the instruction pointer and executes a telnet session, demonstrating how easy it is to turn a run of the mill application into a tunnel into the OS.</p>
<p>One of my colleagues did a similar <a title="Firefox vulnerability" href="http://www.klocwork.com/resources/on-demand-webinar/exploit-software-defect-firefox" target="_blank">presentation</a> like this a few years back with a Firefox vulnerability but this is a much better example! Very cool work Jeremy.</p>
<p>Enjoy&#8230;<br />
<object id="viddler" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="437" height="370" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="flashvars" value="fake=1" /><param name="src" value="http://www.viddler.com/player/2af2aaf3/" /><param name="name" value="viddler" /><param name="allowfullscreen" value="true" /><embed id="viddler" type="application/x-shockwave-flash" width="437" height="370" src="http://www.viddler.com/player/2af2aaf3/" name="viddler" flashvars="fake=1" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2009/12/from-static-analysis-to-0day-exploit-a-demonstration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Assurance Forum Day 3 Recap</title>
		<link>http://www.klocwork.com/blog/2009/11/software-assurance-forum-day-3-recap/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-assurance-forum-day-3-recap</link>
		<comments>http://www.klocwork.com/blog/2009/11/software-assurance-forum-day-3-recap/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 13:15:08 +0000</pubDate>
		<dc:creator>Todd Landry</dc:creator>
				<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[software assurance]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[software security]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=500</guid>
		<description><![CDATA[My first day at the SWA forum was actually the 3rd day at the conference, and from all accounts it has been a very productive and relevant first 2 days. Today was no different as it was kicked off with a panel discussion on the Evolution of Software Assurance Processes, and included speakers from Lockheed [...]]]></description>
			<content:encoded><![CDATA[<p>My first day at the <a href="https://buildsecurityin.us-cert.gov/daisy/bsi/events/1102-BSI.html">SWA forum </a>was actually the 3<sup>rd</sup> day at the conference, and from all accounts it has been a very productive and relevant first 2 days. Today was no different as it was kicked off with a panel discussion on the Evolution of Software Assurance Processes, and included speakers from Lockheed Martin, Waters Edge LLC, SEI/CERT, and SafeCode. I thought it was an entertaining discussion from a group definitely passionate about the topic. Something seemed missing though as I came out of it hoping for something more&#8230;Some good questions rounded out the first session.</p>
<p>Next was my turn to be on stage. I was speaking as part of the “Understanding Technology Stakeholders: Their Progress and Challenges” panel which was made up of John Giligan (The Giligan Group), Djenana Campara (KDM), Bruce Weimer (US Army), and Sean Barnum (Cigital)&#8230;and myself. It was an interesting mix of speakers representing various sectors of the software assurance community including assurance ‘consulting’ stakeholders, assurance ‘standards’ stakeholders, assurance ‘consumer’ stakeholders, and assurance ‘tool’ vendor stakeholders. My basic message was that the DHS Forum had done a great job of communicating their message to the assurance community (including a large number of our customers), but fundamentally flawed in a number of other ways.  Unfortunately, the panel part went long, so the Q&amp;A with the Plenary was shortened. The feedback I received was all positive, and that it was refreshing that we didn’t sugar-coat our thoughts.</p>
<p>As I mentioned earlier, there just seems to be something missing from the sessions I&#8217;m attending. Perhaps it is too much talk, and not enough action&#8230;not sure yet. Hopefully the next two days will leave me with a more positive feeling on this.</p>
<p>I speak again on Friday when I share my experiences and observations on the <a href="http://samate.nist.gov/SATE2009.html">Static Analysis Tool Exposition 2009</a>. I guess it will be another ‘refreshing’ session&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2009/11/software-assurance-forum-day-3-recap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Preparing for the Software Assurance Forum 2009</title>
		<link>http://www.klocwork.com/blog/2009/10/preparing-for-the-software-assurance-forum-2009/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=preparing-for-the-software-assurance-forum-2009</link>
		<comments>http://www.klocwork.com/blog/2009/10/preparing-for-the-software-assurance-forum-2009/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 13:45:22 +0000</pubDate>
		<dc:creator>Todd Landry</dc:creator>
				<category><![CDATA[General Coding]]></category>
		<category><![CDATA[General Industry]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[software security]]></category>
		<category><![CDATA[source code analysis]]></category>
		<category><![CDATA[Static Analysis]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=482</guid>
		<description><![CDATA[Next week I’m heading out to the Software Assurance Forum (use SOF96945 for the conference code) in Washington D.C. (well, actually Arlington, Virginia, but D.C. sounds more glamorous). If you’re not familiar with what the SWA is, in a nutshell, its key objective is to encourage software developers to raise overall software quality and security [...]]]></description>
			<content:encoded><![CDATA[<p>Next week I’m heading out to the <a href="https://www.enstg.com/Invitation/default.cfm?ems31e=0.401546740523">Software Assurance Forum </a>(use SOF96945 for the conference code) in Washington D.C. (well, actually Arlington, Virginia, but D.C. sounds more glamorous). If you’re not familiar with what the SWA is, in a nutshell, its key objective is to encourage software developers to raise overall software quality and security from the start, rather than relying on applying patches to systems after vulnerabilities are discovered.</p>
<p><img class="aligncenter size-medium wp-image-490" title="2009-10-27_152831" src="http://www.klocwork.com/blog/wp-content/uploads/2009/10/2009-10-27_1528312-300x56.png" alt="2009-10-27_152831" width="300" height="56" />Anyways, while I’m there, I’ll be taking part in 2 speaking opportunities. The first will be as part of a 6 person panel discussion entitled “Understanding Technology Stakeholders: Their Progress and Challenges” (10:30 – 12:00 on Wednesday). The panel is made up of stakeholders from varying disciplines such as industry, academia, standards, and government. A good well rounded panel should provide for an interesting and entertaining hour and a half.</p>
<p>My second session (Friday at 2:20) will see me fly solo as I discuss our (Klocwork’s) experiences and observations as they relate to <a href="http://samate.nist.gov/SATE2009.html">SATE</a>. I’m not given much time, so I’ll be revving up the motor mouth to make sure I get our points across. I have a sneaking suspicion I just *<strong>may</strong>* go a little OT.</p>
<p>So, is anyone out there also going to this event? If so, drop me a line either by email (<a href="mailto:todd.landry@klocwork.com">todd.landry@klocwork.com</a>), or Twitter (@todd_landry) and perhaps we can get together to chat. Look for my next blog next Thursday, as I will recap the panel discussion and the other sessions I attend at this event.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2009/10/preparing-for-the-software-assurance-forum-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>That’s nice dear, how does it work?</title>
		<link>http://www.klocwork.com/blog/2009/08/that%e2%80%99s-nice-dear-how-does-it-work/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=that%25e2%2580%2599s-nice-dear-how-does-it-work</link>
		<comments>http://www.klocwork.com/blog/2009/08/that%e2%80%99s-nice-dear-how-does-it-work/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 14:52:58 +0000</pubDate>
		<dc:creator>Gwyn Fisher</dc:creator>
				<category><![CDATA[General Coding]]></category>
		<category><![CDATA[General Industry]]></category>
		<category><![CDATA[Nasty Bugs]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[source code analysis]]></category>
		<category><![CDATA[Truepath]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=286</guid>
		<description><![CDATA[Ever been faced with that glassy-eyed expression, the look of unthinking, unwholesome fear when some long, incomprehensible word escapes your geeky mouth and upsets the maiden aunts around the once-a-year, wear-your-best-tie, try-not-to-die-before-the-cake’s-all-gone tea table? OK, so this paper won’t help you in that situation whatsoever, but if you replace your maiden aunts with a bunch [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_290" class="wp-caption alignleft" style="width: 130px"><a href="http://www.klocwork.com/resources/white-paper/truepath-scalable-whole-program-static-analysis"><img class="size-thumbnail wp-image-290" title="Klocwork Truepath whitepaper" src="http://www.klocwork.com/blog/wp-content/uploads/2009/08/klo_truepath_print-150x150.png" alt="TruPath whitepaper" width="120" height="120" /></a><p class="wp-caption-text">Truepath Analysis</p></div>
<p>Ever been faced with that glassy-eyed expression, the look of unthinking, unwholesome fear when some long, incomprehensible word escapes your geeky mouth and upsets the maiden aunts around the once-a-year, wear-your-best-tie, try-not-to-die-before-the-cake’s-all-gone tea table? OK, so this paper won’t help you in that situation whatsoever, but if you replace your maiden aunts with a bunch of your best geek friends, and replace the tea with a sturdy helping of Dew, knowing how a real whole program analysis solution works might just conceivably come in handy. Some day. “Dude, I was totally stoked when I read this thing, trust me it’s <em>ahh-some.</em>” Maybe.</p>
<p>Anyway, in the best traditions of self-serving corporate PR blogs everywhere, I give you… drum roll please… <a title="Whole Program Source Code Analysis" href="http://www.klocwork.com/resources/white-paper/truepath-scalable-whole-program-static-analysis" target="_blank">Whole Program Analysis, the Klocwork Way</a>.</p>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2009/08/that%e2%80%99s-nice-dear-how-does-it-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review of Klocwork Java Analysis</title>
		<link>http://www.klocwork.com/blog/2009/07/review-of-klocwork-java-analysis/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=review-of-klocwork-java-analysis</link>
		<comments>http://www.klocwork.com/blog/2009/07/review-of-klocwork-java-analysis/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 14:45:25 +0000</pubDate>
		<dc:creator>Brendan Harrison</dc:creator>
				<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[java analysis]]></category>
		<category><![CDATA[Klocwork Solo]]></category>
		<category><![CDATA[Static Analysis]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=212</guid>
		<description><![CDATA[Here&#8217;s a short blog review of Klocwork Solo by Jeanne Boyarsky. Klocwork Solo is a downloadable Eclipse plug-in for Java. Aside from a few installation hiccups, it&#8217; s a good review with kudos for the range of checkers we provide in the default configuration. Try it out yourself and let us know what you think.]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a short <a title="Klocwork Solo Review" href="http://www.selikoff.net/blog/2009/07/04/klocwork-a-review/" target="_blank">blog review</a> of <a href="http://www.klocwork.com/products/solo/" target="_blank">Klocwork Solo</a> by Jeanne Boyarsky. Klocwork Solo is a downloadable Eclipse plug-in for Java. Aside from a few installation hiccups, it&#8217; s a good review with kudos for the range of checkers we provide in the default configuration.</p>
<p>Try it out yourself and let us know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2009/07/review-of-klocwork-java-analysis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSR 305: a silver bullet or not a bullet at all?</title>
		<link>http://www.klocwork.com/blog/2009/03/jsr-305-a-silver-bullet-or-not-a-bullet-at-all/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jsr-305-a-silver-bullet-or-not-a-bullet-at-all</link>
		<comments>http://www.klocwork.com/blog/2009/03/jsr-305-a-silver-bullet-or-not-a-bullet-at-all/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 20:34:57 +0000</pubDate>
		<dc:creator>Mikhail Ksenzov</dc:creator>
				<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Static Analysis]]></category>
		<category><![CDATA[code analysis]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JSR-305]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=133</guid>
		<description><![CDATA[JSR-305 is a Java Specification Request intended to improve the effectiveness of static analysis tools operating in Java 5+ environments. The idea here is that one can use special purpose annotations in order to provide static analysis tools with hints regarding the behaviour and side effects of methods. An example of such annotations can be [...]]]></description>
			<content:encoded><![CDATA[<p>JSR-305 is a Java Specification Request intended to improve the effectiveness of <a href="http://www.klocwork.com/products/solo/">static analysis tools operating in Java</a> 5+ environments. The idea here is that one can use special purpose <a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/annotations.html" target="_blank">annotations</a> in order to provide <a href="http://www.klocwork.com/products/insight-pro//">static analysis tools</a> with hints regarding the behaviour and side effects of methods.</p>
<p>An example of such annotations can be found in the presentation <a href="http://findbugs-tutorials.googlecode.com/files/UFIA-305.pdf" target="_blank">&#8216;Annotations for Software Defect Detection&#8217;</a> by William Pugh, who is masterminding the whole spec. Here we go:</p>
<pre><code><strong> 1: void </strong>test() {
<strong> 2:    if</strong> (spec != <strong>null</strong>) fFragments.add(spec);
<strong> 3:    if</strong> (isComplete(spec)) fPreferences.add(spec);
<strong> 4:</strong> }
<strong> 6:</strong>
<strong> 5: boolean</strong> isComplete(AnnotationPreferences spec) {
<strong> 6:</strong>    <strong>return</strong> spec.getColorPreferenceKey() != <strong>null</strong>
<strong> 7:</strong>        &amp;amp;&amp;amp; spec.getColorPreferenceValue() != <strong>null</strong>
<strong> 8:</strong>        &amp;amp;&amp;amp; spec.getTextPreferenceKey() != <strong>null</strong>
<strong> 9:</strong>        &amp;amp;&amp;amp; spec.getOverviewRulerPreferenceKey() != <strong>null</strong>;
<strong>10:</strong> }</code></pre>
<p>What’s wrong with the snippet above? Well, the check for null on line 2 shows that the developer expects that the value of &#8216;spec&#8217; can potentially be null, but it is still passed to method &#8216;isComplete&#8217;. Later, ‘isComplete’ attempts to dereference the value, which causes a NullPointerException.</p>
<p>According to Dr. Pugh, the best way to detect this issue statically is to force a developer to add the annotation <em>@Nonnull</em> to the method signature like this:</p>
<p><strong> 5: boolean</strong> isComplete(<em>@Nonnull</em> AnnotationPreferences spec) {</p>
<p>In this way, a basic <a href="http://www.klocwork.com/products/solo/">static analysis tool</a> that can minimally track ‘spec’ as a potential suspect for ‘null’ can issue a warning when the @Nonnull annotation is contradicted (that is, when  ‘spec’ is passed to ‘isComplete’ as a parameter).</p>
<p>There are two problems with this approach:</p>
<ul>
<li> it forces the developer to do work that rightly should be performed by a <a href="http://www.klocwork.com/products/insight/klocwork-truepath/">static analysis engine</a></li>
<li> it takes time to write the annotation for static analysis, but it takes even more effort to maintain the annotations and the actual code base in a consistent state.</li>
</ul>
<p>In reality, the proposals behind JSR-305 exist to enable a tool intended for single function analysis (so-called intra-procedural analysis) to act as if it were performing whole program analysis by requiring the developer to state expected behaviour up front (whether or not that behaviour is actually expressed correctly in the developer’s code).</p>
<p>In contrast, this same scenario is supported by a whole program static analysis tool (so-called inter-procedural analysis) without developer intervention:</p>
<ol>
<li>First, a complete call-graph of the system is built, and then all the methods are ordered so that called methods are processed prior to callers &#8212; such an ordering allows the tool to generate all the necessary information about, in this instance, the method ‘isComplete’ by the time the analysis of the method ‘test’ begins.</li>
<li>During the analysis of ‘isComplete’, the tool records the fact that the incoming argument ‘spec’ is dereferenced.</li>
<li>Next, the method ‘test’ is analyzed. In this method, the variable ‘spec’ is checked for null, so it is tracked as a potential suspect for an exception. Using the information generated about ‘isComplete’ the tool can reliably issue a warning on line 3, since it already knows that ‘isComplete’ dereferences the incoming argument.</li>
</ol>
<p>So that example applies to a simple unconditional dereference scenario. In more complicated cases, Dr. Pugh proposes to use the annotation parameter ‘when’, with one of the following values:</p>
<ul>
<li>ALWAYS</li>
</ul>
<ul>
<li>NEVER</li>
</ul>
<ul>
<li>MAYBE</li>
</ul>
<ul>
<li>UNKNOWN</li>
</ul>
<p>For example: ‘@Nonnull(when=When.NEVER)’ means that a value is always null in the given context.</p>
<p>This specification seems to be a compromise between the amount of information provided by a developer to a static analysis tool and the amount of effort a developer has to put into it, a compromise that does not seem to be a particularly good solution here. First of all, the amount of information provided in such a manner is insufficient to provide accurate analysis, and secondly this seems to be too much work for the developer, especially when this work can be avoided.</p>
<p>Let’s examine how conditional value dereferencing is supported by whole program static analysis tools:</p>
<pre><code><strong> 1: void </strong>test() {
<strong> 2: </strong>    entity.qualifiedName = <strong>null</strong>;
<strong> 3: </strong>    saveName(entity, <strong>false</strong>);
<strong> 4:</strong> }
<strong> 5:</strong>
<strong> 6: boolean</strong>    saveName(Entity entity, <strong>boolean</strong> qualified) {
<strong> 7:</strong>    String name;
<strong> 8:</strong>    <strong>if</strong> (qualified)
<strong> 9:</strong>        name = entity.qualifiedName.trim();
<strong>10:</strong>    <strong>else</strong>
<strong>11:</strong>        name = entity.name.trim()
<strong>12:</strong>
<strong>13: </strong>    save(name);
<strong>14:</strong> }</code></pre>
<p>In this example, an inter-procedural static analysis tool would first analyze the method ‘saveName’. A good analysis engine should be able to record the fact that this method only dereferences ‘entity.qualifiedName’ if the second parameter, ‘qualified’, is set to ‘true’. This, it would appear, is a deal more detailed than one can practically achieve by adding @Nonnull(when=When.XXX) annotations, even with all the work the annotation implies for the developer.</p>
<p>Next, the method ‘test’ would be analyzed. A good static analysis tool will naturally keep track of ‘entity.qualifiedName’ because of the assignment to ‘null’ on line 2 and its therefore potential use in an exception causing context. However, given that the actual call to ‘saveName’ on line 3 uses ‘false’ as its second argument, such a tool will not issue a warning that would in reality be a false positive, since the knowledge gained from analyzing ‘saveName’ disqualifies any potential warning due to the conditional relationship between arguments.</p>
<p>In summary, JSR-305 proposes a whole roster of interesting ideas for using annotations to enhance static analysis of Java code, and NPE detection seems to be only one aspect of this specification request. In upcoming blog posts, we shall continue the discussion of proposed annotations as well as offering our own ideas about how and when annotations should be used in static analysis.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2009/03/jsr-305-a-silver-bullet-or-not-a-bullet-at-all/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>CWE Top 25</title>
		<link>http://www.klocwork.com/blog/2009/01/cwe-top-25/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cwe-top-25</link>
		<comments>http://www.klocwork.com/blog/2009/01/cwe-top-25/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 21:43:38 +0000</pubDate>
		<dc:creator>Gwyn Fisher</dc:creator>
				<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[coding standards]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[Software Quality]]></category>

		<guid isPermaLink="false">http://www.klocwork.com/blog/?p=31</guid>
		<description><![CDATA[Another year, another list of the most obvious things that competent developers should already know how to avoid? This one even has the NSA backing it, as well as the usual laundry list of pimping vendors attempting to make PR out of anything remotely related to homeland security… Quick, where do I sign up? OK, [...]]]></description>
			<content:encoded><![CDATA[<p>Another year, <a href="http://www.sans.org/top25errors/?utm_source=web&amp;utm_medium=text-ad&amp;utm_content=Announcement_Bar_20090111&amp;utm_campaign=Top25&amp;ref=37029">another list</a> of the most obvious things that competent developers should already know how to avoid? This one even has the NSA backing it, as well as the usual laundry list of pimping vendors attempting to make PR out of anything remotely related to homeland security… Quick, where do I sign up?</p>
<p>OK, perhaps that’s a bit cynical, but I have to say that my usual reaction to any web application-centric security laundry list is that most developers in that space write crap code, so why should we be surprised, or expect that a new list of world-ending doom and gloom will make any difference? I mean, why the heck is SQL Injection still a cause for concern? Haven’t we learned to write prepared statements yet? According to the <a href="http://news.bbc.co.uk/2/hi/technology/7824939.stm">widely</a> <a href="http://www.informationweek.com/news/security/government/showArticle.jhtml?articleID=212701491&amp;subSection=News">quoted</a> <a href="http://it.toolbox.com/blogs/adventuresinsecurity/the-cwesans-top-25-just-another-list-or-harbinger-of-meaningful-change-29261">experts</a>, SQL Injection and input validation alone comprised 1.5M exploits last year. Sigh…</p>
<p>Was nice to see some level-headed reporting in amongst all the hyperbole, however. My favorite quote of the day comes from the BBC article linked above, with Patrick Lincoln from SRI International saying:</p>
<blockquote><p>&#8220;The real dedicated serial attacker will probably find a way in even if all these errors were removed. But a high school hacker with malicious intent &#8211; ankle-biters if you will &#8211; would be deterred from breaking in.&#8221;</p></blockquote>
<p>Ankle-biters. Oh, the irony… All this money being spent on what? A barrier to deter script kiddies…</p>
<p>Maybe it’s just me, but I can’t help myself reflecting back to 1999. If you had code you’d written properly, that wasn’t lazy, that was expected to be around for a while, you simply weren’t cool enough to grab the big Y2K contracts. You weren’t cool enough to be worried about airplanes falling out of the sky. You were just a decent programmer doing a decent job.</p>
<p>Now of course, all the cool kids are worried about web site security. Why? Well as with everything that sounds noble and just on the outside, it probably has something to do with money, let’s face it. And cool-looking eye glasses with those little wire frames (oh yeah, you know you want them…). Because now you’re not a maintenance coder, you’re a code forensics expert. You’re not patching up some piece of garbage that should never have left the test server, you’re implementing cutting-edge perimeter security measures. You’re not hiding your head in shame about just how misguided our industry has become, you’re trumpeting it on the front page of every news outlet in the world…</p>
<p>And if you’re really cool you’re already fitting yourself out for your Steve Jobs lookalike outfit, because now, people, now we have the NSA telling us that the world is going to hell in a hand-basket, but if we’re quick enough, if we throw enough buzzwords around, maybe we’ll land ourselves a cushy gig as a maintenance programmer. Err.. I mean an architecturally-motivated, build-security-in, leading-from-the-trenches, application security infrastructuralizer kind of guy. Yeah, that sounds about right…</p>
<p>OK, don’t get me wrong… buzzwords aside, CWE is an awesome endeavor being run by some very smart and motivated people. And hey, this list will probably help me sell more of my software, which is always good, right?</p>
<p>But will this list of the Top 25 “dumb mistakes” change the world? Will it lead to a greater comfort for those of us waiting for the next terrorist attack to scare us senseless? Somehow I doubt it… But maybe, just maybe, it’ll stop grandma’s password making its way to the Ukraine next month. And that’s kind of the point. Web sites don’t run the world, but they can ruin it for you in a very personal way. Missiles aren’t going to fall out of the sky if your web site is vulnerable to path injection (or at least, let’s really hope not), but if your bank account is suddenly not yours anymore they might just as well have done.</p>
<p>But much as Hollywood’s brief dalliance with attempting to relate to developers by having some idiot repeatedly generate a 404 while “hacking the man” was obviously insane, hoping that a new list (“Larger and now with added scare factor!!!”) will have much impact on the security of things outside of web sites (like embedded device controller logic, or missile guidance systems, or air traffic management environments, or stop lights, or stuff that really, you know, matters) seems to this consumer to be equally off-base.</p>
<p>As an educational instrument I wish it all the success in the world. Better web applications would make lots of peoples’ lives easier. I’d really like to be able to visit any old web site and think that my personal details (“likes rock climbing, sushi and long beach walks…”) aren’t automatically open season for anybody with half a brain and too much time on their hands.</p>
<p>But here’s the bottom line: you don’t get security by enforcing a list. CWE is way, way bigger than this list of “Most Dangerous Programming Errors.” And it needs to be. So don’t go buying that shiny new product because it “Conforms to CWE 25” (or whatever this thing lands up being called). And don’t use the Top 25 to interview your new security consultant. Because what’s outside that list is just as important as what made the cut. Security is a big deal, it’s not a list.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.klocwork.com/blog/2009/01/cwe-top-25/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

