<?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>Justice League Blog &#187; Assurance</title>
	<atom:link href="http://www.cigital.com/justice-league-blog/category/assurance/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cigital.com/justice-league-blog</link>
	<description></description>
	<lastBuildDate>Thu, 09 Feb 2012 19:09:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Threat Modeling &#8211; Vocabulary</title>
		<link>http://www.cigital.com/justice-league-blog/2011/05/11/threat-modeling-vocabulary/</link>
		<comments>http://www.cigital.com/justice-league-blog/2011/05/11/threat-modeling-vocabulary/#comments</comments>
		<pubDate>Wed, 11 May 2011 21:54:52 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Assurance]]></category>
		<category><![CDATA[Software Security]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=800</guid>
		<description><![CDATA[A few posts back, we begun a series on Threat Modeling. As we begun writing the second installment in this series, it occurred to me that I&#8217;m using a lot of threat modeling vocabulary. When I speak on threat modeling I always warn my audience that ambiguity exists in some of the (even fundamental or [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cigital.com/justiceleague/2011/03/29/moving-to-mobile-new-threats/">A few posts back</a>, we begun a series on Threat Modeling. As we begun writing the second installment in this series, it occurred to me that I&#8217;m using a lot of threat modeling vocabulary. When I speak on threat modeling I always warn my audience that ambiguity exists in some of the (even fundamental or common) terms used here.</p>
<p>To address this concern in conversations conducted as part of the OWASP Threat Modeling project, I worked with Cigital&#8217;s <a href="http://www.cigital.com/justiceleague/author/sammy/">Sammy Migues</a> to construct a Glossary of Threat Modeling Terms. Sammy has long been a proponent of such approaches to glossaries: sticking firmly to nouns as nodes and relating those nodes with action verb edges. See figure below:<br />
<a href="http://www.cigital.com/justice-league-blog/2011/05/11/threat-modeling-vocabulary/threat-modeling-glossary-diagramed/" rel="attachment wp-att-804"><img src="/justice-league-blog/files/2011/05/Threat-Modeling-Glossary-Diagramed.jpg" alt="Glossary of Threat Modeling Terms" width="434" height="549" class="aligncenter size-large wp-image-804" /></a></p>
<p>Please feel free to download and use <a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0B0kzJSN-1ikNZmUyMWEwMmQtMjAxNy00Y2I2LWFmZDEtYzA0ZjE1MTNjMzZj&amp;hl=en&amp;authkey=CNTY5cAL">Glossary of Threat Modeling Terms</a> stored as a Google Doc. (*1)</p>
<p>As you consider the terms and their relationships in this diagram, you may wonder about how/why we sourced what we did when defining terms. We used the following heuristics:</p>
<p><UL><br />
<LI>Favor the earliest definition known</LI><br />
<LI>Allow a more recent definition to update or color a previous definition, especially with respect to application security context</LI><br />
<LI>Do not allow a more recent definition to change direction without having been journal (or similarly peer-review) accepted</LI><br />
<LI>Favor software development and especially architecture sources over security sources</LI><br />
</UL></p>
<p>The definitions provided by the OWASP wiki, in particular, fail that third heuristic a fair amount, while often providing the second&#8217;s benefit.</p>
<p>As for &#8220;why&#8221;, perhaps it&#8217;s Sammy&#8217;s pedigree combined with my years in research and doing both magazine and journal review for IEEE. You&#8217;re instructed for better or worse, that there must be a good reason to replace an existing definition. Comparing the published result with Cigital&#8217;s internal docs, source material differs considerably. A lot of our internal material on threat modeling relies on work from decades ago. ISACA material, most commonly used in the diagram above, applies more directly to a context of web-applications (remember, the glossary was done for an OWASP project)  than ours, which must face a much broader assessment context. Additionally favoring existing externally available documentation, especially from an architecture context such as ISACA, serves to create a better chance for engaging those who we most want in a application security threat modeling discussion: architects, development teams, and development-centric organizations.</p>
<p>The biggest complaint with the glossary thus far has been with regard to its handling of &#8220;risk&#8221;. Basically, risk management remains largely out of scope of this glossary of terms, which instead chooses to focus on threat, attack surface, and vulnerability enumeration. Yes, analysis of likelihood (whatever that means) and impact are vitally important aspects of threat modeling. These two concepts, however, tend to be organization-/philosophy-specific. As such, they remain out of scope of this series of blog entries as well.</p>
<p>All that having been said, I meant the glossary to be a &#8220;worksheet&#8221; rather than &#8220;the 10 Commandments&#8221;. So, I think we have something to start with, improve, and evolve. Feel free to refer back to this either in your own work or as you read coming entries.</p>
<p>-jOHN</p>
<p>(*1) &#8211;   If you&#8217;d like OS X or Windows &#8220;source code&#8221; to this diagram, simply email me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2011/05/11/threat-modeling-vocabulary/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>When All You Have is a Hammer&#8230;</title>
		<link>http://www.cigital.com/justice-league-blog/2011/05/03/when-all-you-have-is-a-hammer/</link>
		<comments>http://www.cigital.com/justice-league-blog/2011/05/03/when-all-you-have-is-a-hammer/#comments</comments>
		<pubDate>Wed, 04 May 2011 03:09:56 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[Assurance]]></category>
		<category><![CDATA[Defects, Bugs, and Flaws]]></category>
		<category><![CDATA[Enterprise Software Security]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Software Security Touchpoints]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=776</guid>
		<description><![CDATA[We&#8217;ve probably all experienced organizations that rely principally on a single assessment technique (whether it be static or dynamic, manual or tool-based). Unfortunately, this is all too common for security practices. When this topic came up recently with the question (paraphrased), &#8220;Are there numbers that demonstrate the value of a security program making use of [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve probably all experienced organizations that rely principally on a single assessment technique (whether it be static or dynamic, manual or tool-based). Unfortunately, this is all too common for security practices. When this topic came up recently with the question (paraphrased), &#8220;Are there numbers that demonstrate the value of a security program making use of static, dynamic, and manual assessment techniques?&#8221; I thought some of our experience might apply.  </p>
<p> Cigital has always favored delivery of holistic assessments (those assessments that consider architecture/design as well as code, leveraging static &amp; dynamic tools, and using both tool-assisted and manual techniques). During my tenure as Director of Security, we found the following distribution of findings:</p>
<p><UL><br />
<LI>Static tool: 20%</LI><br />
<LI>Dynamic tool: 5% (*1)</LI><br />
<LI>Manual SCR: 15%</LI><br />
<LI>Architecture Risk Analysis: 60%</LI><br />
</UL></p>
<p>Those numbers may surprise and demand some explanation. For instance, though Microsoft at one point reported 50% of their findings were &#8220;flaws&#8221;, Cigital was finding 60% (on average, with as much as 70%) of its issues as &#8216;flaws&#8217;.  If anything, our classification of &#8216;flaw&#8217; was less inclusive though, and at the time I looked into this, I concluded that our larger percentage could be due to technique, focus on architecture in methodology (LoE), or level of customer familiarity/maturity with the tech-stack they developed on. </p>
<p>Likewise, our process started with a &#8220;whitebox&#8221; triage then shifted to exploratory testing (aka: dynamic) rather than the other way around (which I find common elsewhere) and that order-of-operations probably moved balance from dynamic to static. So, in practice we &#8220;found&#8221; vulnerabilities statically and then supported those findings with dynamic tests to validate their exploit-ability and impact (though perhaps dissatisfying, static gets the point in our data set here).</p>
<p><strong><em>Slicing by technique</em></strong><br />
Our experience made it pretty evident to us: skip assessment techniques and expect to miss some critical vulnerabilities. </p>
<p><strong><em>Slicing by vulnerability type</em></strong><br />
As I&#8217;ve mentioned in previous blog entries and mailing list posts, security managers need the capability to assess and report on their ability to find particular classes of security vulnerability as well. WASC&#8217;s <a href="http://projects.webappsec.org/w/page/13246989/Web-Application-Security-Statistics">Web Application Security Statistics</a> provide a starting point for both classes of attacks you might expect to find and their probability. There&#8217;s no shortage of vulnerability taxonomy work out there, so we&#8217;ll leave this topic at this superficial level. </p>
<p><strong><em>Optimizing a Security Practice</em></strong><br />
Whether you know what percentage of your reported findings come from each assessment technique, or you&#8217;re just starting to build your assessment practice, optimization (measurement, analysis, iterative improvement) should be a goal. To do this we combine our knowledge of the techniques we&#8217;re employing and the enumeration of vulnerabilities we want to find and report.</p>
<p>Confined to the context of static analysis, I described the following loop in a <a href="http://www.cigital.com/justiceleague/2011/02/02/if-its-so-hard-why-bother/">previous blog post</a> to do just that:</p>
<ul>
<li>Use a representative sample of <strong>your</strong> applications to observe a static analysis tool&#8217;s performance, not a contrived test suite.</li>
<li>Consider the tool&#8217;s findings relative to pen-testing findings on the same app. </li>
<ul>
<li>Did new and interesting findings result?</li>
<li>Did pen-testing findings found by the static tool provide adequate root-cause analysis and remediation advice to fix problems earlier?</li>
</ul>
<li>How long did it take to on-board an app? How will this scale to your portfolio of apps?</li>
<li>How long did it take to triage the results? How will this scale?</li>
</ul>
<p>The purpose of this trial experimentation was to provide some basic comparison between assessment techniques (though you could easily come up with a more thorough approach).  Of course, you&#8217;d want to consider findings from the perspective of all techniques, not just static tools. </p>
<p>Internally, we had our assessment lab managers write up a <em>qualitative</em> comparison of assessment techniques we employ, comparing how well each is &#8220;suited&#8221; to finding vulnerabilities against common vulnerability taxonomies (*2) and came up with the following:<br />
<UL><br />
<LI>ARA:               14%</LI><br />
<LI>Static tool:       12%</LI><br />
<LI>Manual SCR:  21%</LI><br />
<LI>Manual Pen:   21%</LI><br />
<LI>Dynamic Tool: 12%</LI><br />
<LI>Sec Testing:    20%</LI><br />
</UL></p>
<p>At this point, the reader may be asking why my experience differs from our lab managers&#8217;. Specifically, for instance, &#8220;why are dynamic techniques over-estimated here as compared to to historical findings rates?&#8221; Two reasons (at least) come to mind:</p>
<p><OL><br />
<LI>The balance of techniques that constitute our assessments  are &#8220;moving back&#8221; towards dynamic as software-under-test and market forces evolve</LI><br />
<LI>There&#8217;s a difference between how suited a technique is to discover something and how we choose to find it (I guarantee that in some circumstances this gap represent &#8216;optimization opportunities&#8217;, while in others it represents explicit technology or methodological choices).<br />
</OL></p>
<p><strong><em>The Caveat You&#8217;ve Come to Expect From Me</strong></em><br />
Whether your considering a vendor&#8217;s assessment service, an assessment standard, or your own internal assessment practice, it&#8217;s key to be able to detect biases. When others supply you assessment data you&#8217;ll likely uncover biases (though it may not be apparent to those reporting initially). Be careful, I doubt you&#8217;ll be able to compile, combine, or relate numbers you receive from varying sources for this reason. </p>
<p>If you&#8217;re compiling assessment data for the purpose of motivating practice improvement, you may want to either 1) extract universal similarities from the data you get and present those lessons learned to management, or 2) just list the others&#8217; experience separately. This can provide those to whom you&#8217;re presenting a compelling view to your perspective on differing assessment approaches.</p>
<p>In fact, many factors will muck up assessment comparison. For instance, when people report a percentage (like I did above), did they mean finding instances, findings, by type, or something else (*3)? What was their methodology, level-of-effort, and how did they conduct assessment. For instance, risk-based assessments produce a very different distribution (with wider variation) than time-boxed techniques, which more frequently drive to an explicit (or worse, implicit) checklist.</p>
<p>One thing universally seems true though: the more assessment techniques a software security practice makes use of, the more types of vulnerabilities it can expect to report.  </p>
<p>-jOHN</p>
<p>(*1)  &#8211; Clarification: our use of dynamic tools is human-assisted (both in terms of crawl and in follow-up with manual effort or leveraging internally developed tools).</p>
<p>(*2) &#8211;  WASC, OWASP Top 10, CWE Top 25</p>
<p>(*3) &#8211; My data is comprised of reported vulnerabilities. Answering questions about what risk-level I reported requires some abstraction as clients differ in their requirements there. Likewise, behavior regarding instances vs. buckets of &#8216;related vulns&#8217; requires addl. explanation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2011/05/03/when-all-you-have-is-a-hammer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slapping Your Forehead Tomorrow</title>
		<link>http://www.cigital.com/justice-league-blog/2011/04/01/744/</link>
		<comments>http://www.cigital.com/justice-league-blog/2011/04/01/744/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 21:45:23 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[Assurance]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=744</guid>
		<description><![CDATA[As usual @oneraindrop has written an interesting article on the cost of things entitled looking-backwards-from-the-future. In his post he discusses the need to consider the cost of things in terms of the opportunity lost by doing them: &#8220;Jim Rogers has a great practice on saving &#8211; when you think of buying something today, simply multiply [...]]]></description>
			<content:encoded><![CDATA[<p>As usual <a href="http://twitter.com/#!/oneraindrop">@oneraindrop</a> has written an interesting article on the cost of things entitled <a href="http://1raindrop.typepad.com/1_raindrop/2011/04/looking-backwards-from-the-future.html">looking-backwards-from-the-future</a>.</p>
<p>In his post he discusses the need to consider the cost of things in terms of the opportunity lost by doing them:</p>
<blockquote><p><em>&#8220;Jim Rogers has a great practice on saving &#8211; when you think of buying something today, simply multiply its cost by twenty to see how much it will be worth down the road when you are retired. A dinner out is &#8220;only&#8221; $75, but would you still go out to eat if you figured the cost at $1,500? Warren Buffett pithily sums this up as &#8211; do I really need a $300,000 haircut?&#8221;</em></p></blockquote>
<p>Indeed. </p>
<p>What about the reverse? As a security manager, please ask yourself, </p>
<blockquote><p><strong>&#8220;What am I not doing incrementally that I&#8217;m going to regret having made no progress on in the future?&#8221; </strong></p></blockquote>
<p>Today, as I look back on complaining about the dynamism of Java EE applications, I could kick myself for not spending a few hours each week building scanning technology to address these issues. Bygones. </p>
<p>What about you? Run an assessment practice? Couldn&#8217;t you just kick yourself for not spending a few hours each week:</p>
<p><UL><br />
<LI>Measuring what vulnerabilities you found, and what techniques paid off to find them?</LI><br />
<LI>Measuring which finds were fixed and which most frequently resulted in regression? </LI><br />
</UL></p>
<p>How about those of you working with developers and security toolkits? Couldn&#8217;t you just kick yourself for not spending a few hours each week:</p>
<p><UL><br />
<LI>Collecting the &#8216;best examples&#8217; of validation code from your reviews?</LI><br />
<LI>Writing a security widget to encode output for a particularly popular context?</LI><br />
</UL></p>
<p>Just as the future cost of (even seemingly small) wasted expense today can be staggering, the regret for not addressing daunting problems with an almost negligible amortized effort can be staggering later. </p>
<p>What can you start addressing incrementally now? </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2011/04/01/744/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scrap Static Tools, just &#8220;Fix your code&#8221;?</title>
		<link>http://www.cigital.com/justice-league-blog/2011/02/23/scrap-static-tools-just-fix-your-code/</link>
		<comments>http://www.cigital.com/justice-league-blog/2011/02/23/scrap-static-tools-just-fix-your-code/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 15:32:13 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Assurance]]></category>
		<category><![CDATA[BSIMM]]></category>
		<category><![CDATA[Security Features]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Software Security Touchpoints]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=541</guid>
		<description><![CDATA[Recently, Gary and I collaborated on an InformIT article on static analysis. you will find our observations regarding static analysis shared by others. It&#8217;s encouraging to note that Flash Sheridan observes many of the same difficulties and more formally treats them in his ISSRE &#8217;10 publication. It&#8217;s worth a read. A few commentators shared some [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, Gary and I collaborated on an <a href="http://www.informit.com/articles/article.aspx?p=1680863">InformIT article</a> on static analysis.</p>
<p>you will find our observations regarding static analysis shared by others. It&#8217;s encouraging to note that Flash Sheridan observes many of the same difficulties and more formally treats them in his <a href="http://pobox.com/~flash/Static_Analysis_Deployment_Pitfalls.pdf">ISSRE &#8217;10 publication</a>.  It&#8217;s worth a read. </p>
<p>A few commentators shared some decent points I wanted to address in a comment. I&#8217;m cross-posting my commentary here:</p>
<p>Comments treating the application of static tools as a distinct (and unfavorable) alternative to &#8220;fixing your SDLC&#8221; disappoint me, especially from the OWASP community (of which I am a contributing paid member). In fact, the community&#8217;s OpenSAMM project actively prescribes use of static analysis in not one but four (4) unique activities. So, both BSIMM and SAMM see static analysis as a part of fixing one&#8217;s SDL. **Note that in both models, all activities are not compulsory.</p>
<p>&#8220;Fix your code&#8221; is another red-herring alternative to static analysis. I believe static analysis inseparable from effective usage of a secure programming toolkit (such as OWASP&#8217;s ESAPI or an organization&#8217;s own toolkit)  because static analysis tools can meet the need for organizations to 1) detect consistent and thorough use of secure APIs (and non-use of dangerous ones) as well as 2) detect incorrect usage of such APIs (whether through broken call-order, un-paired functions, or other bugs). We shouldn&#8217;t forget, as Mr. Manico indicates, 3) running static tools on these security toolkits themselves finds problems that careful review may not otherwise have found. </p>
<p>So, secure SDL models indicate usage and we&#8211;as a community&#8211;see use in these tools in helping remind developers how to correctly build secure code. I think we have to agree static analysis tools find exploitable bugs (even though sometimes in an overly expensive or time-consuming way). So, I think we&#8217;re stuck with them as a &#8216;best practice&#8217; in the short term, however little some of us may like them. To dynamic vendors out there, I&#8217;d even go so far as saying, &#8220;Early adopters have begun to over-rely on static means to find problems more effectively/efficiently found with dynamic tools. Don&#8217;t worry, the ones I&#8217;m working with will begin to tilt the balance back using assessment data&#8221;.</p>
<p>I would like to put a face-and-name on the key notion that almost all commentators have thus-far touched: the static analysis tool that gets used by a majority of application developers out there, in the future, will likely not look like the ones we have today.  And that&#8217;s fine too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2011/02/23/scrap-static-tools-just-fix-your-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Increasing Static Visibility</title>
		<link>http://www.cigital.com/justice-league-blog/2011/02/06/increasing-static-visibility/</link>
		<comments>http://www.cigital.com/justice-league-blog/2011/02/06/increasing-static-visibility/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 22:00:22 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Assurance]]></category>
		<category><![CDATA[Defects, Bugs, and Flaws]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Software Security Touchpoints]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=487</guid>
		<description><![CDATA[Sometimes, people talk loosely about an important difference between static and dynamic analyzers. Static analyzers, they say, achieve 100% coverage. They may complain that dynamic tools struggle to get even double-digit statement coverage of an application under test. Dan Cornell wrote a blog post on static analysis coverage. He observed that while the static tool [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes, people talk loosely about an important difference between static and dynamic analyzers. Static analyzers, they say, achieve 100% coverage. They may complain that dynamic tools struggle to get even double-digit statement coverage of an application under test.   </p>
<p><a href="https://twitter.com/#!/danielcornell">Dan Cornell</a> wrote a <a href="http://denimgroup.posterous.com/coverage-is-key-static-analysis-can-only-scan">blog post </a>on static analysis coverage. He observed that while the static tool he used completed its scan, it didn&#8217;t find things it should. He implicitly referred to this as coverage. </p>
<p>I&#8217;ve often put things as follows:</p>
<blockquote><p>Your tool can&#8217;t find what it can&#8217;t see and it can&#8217;t see what it doesn&#8217;t parse.</p></blockquote>
<p>This got said often years back because at the time it was quite difficult to integrate tools effectively into a builds so that they would in fact &#8216;see&#8217; everything and successfully parse it (*1). We referred to this concept of how well we, as operators, had integrated as providing <strong>visibility</strong> into the code. These days, market leading tools don&#8217;t have nearly the problem they used to with finding the code they need to parse&#8230; or parsing that code successfully (*2).</p>
<p>These days, the frameworks developers use for persistence, object remoting, application navigation, and view display challenge visibility most. Tools see the code for your controller and parse it successfully but they don&#8217;t necessarily understand what it represents. This happens in almost every application I scan, even the painfully simple ones. </p>
<p>We couldn&#8217;t have our Consultants going out into the world armed with tools bearing only spotty visibility into applications so I wrote a utility <code>identifyEntryPoints</code> to find entry points on its own. We don&#8217;t want Consultants guessing at what their static analysis tool missed or popping the hood open to try to discern what it found and <em>not doing what they&#8217;re paid to do: <strong>assess the application</strong></em>, so I wrote another utility <code>entryPointCompare</code> to compare what the tool found vs. what I was able to find programmatically. See actual output below (I&#8217;ve replaced the static tool&#8217;s name with &#8216;TOOL XXX&#8217;):</p>
<pre style="margin: 0 auto;padding: 1em 3px;width: 90%;overflow: scroll;border: 1px solid #999">
Sanguine:demo jsteven$ /Users/jsteven/code/demo/working/engine/util/entrypointCompare.py
2011-02-06 09:07:08,158 INFO     bois_1.0        bin.execPythonRobot STARTING: /Users/jsteven/code/demo/working/engine/util/entrypointCompare.py
Factory 31, [TOOL XXX] 0
 TOOL XXX missed set(['Index', 'csrchat', 'accountsList', 'Transfer', 'editProfileFormBean', 'newAccountFormBean', 'fileList', 'Auth', 'newClientFormBean', 'qaFormBean', 'UserProfile', 'SetupProfileAction', 'uploadFile', 'VerifyAnswerAction', 'BeanEditProfileAction', 'existingClientFormBean', 'GetDocuments', 'ChatPoll', 'announcements', 'modifyDocument', 'BeanCreateAccountAction', 'ChangePasswordAction', 'VerifyClientAction', 'ChatSend', 'Help', 'fileUploader', 'BackOfficeAdmin', 'passwordFormBean', 'BeanCreateClientAction', 'action', 'Accounting'])
</pre>
<p>Here, I ran the test on Cigital&#8217;s own internal &#8220;Bank of Insecurities&#8221;, which is a simple Struts1 application. The utility&#8217;s output represents all the actions and forms that account for web-based input in their own respective ways. Sure looks like some pretty important stuff was missed in there huh? </p>
<p>The next step was to write a third program <code>registerEntryPoints</code> which would write rules for the missing entry/exit points as appropriate so that the beefy commercial static analysis tool could do what it does best. These utilities represent just some of the internal workings of Cigital&#8217;s <a href="http://www.cigital.com/solutions/esp/">ESP platform</a>. </p>
<p><strong><em>Yes, but my tool finds stuff all the time</strong></em><br />
Would a tool not find any findings without detecting entry points? Well, it <em>would</em> likely find potential vulnerability but only using more local syntactic analysis. Remember, &#8220;you can&#8217;t find what you can&#8217;t see&#8230;&#8221;</p>
<p><strong><em>I&#8217;m sensing a theme in your posts jOHN</strong></em><br />
OK, so, that&#8217;s two blog posts (Mr. Cornell and my own) complaining about what I refer to visibility. Now what? </p>
<p><strong><em>Spend time cataloging your chosen tool&#8217;s performance</em></strong><br />
Cigital experience indicates that as few as 10-13 reasonably chosen applications can serve as a representative sample for as many as 300 applications on the Java platform. When you pilot those 10-13 applications, conduct the following steps to avoid the visibility failures seen above in the portfolio as a whole:</p>
<ol>
<li>On-board the application using whatever tool interface gives the most feedback about missing artifacts (*3) </li>
<li>Explore scan logs for identified entry points</li>
<li>Manually explore the application&#8217;s deployment descriptors and critical configuration files</li>
<li>Document controller logic as framework default or developer extended</li>
<li>Identify key entities within the DAO/persistence framework</li>
</ol>
<p>When you&#8217;ve done that for 10-13 apps, our representative sample, stop and take stock of what you&#8217;ve collected. You&#8217;ll have created a very good list of items for which you&#8217;ll want to create custom rules. Different tools call the kind of rules you&#8217;ll create different things, but suffice it to say you&#8217;ll be writing rules to tell the tool that it&#8217;s:</p>
<ul>
<li>Entry: Taking input from untrusted web sources</li>
<li>Entry: Taking input from untrusted partner applications</li>
<li>Exit: Placing data in a untrusted view (browser, service repsonse, etc.)</li>
<li>Exit: Conducting CRUD operations on entity data</li>
</ul>
<p>The above list is by no means exhaustive. Indeed, you&#8217;ll want to look at data originating from the persistence tier and headed to the web (not listed above) but we often consider this as a second phase of customization. You&#8217;ll also want to begin considering data entry/exit from 2nd and 3rd party components within the applications being tests. Again, another good subsequent customization phase. </p>
<p><strong><em>Gosh, this sounds expensive</em></strong><br />
Yes; &#8216;well. Compared to simply running a static analysis tool using its IDE-based GUI, triaging results, and calling it quits this is darned expensive. However, it dramatically raises your visibility into an application&#8217;s vulnerability (you should also expect false-positive reduction). </p>
<p>Compare this to the potential difference in quality and depth of a manual, tool-assisted penetration test and an automated vulnerability scan. An engineer running AppScan costs much less than an expert penetration test and organizations have come to not only expect different results, but see these as two very different services. I predict that we&#8217;ll see a similar distinction between two services (automated and more expert-driven) in the static space in a few years. </p>
<p><em><strong>Leveraging Manual Efforts Across Assurance Activities</em></strong><br />
If your organization doesn&#8217;t conduct manual penetration testing and is unwilling to pay your engineers to properly on-board applications into its static analysis tool, then neither static nor dynamic analysis will benefit from high visibility into applications under test. The cost will look &#8220;high&#8221; and &#8220;extra&#8221; as well.</p>
<p>Conducting the kind of analysis described by this entry (targeting entry and exit points) can inform both static and dynamic analysis alike. Conduct this exercise for applications built with representative technology stacks. On the static front, write custom rules based on your work. On the dynamic side, furnish this work to your dynamic testers (even if they are external vendors) so that their exploration benefits from it. </p>
<p>(*1) &#8211; Coverity&#8217;s Prevent was always a notable exception and able to integrate with even challenging build environments without much pain.<br />
(*2) &#8211; Limitations still exist with complex (distributed) build systems, code-generation schemes, and even the more mundane JSP compilation process.<br />
(*3) &#8211; Ask if you need help here, last time I published tool details, vendors got cranky.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2011/02/06/increasing-static-visibility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>If it&#8217;s so hard why bother?</title>
		<link>http://www.cigital.com/justice-league-blog/2011/02/02/if-its-so-hard-why-bother/</link>
		<comments>http://www.cigital.com/justice-league-blog/2011/02/02/if-its-so-hard-why-bother/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 22:49:13 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Assurance]]></category>
		<category><![CDATA[Defects, Bugs, and Flaws]]></category>
		<category><![CDATA[Software Security]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=482</guid>
		<description><![CDATA[Recently, internal and external discussion hit on the topic of static tool comparison. The difficulty of this topic caused me to write up my thoughts as what became an InformIT article. This prompted some to respond, If selecting and adopting a tool is so hard, even for experts, why should I bother? Good question. The [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, internal and external discussion hit on the topic of static tool comparison. The difficulty of this topic caused me to write up my thoughts as what became <a href="http://www.informit.com/articles/article.aspx?p=1680863">an InformIT article</a>. This prompted some to respond,</p>
<blockquote><p>If selecting and adopting a tool is so hard, even for experts, why should I bother?</p></blockquote>
<p>Good question. The article was not written as indictment or defense of static analysis&#8211;it was a cautionary tale whose moral: &#8220;organizations can get wrapped around the wrong axle when selecting and adopting a tool&#8221; I believe in to the utmost. </p>
<p>If it is worth adopting static analysis, as I believe it is, then the question becomes: How do I avoid doing it poorly? I&#8217;ll start by revisiting some suggestions made in the article&#8217;s conclusion and continue.</p>
<p><strong>Seek Experience</strong><br />
Expert consulting can dramatically improve the speed and effectiveness of an organization&#8217;s definition of and scaling static analysis and SCR practices. But, you don&#8217;t need experts&#8217; help to successfully pick and adopt a tool.</p>
<p>Leverage communities you&#8217;re already amongst to absorb their experience. Reach out to:</p>
<ol>
<li>Your local OWASP chapter</li>
<li>Organizations within your vertical</li>
<li>Similarly sized/structured organizations within your geography</li>
</ol>
<p>Within the communities, others have likely already selected and adopted a tool. Though some will not share their selection or adoption experiences openly, others will. And, I&#8217;ve found that human nature can&#8217;t resist sharing at least _some_ aspects of a good war story. </p>
<p>War stories hint at underlying data more valuable than the particular selected tool: the aspects of adoption that posed the most challenge or required the most effort. Having your troops pointed in the right direction when fighting breaks out will benefit you more than making the better choice between equipping troops with a carbine or a rifle. <img src='http://www.cigital.com/justice-league-blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>During last year&#8217;s BSIMM conference in Annapolis, MD, I saw tremendous inter-organizational knowledge sharing on the static analysis front. Not only was I impressed, but as usual, I learned things. War stories? Those improved with volume imbibed.  </p>
<p><strong>Eschew Deep Scientific Comparison for Trial Experience</strong><br />
Unless you graduated with an advanced degree focused on static analysis, or spent the last ten years building/analyzing it, I don&#8217;t feel that a comparative study will be satisfying. Many have asked me, &#8220;With you experience&#8211;come-on&#8211;tell me&#8230; which is better, A or B?&#8221; Individuals asking me almost always hear a variant of the following candor: </p>
<blockquote><p>Comparing the analysis engines of the two market leaders is a lot like wondering about the Audi S4 vs. the BMW M3. Both take a comparable approach to their flag-ship consumer performance car: both switch between ~3.xL six-cylinder blown engines or ~4.xL naturally-aspirated  V8s. In the end, both gobble premium fuel and get to 62mph in 4.x seconds. Both are fine pieces of engineering and each has its own religious following. </p>
<p>Like the previous advice, knowing how to drive it and where the car&#8217;s limits are likely provides lower track times than the selection of one car over the other for the average-to-enthusiast driver.  It simply doesn&#8217;t matter whether the trappings of boost pressure produced by the S4&#8242;s supercharger beat out the direct-injection, independent throttles of the M&#8217;s high-revving V8 (*1)</p></blockquote>
<p>I&#8217;ve digressed a bit too far, haven&#8217;t I? Don&#8217;t do the same with your static tool <img src='http://www.cigital.com/justice-league-blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<ul>
<li>Use a representative sample of <strong>your</strong> applications to observe a static analysis tool&#8217;s performance, not a contrived test suite.</li>
<li>Consider the tool&#8217;s findings relative to pen-testing findings on the same app. </li>
<ul>
<li>Did new and interesting findings result?</li>
<li>Did pen-testing findings found by the static tool provide adequate root-cause analysis and remediation advice to fix problems earlier?</li>
</ul>
<li>How long did it take to on-board an app? How will this scale to your portfolio of apps?</li>
<li>How long did it take to triage the results? How will this scale?</li>
</ul>
<p>As your trial encounters problems, make explicit note of them. As you move from 3-10 apps to the portfolio as a whole, can your organization withstand stresses at scale? If not, you may want to switch tools or approaches. </p>
<p>I&#8217;ve seen security managers I respect get incredibly far without any consulting help just by taking an iterative approach and asking questions like those listed above. </p>
<p><strong>Worry about what you can control</strong><br />
You control your organization&#8217;s staff size, skill set, scanning policy, and infrastructure. You do <strong>not</strong> control the architecture, implementation, or bugs associated with the static analysis tool you buy and deploy. </p>
<p>So, as you talk to others about their experiences selecting and adopting a tool&#8230; as you conduct trials with a selected tool&#8230; and as you plan a larger roll-out at scale of your static practices, think about strengths and weaknesses in a chosen tool <strong>not</strong> in terms of how its competition might perform relatively but in terms of whether or not they <em>compliment</em> or <em>expose</em> your organization&#8217;s staff-based, skill, policy, and infrastructure weaknesses (or play to its strengths in those same areas).</p>
<p>And finally, don&#8217;t be afraid to ask for help.<br />
-jOHN </p>
<p> (*1) &#8211; In the interest of full-disclosure, I cast my lot with the 2011 M3 over its Audi competition despite BMW&#8217;s &#8216;heretic&#8217; departure from their I6 engine architecture heritage in the 3-series. I can make no such clear claim to my allegiance on the static front.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2011/02/02/if-its-so-hard-why-bother/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gartner and Static Analysis</title>
		<link>http://www.cigital.com/justice-league-blog/2009/02/19/gartner-and-static-analysis/</link>
		<comments>http://www.cigital.com/justice-league-blog/2009/02/19/gartner-and-static-analysis/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 22:39:30 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Assurance]]></category>
		<category><![CDATA[Defects, Bugs, and Flaws]]></category>
		<category><![CDATA[Software Security]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=132</guid>
		<description><![CDATA[James McGovern recently wrote a post on Gartner&#8217;s static analysis (SA) report. Among other things, he lamented the lack of actionable guidance within the report. A lack of implementation guidance doesn&#8217;t shock me from Gartner, I can&#8217;t say I expect that from them. I can help James and community out by giving some of that [...]]]></description>
			<content:encoded><![CDATA[<p>James McGovern recently <a href="http://duckdown.blogspot.com/2009/02/gartner-releases-paper-on-static.html">wrote a post on Gartner&#8217;s static analysis (SA) report</a>. Among other things, he lamented the lack of actionable guidance within the report. A lack of implementation guidance doesn&#8217;t shock me from Gartner, I can&#8217;t say  I expect that from them. </p>
<p>I can help James and community out by giving some of that guidance myself. I&#8217;ll try to do so in a tool-independent way. This topic deserves more than a &#8220;blog entry&#8221; format (admitting Cigital&#8217;s propensity for longer entries <img src='http://www.cigital.com/justice-league-blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ) so if people want more information on the topic, they can ping me. </p>
<p>In essence, you want to know the following about static analysis tools:</p>
<ol>
<li> Who is going to run it (how will owners shepherd it)?</li>
<li> How much effort is it going to take to run (what budget will I need to support it)?</li>
<li> When do I run it and how often (Where does it fit within my SDL?)</li>
<li> What it&#8217;s going to find (How will the results enter/impact my organization)?</li>
<li> What won&#8217;t it find (How does it play with the rest of the assurance ecosystem)? </li>
</ol>
<p><strong>[Market Adoption and Making Your Choice]</strong><br />
Gartner seems underwhelmed by Microsoft&#8217;s ability to effect the commercial static analysis market. Cigital has always believed these technologies would make great features of a compiler/IDE and so we&#8217;re also disappointed. They&#8217;ve got great technologies but don&#8217;t exploit them commercially. I still like their freely available <a href="http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&amp;displaylang=en">FXCop</a> but this opinion isn&#8217;t popular. Perhaps that&#8217;s because I see a lot of value to FXCop as a unit testing framework that enables security test and other people are comparing it to glossy commercial tools like Fortify and Ounce run by security analysts in a very hands-off fashion. Who&#8217;s considering the tool really does make a huge difference in how it will fare.</p>
<p>From my perspective, the most successful SA tool vendors have made answering  the &#8220;who should adopt the tool&#8221; question more difficult as they&#8217;ve waffled on licensing models. By the seat? By the core? By the KLoC? I&#8217;ve gotten complaints from prospective tool buyers indicating that a leading tool vendor&#8217;s price was 10X another vendor&#8217;s. Before you ask &#8220;Which one?&#8221;: I&#8217;ve heard specific examples in opposite directions! </p>
<p>Certain tools will look better to different potential buyers. Experience has shown positive response to Coverity&#8217;s C/C++ results from developers. Application security groups like Fortify and Ounce&#8217;s products, and several years ago, I saw QA Managers in two very different firms go ga-ga over Klockwork&#8217;s tool. I attribute people&#8217;s impressions not to a product vendor focusing on quality or security but to how closely the tool vendor&#8217;s conception of how roles interface with their tools throughout the vulnerability management and software development life cycles matches the organization&#8217;s own structure. Up until a few years ago I don&#8217;t believe SA vendors had fully conceived the &#8220;developer&#8221;, &#8220;analyst&#8221;, &#8220;security manager&#8221; roles in their products. Ounce was the one exception: they&#8217;ve always staunchly believed themselves to be principally a Security Analyst&#8217;s tool. Some vendors attempted to unify roles into use of a single interface while others attempted to split the product up into different configurations for each. This created confusion and friction between some adopting organizations and the tool vendor&#8217;s license model.</p>
<p>In the end you want SA tools to affect as many developers as possible and to get low-latency scan results as early in software&#8217;s life cycle as possible. However, having successfully deployed tools a variety of ways, I&#8217;m convinced central deployment is the way to go.  Application Security should run the tool. This will help manage rule/configuration update, as well as central measurement collection, risk management, and issue tracking. How do we get low-latency and early-lifecycle centrally? Treat the tool as a service. More on that later.</p>
<p>Notable exceptions to the central deployment model include business units possessing one or more of the following characteristics: </p>
<ul>
<li>Acquisitions of previously successful, culturally-independent companies</li>
<li>High-quality product development teams</li>
<li>Fundamentally different SDL, development platform, language, and toolkits</li>
</ul>
<p>For in-unit deployment one can &#8220;run locally&#8221; but must &#8220;report centrally&#8221; supporting security goals involving measurement and risk management. And, let&#8217;s be clear: if a business unit has a wicked-good continuous integration/build-management group, they-by all means-should be tapped to integrate with the SA service. Cigital and its clients have had success in integrating both the front (code submission) and back-end (bug/issue tracking) with Fortify and a variety of open source build/CI/bug-tracking products.  This maintains a central model, but reduces latency dramatically.</p>
<p><strong>[How Much Effort]</strong><br />
I&#8217;m sorely disappointed in the honesty of tool vendor sales-folk regarding level of effort. One of my first analogies for SA tools is this: Did your company buy Mercury products for load and performance testing? Think of your SA tool like Mercury&#8211;you&#8217;ll need at least as much money to deploy and implement the tool organization-wide as the licenses cost you. Sorry.</p>
<p>Organizations with more than 2-300 developers should plan on the following:</p>
<ul>
<li>3-4 man weeks to do initial tuning and pilot implementation</li>
<li>4-16 man hours / large application to integrate with the static analysis tool and assure appropriate configuration</li>
<li>4-8 man hours / 50-100KLoC (language-/complexity-dependent) to triage results on a new-application scan</li>
<li>1 person / year as tool shepherd (app integration, custom-rule creation, rule-pack maintenance and release, support)</li>
</ul>
<p>Organizations get into trouble when their SA tool enjoys broad acceptance by the organization before they effectively manage the submission and results triage/documentation process. My data indicates code submission can burn 8-24mhrs / application if security groups don&#8217;t &#8216;remember&#8217; (or automate) the submission and scan setup process. Security groups doing scans centrally and hand-writing code review results can waste another 16hrs documenting their findings / application. </p>
<p>&#8230;think about it: if your organization allots a week / tool-assisted code review and wastes 24 hours getting the tool&#8217;s first result set and 16hrs documenting findings&#8230; that only left 10 hrs to actually review the code! Since I believe that 4-8 hrs / 50-100KLoC is necessary to triage, you can imagine how deep I think such code reviews are <img src='http://www.cigital.com/justice-league-blog/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' />  At Cigital, we&#8217;ve got dramatic benefits to depth by decreasing cost of submission and reporting. This is key to scaling SA efforts. Those adopting tools will feel overwhelmed if they don&#8217;t plan to solve submission and reporting problems before wider roll-out.</p>
<p><strong>[How Often]</strong><br />
As often as possible. If you&#8217;ve got a Continuous Integration initiative (CI), engage those folk. If you deploy your tool purely centrally, plan to scan each high-risk application at least once / release. No, to my knowledge, there isn&#8217;t a good answer to the &#8220;can these tools do incremental (partial) scans&#8221;. You should always keep old results around though, as they&#8217;ll (along with other measures) help you understand whether more or less vulnerabilities are being caught during each scan. Remember though, every time you add a rule to the scan, your vulnerability-finding bar just moved and your metrics might be thrown off.</p>
<p>Ounce, Fortify, and Klocwork seem pretty good about determining whether or not they&#8217;ve found a particular issue in a previous scan or not. This includes situations where code blocks move around a bit. This means that running regression scans to determine whether or not an issue has been fixed is viable. I can&#8217;t comment on Coverity&#8217;s capabilities here. </p>
<p><strong>[What's it going to find]</strong><br />
I&#8217;m impressed that Fortify has published its <a href="http://www.fortify.com/vulncat/en/vulncat/index.html">vulnerability taxonomy</a> and a bit shocked that others haven&#8217;t produced as public a resource. I&#8217;m excited too that vendors have agreed to comply with <a href="http://cwe.mitre.org/">CWE</a> labels when they report findings. I will say what I always do on this topic though: test the tool on your own code though. You simply don&#8217;t know what it will find until you throw all your idiosyncratic build, language, toolkit, and platform nonsense at the particular tool you&#8217;ve selected.  </p>
<p><strong>[What won't it find]</strong><br />
I&#8217;m continually shocked as to how much one can find by running tool Y after tool X on the same piece of code (replace X and Y as you see fit). As I&#8217;ve written time-and-time-again, the corner cases and exceptions missed by each engine are baffling. Let me put things in perspective for you: three of my clients have reported that their SA tool deployment find 17, 33, and 50% of the total number of issues found by assessment efforts respectively. If these percentages hold for your organization, inside a coding bug realm then your job is at best 50% done having run the tool and triaged its results. </p>
<p>Considering that Microsoft and Cigital believe that &#8220;bugs&#8221; account for only 50% of the vulnerability space, that leaves you unaware of 75% of your application&#8217;s vulnerability at the end of triage. As I always say, &#8220;use the tool to facilitate code review and increase a reviewer&#8217;s understanding of the code&#8211;not as a code reviewer that finds bugs automatically.&#8221;</p>
<p>Good luck out there, I&#8217;d love to hear about your particular experiences.<br />
-jOHN</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2009/02/19/gartner-and-static-analysis/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Let the posturing begin&#8230;</title>
		<link>http://www.cigital.com/justice-league-blog/2009/01/22/let-the-posturing-begin/</link>
		<comments>http://www.cigital.com/justice-league-blog/2009/01/22/let-the-posturing-begin/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 02:30:55 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Assurance]]></category>
		<category><![CDATA[Software Security]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=115</guid>
		<description><![CDATA[Myself and others have been getting Webinar invites from IBM&#8217;s developerworks regarding Rational&#8217;s AppScan Developer Edition. This is of course part of the re-launch of the re-tooled AppScan product. It now includes a set of analysis types, some static and some dynamic. They&#8217;ve got fancy new names for subsets of each, some hair splitting to [...]]]></description>
			<content:encoded><![CDATA[<p>Myself and others have been getting Webinar invites from IBM&#8217;s developerworks regarding<a href="http://www-01.ibm.com/software/awdtools/appscan/"> Rational&#8217;s AppScan</a> Developer Edition. </p>
<p>This is of course part of the re-launch of the re-tooled AppScan product.  It now includes a set of analysis types, some static and some dynamic. They&#8217;ve got fancy new names for subsets of each, some hair splitting to my ear and I&#8217;ve been reading/writing on this topic for 10 years.</p>
<p>The market for static analysis is plumping nicely year over year. Static analysis (SA) vendors, such as <a href="http://www.fortify.com/">Fortify</a>, are one-or-two revisions into producing <a href="http://www.fortify.com/products/detect/in_testing.jsp">dynamic analysis</a> tools and suites that leverage <a href="http://www.fortify.com/products/detect/in_production.jsp">hybrid approaches</a>. With the big dynamic analysis tools controlled by IBM and HP a certain amount of this cross-over (and much more I predict) was inevitable.</p>
<p>It was also inevitable that that dynamic shops would take shots at the SA space. The dynamic guys got shot up pretty bad as their tools&#8211;sold as application security&#8217;s first &#8216;silver bullet&#8217;&#8211;begun to meet with resistance on how much manual effort was still required and on how many false positives and/or missed vulnerabilities remained. Static analysis swept in promising a better solution. &#8220;Look at the source code&#8221;, they smiled, &#8220;and you can be more complete and accurate than if you just poke the application from the outside.&#8221; Well, now it&#8217;s SA&#8217;s turn in the tank and the dynamic shops are enjoying the reversal.</p>
<p>But, in a hybrid world&#8211;where the major tool vendors offer both static and dynamic tooling this is technically absurd. AppScan&#8217;s explanation on &#8220;<a href="http://www.ibm.com/developerworks/rational/library/08/0916_podjarny/#7.2.The%20solution:%20string%20analysis|outline">String Analysis</a>&#8221; is particularly absurd. They&#8217;ve chosen to attack the effectiveness of static analysis with their &#8216;solution&#8217;, a static analysis technique.  </p>
<p>It&#8217;s true that both Fortify and <a href="http://www.ouncelabs.com/">Ounce</a> principally find SQL-injections through data flow techniques that propagate &#8216;taint&#8217; and rely on tagging source, sink, and cleansing logic at the resolution of function calls. But I can say with authority that both tools model the potential values of strings as they propagate their data flow analysis as well. AppScan&#8217;s innovation isn&#8217;t so innovative. </p>
<p>Yes both SA tools, in my opinion, leave a bit to be desired in the core products&#8217; support for what aspects of string propagation and manipulation they can follow. I won&#8217;t get into detail, but I advise security managers that it&#8217;s worth it to understand where the tool will fail you in this regard. </p>
<p><a href="http://www.coverity.com/">Coverity</a> and the now defunct <a href="http://www.securitysoftwarezone.com/codeassure-4-0-identify-asses-and-remediate-software-vulnerabilities-in-applications-review180-7.html">CodeAssure</a> did an exceptionally good job modeling string values throughout code&#8217;s &#8216;speculative execution&#8217;, as part of their static analysis. When I tested these tools, they surprised me in both what they were able to find and what other tools&#8217; false positives they left out of reports. Alas, these two don&#8217;t help today&#8217;s security manager much if they&#8217;re focusing on Java EE or .NET web applications. CodeAssure is gone and Coverity&#8217;s product has (in my opinion) limited language support outside C/C++ (though, again, I can not stress enough how positive my experience with it in C/C++ has been).</p>
<p>The dynamic shops had to level the playing field. But, as near as I can tell, the current situation is this:</p>
<ul>
<li>The major vendors believe there&#8217;s benefit to static and dynamic analysis</li>
<li>There&#8217;s a lot of room for technical improvement in the market leaders&#8217; SA products, with respect to modeling</li>
<li>The future&#8217;s tool will leverage static and dynamic techniques, because each is suited for find a particular class of problems well.</li>
</ul>
<p>You, as a security manager, will still need to sift through the marketectures and promises and figure out which tool works best on the kind of code your organization builds/buys. A major component of this will be how customizable the tool is.</p>
<p>Over-reliance on ANY automated tools (static or dynamic) leaves you with un-found vulnerabilities and a false sense of security. Cigital&#8217;s assessment services rely on these tools for speed and scale, and so we&#8217;ve taken great pains to understand where their modeling bends and where it breaks. In our own practice, we augment static techniques with dynamic tests and have even begun writing some next-generation static techniques to counter these limitations. We&#8217;ve spent hundreds of hours helping many many clients wring more out of their preferred suite of tools with the same understanding: opting instead for less invasive customization and tuning. </p>
<p>The bottom line is (and I&#8217;ve been saying this since at least &#8217;03 now), there are strengths to each tool and each type of analysis. NONE will get you to the assessment finish line alone. Anyone who tells you otherwise is sellin&#8217; you a load.</p>
<p>Let the posturing begin.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2009/01/22/let-the-posturing-begin/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>What Measures do Software Vendors Use for Software Assurance?</title>
		<link>http://www.cigital.com/justice-league-blog/2008/10/06/what-measures-do-software-vendors-use-for-software-assurance/</link>
		<comments>http://www.cigital.com/justice-league-blog/2008/10/06/what-measures-do-software-vendors-use-for-software-assurance/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 18:04:09 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
				<category><![CDATA[Assurance]]></category>
		<category><![CDATA[Enterprise Software Security]]></category>
		<category><![CDATA[Software Security]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/2008/10/06/what-measures-do-software-vendors-use-for-software-assurance/</guid>
		<description><![CDATA[My last project for my former employer (Software AG) was a study of what software vendors do to achieve software assurance. The goal of the study was to see whether we (Software AG) were at, above, or below the norm, and to adjust investments in assurance accordingly. All but one of the vendors who participated [...]]]></description>
			<content:encoded><![CDATA[<p>My last project for my former employer (Software AG) was a study of what software vendors do to achieve software assurance.  The goal of the study was to see whether we (Software AG) were at, above, or below the norm, and to adjust investments in assurance accordingly.  All but one of the vendors who participated are household names &#8211; these weren&#8217;t mom &amp; pop shops, but major multi-national ISVs, most of them with sales of a billion dollars a year or more.</p>
<p>I presented a brief summary of the study results at the recent &#8220;<a href="http://www.sei.cmu.edu/community/assurance.html">Making the Business Case for Software Assurance</a>&#8221; workshop hosted by Carnegie Mellon&#8217;s Software Engineering Institute, and sponsored by the US Department of Homeland Security.  I&#8217;ll also be presenting an even briefer summary of the results at the <a href="http://www.acsac.org">24th Annual Computer Security Applications Conference</a> in December.</p>
<p>In my new role at Cigital, I&#8217;m hoping to be able to expand the survey beyond software vendors into e-commerce vendors, embedded software suppliers, financial institutions, etc., as well as to systematize the survey so it can be done by filling out a web form instead of as an interview.  I welcome your suggestions as to how to make this project more relevant to vendors and software purchasers &#8211; and also welcome your participation in the survey, as well as suggestions on how to fund the ongoing work!</p>
<p>And finally, thanks to the (anonymous) vendors who participated in the first phase of the project.  While I can&#8217;t thank them by name, I very much appreciate their input.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2008/10/06/what-measures-do-software-vendors-use-for-software-assurance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Open Source</title>
		<link>http://www.cigital.com/justice-league-blog/2008/01/09/on-open-source/</link>
		<comments>http://www.cigital.com/justice-league-blog/2008/01/09/on-open-source/#comments</comments>
		<pubDate>Wed, 09 Jan 2008 17:00:32 +0000</pubDate>
		<dc:creator>gem</dc:creator>
				<category><![CDATA[Assurance]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Software Security Touchpoints]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/2008/01/09/on-open-source/</guid>
		<description><![CDATA[There has been a recent flurry of activity regarding security assurance on a hush-hush open source mailing list I lurk on. The debate recently has to do with formal methods versus code scanning&#8230; apples and oranges in my view. However, there&#8217;s a new flurry of press over Coverity&#8217;s use of their tool to analyze well-known [...]]]></description>
			<content:encoded><![CDATA[<p>There has been a recent flurry of activity regarding security assurance on a hush-hush open source mailing list I lurk on.  The debate recently has to do with formal methods versus code scanning&#8230; apples and oranges in my view.  However, there&#8217;s a new flurry of press over Coverity&#8217;s use of their tool to analyze well-known globs of open source.  (One poster suggested that passing a scan like this with flying colors means security has been attained&#8230; argh!)</p>
<p>Some pointers:</p>
<blockquote><p>
<em>From <a href="http://slashdot.org/article.pl?sid=08/01/09/0027229">Slashdot</a></em><br />
Posted by: kdawson, on 2008-01-09 01:20:00</p>
<p>Stony Stevenson alerts us to a US Department of Homeland Security program in which subcontractors have been examining FOSS source code for security vulnerabilities. InformationWeek.com takes a glass-half-empty approach to reporting the story, saying that for FOSS code [1]on average 1 line in 1000 contains a security bug. From the article: &#8216;A total of 7,826 open source project defects have been fixed through the Homeland Security review, or one every two hours since it was launched in 2006&#8230;&#8217; ZDNet Australia prefers to emphasize those FOSS projects that [2]fixed every reported bug, thus achieving a clean bill of health according to DHS. These include PHP, Perl, Python, Postfix, and Samba.
</p></blockquote>
<p>Firstly, I am a big fan of code scanning and believe that use of static analysis tools should <em>always</em> be one of the basic security steps integrated into every SDLC.  However, there are huge problems with declaring security after passing a code scan with an arbitrary tool and a random set of rules.  The most obvious issue is that security defects come in two flavors&#8212;bugs and flaws&#8212;each accounting for roughly 50% of defects in practice.  Code scanning tools can only find bugs.  Here are two stupid examples for effect: can a code scanning tool determine that no user authentication was performed?  How about whether or not a playback attack will work?</p>
<p>The second most obvious problem is that the list of rules enforced by a static analysis engine can never be complete.  Discussion about this is left as an exercise for the reader.</p>
<p>Architectural risk analysis (crazily called &#8220;threat modeling&#8221; by Microsofties) is, like code scanning, an essential software security best practice.  Formal methods are one way to go about attacking the flaw problem.  In the US we rely on flakier heuristic-based approaches such as the one we use at Cigital.  But no matter the approach, we can&#8217;t ignore the architecture.</p>
<p>References</p>
<ol>
<li><a href="http://www.informationweek.com/story/showArticle.jhtml?articleID=205600229&amp;cid=RSSfeed_IWK_All">http://www.informationweek.com/story/showArticle.jhtml?articleID=205600229&amp;cid=RSSfeed_IWK_All</a></li>
<li><a href="http://www.zdnet.com.au/news/security/soa/11-open-source-projects-pass-security-health-check/0,130061744,339284949,00.htm">http://www.zdnet.com.au/news/security/soa/11-open-source-projects-pass-security-health-check/0,130061744,339284949,00.htm</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2008/01/09/on-open-source/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

