<?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; Software Testing</title>
	<atom:link href="http://www.cigital.com/justice-league-blog/category/software-testing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cigital.com/justice-league-blog</link>
	<description></description>
	<lastBuildDate>Fri, 04 May 2012 18:54:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<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>Automate security tests and build security in from day one</title>
		<link>http://www.cigital.com/justice-league-blog/2011/04/12/automate-security-tests-and-build-security-in-from-day-one/</link>
		<comments>http://www.cigital.com/justice-league-blog/2011/04/12/automate-security-tests-and-build-security-in-from-day-one/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 14:37:44 +0000</pubDate>
		<dc:creator>gem</dc:creator>
				<category><![CDATA[BSIMM]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=763</guid>
		<description><![CDATA[Or: The ugly baby phenomenon and why you should not focus on false positives Dr. Markus Schumacher has served as CEO and Co-Founder of Virtual Forge GmbH since 2006. The company specializes in the security of SAP applications. Dr. Schumacher was previously a representative of the Fraunhofer Institute for Secure Information Technology (SIT) and worked [...]]]></description>
			<content:encoded><![CDATA[<p><strong><em>Or: The ugly baby phenomenon and why you should not focus on false positives</em></strong></p>
<p><em>Dr. Markus Schumacher has served as CEO and Co-Founder of <a href="http://www.virtualforge.de/">Virtual Forge GmbH</a> since 2006. The company specializes in the security of SAP applications. Dr. Schumacher was previously a representative of the Fraunhofer Institute for Secure Information Technology (SIT) and worked at SAP as a Security Product Manager (NetWeaver). Focus topics were secure development, security testing, security response, product certification (Common Criteria) as well as awareness events for the development crew. Before SAP, Dr. Schumacher, was a member of the scientific staff at the IT Transfer Office (ITO), Department of Computer Science, Darmstadt University of Technology, where he managed projects for customers such as T-Systems Nova, Siemens AG, SAP Corporate Research, and Fujitsu Laboratories. Dr. Schumacher earned his doctorate in computer science field. He has published numerous articles and books (most recently: </em>Secure ABAP Programming<em> at SAP Press) and speaks regularly at international conferences.</em></p>
<p><img src="/justiceleague/images/schumacher.jpg" width="140" height="209" style="margin-left: 10px;float: right;border: 1px solid #999" /><em>Markus met with Gary during his latest stay in Germany. After talking about software security in certain nice places in Heidelberg, the idea came up to capture some insights about software security testing in an interview. Here’s the interview as recorded on Wednesday, April 6, 2011.</em></p>
<p><strong>Markus:</strong> Gary, we talk about software security today, in particular about finding bugs by thorough security testing. How should tests be conducted? Manually or with a tool?  And which approach is better? </p>
<p><strong>Gary:</strong> This is a little bit like comparing apples and oranges because both approaches can be very useful. But generally speaking, if you can automate a paticular test that means that you’ll be able to apply that test consistently in the future—maybe even across your entire code base.  So I’m a big fan of automating as much of testing as you can automate. </p>
<p>Security testing is good, but if people treat it as a ‘security meter’ that can lead to real problems. That is, confused people sometimes think that if they run automated tests and don’t find any problems that the software is free of bugs. But we both know that a result like this just means that you haven’t found anything interesting during a given test. You have to be very careful when you apply automated testing that you know what you are doing and that in the end  you know what the results are. </p>
<p>Does that make sense to you?</p>
<p><span id="more-763"></span></p>
<p><strong>Markus:</strong> That makes perfect sense.  You have observed the software security tools market for many years. We see black box scanning tools and code scanning tools out there today; what are the trends that you have observed?</p>
<p><strong>Gary:</strong> When it comes to software security, there are basically two kinds of automation. One kind does black box testing and requires that your software be run. We call that <em>dynamic testing</em>. The idea is to test your program automatically while it’s running by providing input and see if you can maliciously break it. There are such tools aimed at Web applications, IBM AppScan for example. The second type of tool is a <em>code scanning tool</em> that does a static analysis. A code scanning tool looks at your code instead of running your program. That is, it looks for bugs that are observable in the code itself. </p>
<p>Both of the two types of tools are the biggest sellers in the software security space today. What happened over the last few years is that the code scanning tools became a lot better and they’ve begun to find widespread use. In fact they accelerated past the black box testing tools in terms of adoption a year or two ago. The reason for that is that black box tools only work for Web applications (they work only over http) while the source code tools work for <em>any kind of software</em>. As you know, there are even specialty white box tools that look over particular languages—like the languages that are built into highly popular systems like SAP.  </p>
<p>The ABAP tool that you guys have built is a way of looking at your ABAP code to find bugs and produce security results. In my view it’s really better to focus as early in the lifecycle as you can to find bugs and any static analysis tool can really help to do that. Bottom line: here are many advantages using such static tools over and above dynamic tools.</p>
<p><strong>Markus:</strong> Because you build security in from day one.</p>
<p><strong>Gary:</strong> That’s part of the idea. Of course you have to think about your design as well. But we haven’t figured out how to automate looking for design flaws yet!</p>
<p><strong>Markus:</strong> Don’t write software – then you are good.</p>
<p><strong>Gary:</strong> &lt;laughs&gt; Sadly, that’s true.</p>
<p><strong>Markus:</strong> Code analysis tools are obviously a good choice.  But what are their limitations?</p>
<p><strong>Gary:</strong> There are a couple of things that are problematic. One is that people think that the tool will find all possible bugs and then fix the bugs for you. That can be an issue. The thing about these tools is mostly they help you finding possible vulnerabilities and then you have to be smart about determining whether what has been found is a real problem or not. But even more important than that, thinking about how to fix vulnerabilities is a serious problem. If current tools have a limitation it’s that they <em>don’t fix the code</em>, and certainly not automatically! So they are great at finding bugs but it’s up to you to fix them. If you just use these tools to find bugs, pile them up somewhere, and not fix them that doesn’t help security at all. </p>
<p>The other problem with these tools is that because they are doing static analysis they do have the tendency to sometimes find false positives—things that the tool thinks are a problem but it turns out when you think about data flow more carefully (or whatever) they are not a problem. Plenty of people worry about the false positives problem, but I have seen the number of false positives that static tools produce over the last 5 or 7 years drop dramatically. It’s in an acceptable range now I believe.</p>
<p><strong>Markus:</strong> I have talked to different clients about false positives. One of them said, ‘tools find issues – some might be false positives, others not – we review them and fix the bugs.’ Others say, ‘for many reasons – I can’t have any false positives even if the tool is sometimes finding real bugs.’ For them it’s better to not see a real bug in favor of a low false positive rate. What would you say to the latter?</p>
<p><strong>Gary:</strong>  “I’m with the first guys. It’s much better to have a few false positives and find all of your security problems than it is to have no false positives and miss real security problems. This is because security problems are serious and they need to get fixed! </p>
<p>The notion of a code scanning tool sprang from a whole bunch of experience with manual code reviews—digging through code by hand and looking for security bugs. We were doing a lot of that in 1998 and 1999 and we began to figure out a ways to automate parts of that. We created the first code scanning tool for security called <a href="http://www.cigital.com/its4/">ITS4</a>. Things have come a very long way since then, but remember that ITS4 was just using grep-like technology looking for very simple patterns and sometimes you can get simple patterns completely wrong.  </p>
<p>Things have improved a huge amount since those days. I think when people talk about false positives in some sense they are using thinking that is about 10 years old (from the ITS4 days).  Today the false positive rate has dropped enough that using these tools is something you really just have to do.</p>
<p><strong>Markus:</strong> Our strategy of lowering the false positive rate is to apply data-flow analysis consistently, doing many sanity checks like type checking, looking for authority checks, etc. That way we classify the findings – there are certain findings where we are pretty sure will always find real bugs while others are probably not as certain and get a lower rating …</p>
<p><strong>Gary:</strong> I think that’s a very good idea.</p>
<p><strong>Markus:</strong> … Is this approach a good strategy?  That is, starting with the findings that have a very high rating first?</p>
<p><strong>Gary:</strong> Yes. </p>
<p>Everyone has a limited amount of time to fix their code. The most important thing is not finding the bugs, but fixing them as I have told you before. If you have a way of helping people prioritize the fixing so that they are fixing stuff that really needs to be fixed, that’s fantastic! </p>
<p>What we see in the field is a lot of people find a lot of bugs but not enough people do enough to fix the bugs. There’s not enough remediation going on.  Let&#8217;s be clear: it does no good to find bugs if you are not going to fix them. And so I think a focus on telling people ‘this is a bug for sure, and you should fix this one because you won’t waste any of your valuable time’ is a very, very clever strategy.</p>
<p><strong>Markus:</strong> We know people who say that such ‘very high’ findings are very likely true positives and consider all others with a lower rating as a false positive because they need to invest too much time on finding out whether they are bugs or not. Accordingly they claim that the false positive rate is too high and a tool might be useless because it doesn’t deliver 100% hits only. Why is it not a good idea to shoot at this false positive thing only?</p>
<p><strong>Gary:</strong> If these people are fixing all of the bugs that you are telling them are bugs for sure and have extra time left over, then they can worry about that problem!  &lt;laughs&gt;  But so far I haven’t seen anybody who has the luxury of that much time. That means their whole point is sort of a moot point. The answer should be: fix the ones that you know are a problem, and when you are done with that we’ll talk.</p>
<p><strong>Markus:</strong> Good answer, next question. </p>
<p>Many people get frustrated when they start security testing because of the high amount of findings as result of initial scans. How should people approach this?</p>
<p><strong>Gary:</strong> The best way to do this is to turn the things that you are looking for on and off inside the tool. When you try to get people to adopt a tool for the first time, it’s better to have the tool looking for certain categories of bugs (I recommend this be as few as possible). The idea is to make sure that the tool doesn’t just overwhelm the user with a big ‘red screen of death.’  </p>
<p>There are a couple of clever ways of doing this. We help many companies adopting such tools wisely throughout their whole development team. One very good trick is to tie the tools to code that the users want to use already. So you have a middleware framework and you want people to use that, then you build some enforcement rules to talk about the use of that particular code, and you focus on that instead of focusing on looking for all bugs at all time throughout the entire code base. </p>
<p>Another way of putting this notion is: tighten the focus of the tool so that it isn’t overwhelming at first, and then loosen that focus up, add more rules, add more kinds of bugs you are looking for over time. Start small. As the code base improves and people get better in using the tool, do more.</p>
<p><strong>Markus:</strong> We have a customer following a similar strategy. They did an initial scan with all checks turned on. Then they identified all checks that lead to no findings and made those tests mandatory. Meaning: they are good in this area and they won’t get worse. And then they tightened the focus as you have described it. Like it?</p>
<p><strong>Gary:</strong> That’s a good idea, because it’s sort of belts and suspenders approach (so to speak). The idea of working for certain categories of bugs should also be complemented by understanding your code base. If you run a bunch of static analyses, you should amass enough data to determine what your number one bug is. Note that your number one bug may different than somebody else’s number one bug! Then you can set out on a bug eradication mission based on real data from a tool run over your code base, and that’s a very helpful thing. </p>
<p>Remember, if you are finding bugs in your code that means somebody is typing in those bugs— somebody actually wrote that bug. The best thing is to get to that person and teach them not to do it that way. The closer you can get this to the developer’s head (and fingers) the better off you’ll be in my experience.</p>
<p><strong>Markus:</strong> But that could be the reason for the resistance.  Somebody blames the bug writer for their bad code, their (broken) piece of work. And probably companies do not have a well-developed way of dealing with accidental mistakes.</p>
<p><strong>Gary:</strong> That’s right. One problem in security that we have is that developers like their code and treat it like it’s their baby.  Then you come along and say, ‘That’s the ugliest baby I’ve ever seen!’  And that makes the developers angry. You really shouldn’t call somebody’s baby ugly, but in security we run around doing that all the time. </p>
<p>We have to understand that people are very sensitive about their code, and we have to be gentle about security problems and teach them that it’s in everybody’s best interest to find and fix these things. The good news is that most developers actually really want to build good stuff. If you say, ‘This is for helping you build better stuff. It’s not something to smack you around and make you look like an idiot, in fact it makes you build better code,’ that fits into the development culture way better.</p>
<p><strong>Markus:</strong> Stay away from the ugly-baby guys and support the better developer.  I like that. </p>
<p>Another thought on false positives. Sometimes people say that a certain finding is a false positive because there’s no data path to the vulnerability or the code touches non-critical data only.  Think of a SQL injection in code that handles temporary data only. A tool cannot make a good decision here. What’s you view on this?</p>
<p><strong>Gary:</strong> The answer is a bit convoluted.  Because of code reuse and because people will repurpose code in surprising ways, it’s always better to fix those problems. Even if you think that in a particular situation a particular vulnerability might not lead to a security issue. Because odds are high that someone will just cut-and-paste it and use it somewhere else. And then it will be a real problem.</p>
<p><strong>Markus:</strong> Cut-and-paste is one thing, another is code that is part of an API, function, or report, that might be used by someone else in a different context.</p>
<p><strong>Gary:</strong> Absolutely right. That happens an awful lot. </p>
<p>It’s the same as putting a watchdog in code. I have seen people put a watchdog way at the beginning of code looking for certain kinds of input because there’s a vulnerability way down low in the code and they say, ‘if we strip the input so it never gets down there everything will be fine.’ But then later somebody comes along and creates a new execution path to the same vulnerability with the watchdog so far up there that the flow is no longer controlled by the watchdog anymore.  Then you’re screwed. That’s sort of the same idea.  Bottom line: if you have a bug in your code, you should fix it.</p>
<p><strong>Markus:</strong> Period – nothing to add here, just fix it. </p>
<p>Final question.  You’re currently work on BSIMM3.  What can we expect in the new version?</p>
<p><strong>Gary:</strong> We have continued to grow the size of the BSIMM study. We now have now 33 firms in the study and we have done 60 measurements.  </p>
<p>What happened last year was kind of surprising. Many of the firms that were already participating in the BSIMM asked us to measure their major divisions. For example we did six measurements inside of Bank of America. If you know that the Bank of America includes Merrill Lynch, Countrywide, and a bunch of other large financial organizations, that’s not such a big surprise. That meant we spent an awful lot of time doing BSIMM analysis inside firms that were already in the BSIMM. </p>
<p>So we have grown the dataset considerably—doubled it, in fact, since BSIMM2. </p>
<p>The other thing that we have started doing is re-measuring firms that we have already measured in the past. We have measured 10 firms already again. So now we have data that show what happens to a software security initiative over time,  and we can talk about what changed between the first and the second measurements.  That’s incredibly cool, very powerful data. </p>
<p>Our plan for BSIMM3 is to try to get up to 40 firms and then release the longitudinal data (that is, the data over time) and the new data set with 40 firms all at the same time. I’m hoping to do that in the early summer.   </p>
<p><strong>Markus:</strong> Is there hope? Are things getting better?</p>
<p><strong>Gary:</strong> Things are getting better. 15 years ago nobody really cared about software security. When Viega and I wrote <a href="http://www.amazon.com/Building-Secure-Software-Security-Problems/dp/020172152X/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1302543434&amp;sr=1-1"><em>Building Secure Software</em></a> everybody thought we were crazy. A lot has changed since then.  Now, developers are beginning to understand that what they do does have a clear impact on security.  And a lot of firms are realizing that their customers are expecting the code to be secure. Customers may not really be explicitly saying ‘this has to be secure’ but they do (implicitly) believe that it already is secure! So it’s really important that firms meet the implicit security expectations of their customers. A lot of firms are realizing that. </p>
<p>As a field we have made a huge amount of progress. The other thing that happened in the past 10 years is the rise of static analysis tools that actually work and can be adopted in large enterprises. And finally the BSIMM project is a relatively new venture—we have only been doing the study for a couple of years. The BSIMM is a scientific approach that relies on effective measurement of a firm and its peer group. That way you can compare and track what different many diverse firms are doing. That’s a very, very powerful thing.  So we built a community of like-minded firms who are all working very hard and building up software security and are making great progress. We figured out a way to measure that progress and show it in no-uncertain terms. That’s pretty cool.</p>
<p><strong>Markus:</strong> Agreed. And we continue supporting BSIMM by translating it to German. </p>
<p>Next time we will talk about our joint invention, the NoMoRed (No More Red traffic lights) tool that deletes all bugs by just clicking a button. &lt;laughs&gt; I’m looking forward to that. Thank you for your time today.</p>
<p><em>Transcribed in Heidelberg on April 6, 2011.</em></p>
<p><strong><em>Cast (in order of appearance)</em></strong></p>
<ul>
<li>Markus Schumacher, CEO of <a href="http://www.virtualforge.com/">Virtual Forge GmbH</a></li>
<li>Gary McGraw, CTO of <a href="http://www.cigital.com/">Cigital, Inc.</a></li>
<li>One Web application scanner: IBM AppScan</li>
<li>The <a href="http://www.codeprofilers.com/">ABAP tool that you guys have built</a></li>
<li>The first code scanning tool for security: <a href="http://www.cigital.com/its4/">its4</a> (it’s the software stupid)</li>
<li>The <a href="http://bsimm.com/">BSIMM</a></li>
<li><a href="http://www.buildingsecuresoftware.com/"><em>Building Secure Software</em></a>, Addison-Wesley Professional, 2001</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2011/04/12/automate-security-tests-and-build-security-in-from-day-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is Penetration Testing Security Testing?</title>
		<link>http://www.cigital.com/justice-league-blog/2008/04/09/is-penetration-testing-security-testing/</link>
		<comments>http://www.cigital.com/justice-league-blog/2008/04/09/is-penetration-testing-security-testing/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 14:47:52 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/2008/04/09/is-penetration-testing-security-testing/</guid>
		<description><![CDATA[Some people start &#8220;Security Testing&#8221; by buying and using a pen-test tool on project. Such tools uncover security vulnerabilities (though they seldom help with root cause analysis or even obtaining double-digit code coverage). These tools are degenerate, at best, in facilitating a security testing strategy. Why? Because, these tools are &#8220;black box&#8221; tools. What are [...]]]></description>
			<content:encoded><![CDATA[<p>Some people start &#8220;Security Testing&#8221; by buying and using a pen-test tool on project. Such tools uncover security vulnerabilities (though they seldom help with root cause analysis or even obtaining double-digit code coverage). </p>
<p>These tools are degenerate, at best, in facilitating a security testing strategy. Why? Because, these tools are &#8220;black box&#8221; tools. What are black box tools?</p>
<p>The term &#8220;black box&#8221; stems from old testing literature and means &#8220;without internal knowledge&#8221;. An external perspective has always excluded &#8220;code&#8221; but sometimes goes as far as (in my opinion appropriately) software design. Obviously, you need to  know <em>something</em> about the application&#8217;s architecture and design to test it though and the slope gets slippery.</p>
<p>In the realm of penetration testing, the term &#8220;black box&#8221; often has meaning beyond the tester&#8217;s knowledge of the product. OSSTM defines &#8220;black box&#8221; to mean that neither attacker nor defender are given knowledge of each other. They mean for this test procedure to accurately represent the kinds of opportunities, need for stealth, accessibility, and exploit that a real attacker would have, and also to evaluate the defender&#8217;s abilities to identify and prevent or recover from attack.</p>
<p>Because black box tools to a large extent run canned tests they will not satisfy my security testing goal (see <a href="http://www.cigital.com/justiceleague/2008/03/31/how-do-companies-address-security-testing/">previous entry</a>) of having run tests that one traces back to requirements. &#8216;Requirements that one created as a result of doing risk analysis that determines exactly what behaviors (and their impacts) should be avoided were the software attacked. </p>
<p>Arguably, security folk have &#8220;cached&#8221; this risk analysis and these implicit requirements in the pen testing tool. Fine, this is that small benefit that I mentioned pen tests do provide. And, they DO find bugs. Again, this is at best a degenerate case of security testing in the same way running a fuzz testing tool is a degenerate way of conducting functional testing. </p>
<p>For QA folk wary of accepting the previous statement, it will suffice to say that you wouldn&#8217;t defend your job based on achieving less than fifty percent coverage would you? </p>
<p>Vendors have begun using hybrid approaches (this will only become more common). Do these approaches solve our coverage problem and allay our concerns?</p>
<p>I demo&#8217;d Compuware&#8217;s  <a href="http://www.compuware.com/products/devpartner/">DevPartner</a>, which has a poorly advertised (and perhaps now nacent) security scanning capability, a few years back and was pretty impressed with the start they had made in hybrid .NET analysis. I&#8217;m not sure where it&#8217;s gone since then. <a href="http://www.fortify.com/products/detect/in_testing.jsp">Fortify&#8217;s PTA</a> also combines static and dynamic analyses to help prioritize static findings and provide root cause analysis for dynamic ones.</p>
<p>These hybrid tools don&#8217;t get our security testers off the hook either though, as they&#8217;re still not addressing the project-specific risk analysis nor are they anchoring tests in requirements.     </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2008/04/09/is-penetration-testing-security-testing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How do companies address security testing?</title>
		<link>http://www.cigital.com/justice-league-blog/2008/03/31/how-do-companies-address-security-testing/</link>
		<comments>http://www.cigital.com/justice-league-blog/2008/03/31/how-do-companies-address-security-testing/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 18:40:07 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/2008/03/31/how-do-companies-address-security-testing/</guid>
		<description><![CDATA[An organization can say they&#8217;re successfully conducting security testing when 1) they can trace test cases back to security requirements that embody the application&#8217;s ability to resist viable attack that would cause the business to suffer impact to its mission and 2) they enter security bugs in their bug-tracking software. They must then prioritize and [...]]]></description>
			<content:encoded><![CDATA[<p>An organization can say they&#8217;re successfully conducting security testing when 1) they can trace test cases back to security requirements that embody the application&#8217;s ability to resist viable attack that would cause the business to suffer impact to its mission and 2) they enter security bugs in their bug-tracking software. They must then prioritize and fix security bugs like any other software change request.</p>
<p>Sounds like QA right? Well, it should. Rest assured, there will be techniques, tools, and knowledge required to make the above statement true that even great QA people, process, and tools won&#8217;t be able to accomplish without some help from Security. Can QA get to 80% on their own? I don&#8217;t think so. Can they make more than 20% progress? I think so. My intuition is that QA folk with good tooling and a small amount of training will be able to specify and implement about half of what I call both a good test suite and good security tests.</p>
<p>In my experience companies <em>don&#8217;t do</em> security testing. Some of the more advanced companies with respect to Software Security have it on their &#8217;08 and &#8217;09 roadmaps. Product companies are more likely to have integrated security testing practices because of their comparatively tester-centric culture and SDL (vs. IT shops). </p>
<p>What are you seeing out there?</p>
<p>[tags]software testing[/tags] </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2008/03/31/how-do-companies-address-security-testing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

