<?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; Enterprise Software Security</title>
	<atom:link href="http://www.cigital.com/justice-league-blog/category/enterprise-software-security/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>Open Source and Software Maturity Models</title>
		<link>http://www.cigital.com/justice-league-blog/2011/11/15/open-source-and-software-maturity-models/</link>
		<comments>http://www.cigital.com/justice-league-blog/2011/11/15/open-source-and-software-maturity-models/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 00:45:03 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[BSIMM]]></category>
		<category><![CDATA[Defects, Bugs, and Flaws]]></category>
		<category><![CDATA[Enterprise Software Security]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=972</guid>
		<description><![CDATA[I&#8217;m at the BSIMM3 Conference, in an open source breakout session. The context: you&#8217;re an organization with a reasonable application security program. The question, &#8220;How to apply that same process maturity to open source where no &#8216;throat to choke&#8217; exists?&#8221; Your organization and its software-providing vendors may not be perfect but at least you can [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m at the <a href="http://bsimm.com/">BSIMM3 Conference</a>, in an open source breakout session. The context: you&#8217;re an organization with a reasonable application security program. The question, &#8220;How to apply that same process maturity to open source where no &#8216;throat to choke&#8217; exists?&#8221; Your organization and its software-providing vendors may not be perfect but at least you can choke someone if vulnerability exists. If you believe in the value of <a href="http://bsimm.com/online/">SSF</a> activities for built and purchased software, you understand that assurance activities (source code review or penetration testing) may apply to open source, but applying others (such as training, or SDL gating/exceptions, and so forth) might be as impossible shooting ghosts. So, we have a control problem: </p>
<blockquote><p>We can&#8217;t tackle the &#8220;process improvement&#8221; problem with our open source provides like we can with those who build our software in-house, or those vendors from whom we acquire code. </p></blockquote>
<p>Understanding, based on this, we lack as many &#8216;knobs and dials&#8217; for improving the cleanliness of the pipes through which open source software flows&#8230; we may have a flow rate problem as well. Though I lack hard evidence, I&#8217;d bet this represents a proverbial iceberg&#8217;s tip:</p>
<blockquote><p>An organization may deploy as much or more open source code as their own in-house developed code.</p></blockquote>
<p>It&#8217;s interesting to think about the money organizations spend to secure the code they build vs. the amount of open source they consume in this light&#8230; (participants indicated they didn&#8217;t track this spend separate from their development efforts).</p>
<p>Harumph. Our breakout group generated great ideas worth sharing. First, we unearthed a lot of things attending organizations already do. Next, we brainstormed valuable next steps. Here&#8217;s categories of activities we came up with:</p>
<p><UL><br />
<LI>Inventory &amp; Inventory Control</LI><br />
<LI>Vulnerability Identification (Assessment)</LI><br />
<LI>Vulnerability Management</LI><br />
<LI>Ownership of Open Source</LI><br />
<LI>Policy (use)</LI><br />
<LI>Policy (Contribution)</LI><br />
</UL></p>
<p>What did each entail?</p>
<p><strong>Inventory &amp; Inventory Control</strong><br />
<UL><LI><em>Identification</em> &#8211; All Participating organizations had a manual discovery process for open source usage.  Many wanted better automated schemes, despite some existing tool usage.</LI></p>
<p><LI><em>Identification of masked open source</em> &#8211; Many participating organizations realize that not only do they adopt open source software directly but that the 3rd party code (and open source) they absorb also contain open source software. Discovering this &#8216;masked open source&#8217; software represents as big a problem as identifying the open source software used directly. </LI></p>
<p><LI><em>Centralized open source distribution</em> &#8211; Some organizations allow development &amp; deployment of open source software from the web directly whereas others only allow access to and use of open source from a centrally managed repository. Centralizing deployment usage may provide only improved integrity, or may be used to implement an &#8216;approved package list&#8217;.</LI></UL></p>
<p><strong>Vulnerability Identification (Assessment)</strong></p>
<ul>
<LI><em>Using assessment tools</em> &#8211; About three-quarters of workshop respondents used the same tools they use to assess their application security posture on their open source assets. This, to me, seems worth its own blog entry. I had to wonder aloud, &#8220;as organizations move from detective assessment schemes (SCR, PT) to so-called preventative (threat modeling, architecture analysis, misuse/abuse cases) how do they consider open source?&#8221; I&#8217;m finding that organizations blazing trails into security architecture work commonly omit discussion of their open source frameworks.</li>
</ul>
<p><strong>Ownership</strong><br />
<UL><LI><em>Maintain a white list of open source</em> &#8211; Seemingly related to the &#8220;centralized distribution&#8221; item (but surprisingly uncorrelated in our survey), this meant that someone, from security, owned assessing the risk and proffering a &#8220;thumbs-up&#8221; or &#8220;thumbs-down&#8221; that can inhibit white list membership.</LI><br />
<LI><em>Revisit white list</em> &#8211; Organizations expressed that they found value in pruning the approved list of open source software based on non-use, newly identified risk, and similar factors. About one-quarter of our group engaged in this activity.</LI><br />
<LI><em>Ownership of identified risk</em> &#8211; Some participants avidly encouraged use of open source within their applications. In these organizations, when a developer chooses to include open source (as opposed to writing a widget themselves), they own any newly identified risk when in that open source. This reminded me eerily of Wall St. traders. Equity investment creates risk. Margin calls create leveraged risk. In this metaphor, choosing to adopt open source seems like a margin call. It&#8217;s very possible that a developer can absorb more risk into the organization than they themselves could effectively own up to in black-swan scenarios. It&#8217;s unclear how to measure this exposure when adopting open source.</LI></p>
<p><LI><em>Collaboration</em> &#8211; Certainly an organization-specific and an unsolved problem, participants indicated there may be a &#8220;third stakeholder&#8221; in the process of identifying and managing open source vulnerability. Two examples given were 1) clearing houses from which organizations purchase open source software and 2) support organizations (a la RedHat).</LI>
</ul>
<p><strong>Vulnerability Management</strong><br />
<UL><br />
<LI><em>Root Cause Analysis</em> &#8211; When a vulnerability is found (regardless of means or source: internal/external), organizations sometimes can point to a person or group who understands the vulnerable component (notable exceptions exist for purchased software or that software maintained by a development team that&#8217;s vanished). In open source, the organization must expend resources in order to &#8220;get smart&#8221; on vulnerability&#8217;s root cause and make trade-offs about mitigation strategies and their impacts. This represents extra cost on which I&#8217;d enjoy having greater visibility.</LI><br />
<LI><em>Vulnerability Impact Analysis</em> &#8211; Almost every participant had some regime by which they discovered (through assessment, feeds, or other means) new vulnerabilities within their adopted open source code base. Everybody possessed some ability to figure out which lines-of-business or development teams might be affected by newly discovered vulnerabilities.</LI><br />
<LI><em>Patch Management</em> &#8211; Only about one half of participants had, in their minds, a good strategy&#8211;having assessed the impacted teams&#8211;for distributing a patch that remediated open source vulnerability in an organization-wide manner. More strategically, several schemes seemed available to organizations beyond the straightforward &#8220;penetrate-and-patch&#8221; loop here. Alternatives included: </p>
<p><OL><br />
<LI>Wrapping open source<br />
<LI>Hardening open source (and centrally distributing)<br />
<LI>Sandboxing/compartmentalizing open source<br />
</OL><br />
</LI><br />
</UL></p>
<p><strong>Policy (Use)</strong><br />
<UL><br />
<lI><em>Security Policy/Standards</em> &#8211; About half participants had some kind of security policy or standards addressing how to securely use open source software within the organization.</li>
<li><em>Training</em> &#8211; About one quarter of participants trained their developers to use some portion of their open source securely. Interestingly enough, the one quarter of our respondents that trained developers did not line up well with the one half that had security standards. Wild.</li>
<p></UL></p>
<p><strong>Policy (Contribution)</strong><br />
<UL><br />
<LI><em>Legal permission to contribute to open source</em> &#8211; Some organizations see open source contribution as a key activity. Others did but have suffered clamp-down from their legal departments because legal fears liability. Others never liked the idea. </li>
<li><em>Community Notification on Vulnerability</em> &#8211; When an organization contributes to open source and later finds (or is notified of) vulnerability in its contributions, it may need a way to notify the broader community. Organizations also complained about very high latency in the community notifying them of vulnerability in their code. This proved a surprising problem in our brainstorming session. Why? Contributors complained that this was because, often, their contributions were either 1) forked or 2) baked into other products that masked use of the contributions. In either case, it wasn&#8217;t evident to those disclosing the vulnerability that the (contributing) organization was responsibly for vulnerable code.
</li>
</ul>
<p>I will absolutely not let it go without saying that though this entry contains many of my own thoughts it heavily relies on the work of many in our breakout session, well-lead by HP&#8217;s <a href="https://www.fortify.com/company/management/brian-chess.html">Brian Chess</a>. Thanks all for a great discussion.<br />
-jOHN</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2011/11/15/open-source-and-software-maturity-models/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Suggestions for ESAPI 2.1 and Beyond</title>
		<link>http://www.cigital.com/justice-league-blog/2011/09/24/suggestions-for-esapi-2-1-and-beyond/</link>
		<comments>http://www.cigital.com/justice-league-blog/2011/09/24/suggestions-for-esapi-2-1-and-beyond/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 04:04:36 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[Enterprise Software Security]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=920</guid>
		<description><![CDATA[This year&#8217;s ESAPI Summit, organized by Chris Schmidt and other contributors, represented a marked improvement over previous conversations. A clear evolutionary path for the family of security toolkits lies ahead. In order to achieve broader adoption and greater effect in larger enterprises the project&#8217;s participants must focus not just on API-level design but also on [...]]]></description>
			<content:encoded><![CDATA[<p>This year&#8217;s <a href="https://www.owasp.org/index.php/ESAPI_Summit" title="ESAPI Summit">ESAPI Summit</a>, organized by <a href="http://yet-another-dev.blogspot.com/" title="Chris Schmidt">Chris Schmidt</a> and other contributors, represented a marked improvement over previous conversations. </p>
<p>A clear evolutionary path for the family of security toolkits lies ahead. In order to achieve broader adoption and greater effect in larger enterprises the project&#8217;s participants must focus not just on API-level design but also on what I&#8217;ve dubbed <strong><em>enterprise readiness</strong></em>. Enterprise readiness entails:
<ul>
<li>Centrally managed development <em>road map</em></li>
<li>Predictably periodic <em>release schedule</em></li>
<li>Increased <em>modularity</em> and reduced <em>dependencies</em></li>
<li>Adopter-centric <em>documentation</em></li>
<li>Stated <em>backward compatibility</em></li>
<li>Integration with <em>scanning technologies</em>, demonstrating correct usage</li>
</ul>
<p>Interestingly, the project in current release form already addresses some of the above items. Users&#8217; complaints prescribe an upgrade-even if that entails only more prominent communication of existing resources.</p>
<p><strong>Road Map</strong><br />
Since 2008, the project underwent a multiple management changes. Now firmly in the hands of individuals focused on secure development, it&#8217;s time to form a steering committee or other community process that results in the creation of a single shared direction for all involved parties. Organizations need to know not only what ESAPI represents today but also what it wants to address and offer in the next 12-36 months.</p>
<p><strong>Release Schedule</strong><br />
The 2.0 GA release accomplished much but suffered from a changing and delayed schedule. In order to reliably fit into organizations&#8217; own release plans adopters must be able to rely on a release schedule for their own planning purposes. </p>
<p>It would be helpful if development efforts published and adhered to a &#8220;software development lifecycle&#8221;, regardless of how agile. Why? Such a move would demonstrate maturity and would help individuals from adopting organizations follow and predict progress against schedule releases.</p>
<p>Pushing features to release compels security folk by deflecting criticism and reducing adopters&#8217; risk. However, from the adopting organizations&#8217; perspective, it creates work. Even if they don&#8217;t adopt new releases immediately, it forces information-gathering and decision work. Predictability outranks both feature progress and frequency of releases.     </p>
<p><strong>Modularity</strong><br />
Tinkerers and serious adopters complain that a large list of dependencies creates undue collisions and conflicts, complicating both adoption and maintenance. Splitting each language&#8217;s code base up (call that better componentization, modularization, or &lt;whatever&gt;) should help address that problem. Truly upgrading existing tightly coupled elements into <em>a la carte </em> modules  will require comprehensive refactoring, dramatic changes in dependency choice, and clever use of namespaces and dynamic loading (Spring-style dependency-injection has already been discussed). </p>
<p>Because modularity produces not only its intrinsic benefits but also clarifies subsequent road map definition and reduces risk in release schedule planning, I count pursuit of this goal as <em>the task of paramount importance</em>. Chris hopes to schedule a modularization tiger team shortly.   </p>
<p><strong>Documentation</strong><br />
When one [successfully] adopts a particular implementation, what security problems should they expect to no longer find in assessments? What steps will adoption require? How much effort does customization, integration, and implementation entail? Increasing enterprise readiness requires user-centric documentation.</p>
<ul>
<li>Define a <em>threat model</em>, scoping toolkit objectives/effect</li>
<li>Outline <em>user stories</em>, indicating workflow support (and addressed misuse/abuse)</li>
<li>Produce <em>adoption guide</em>, enumerating steps acquiring organizations need to successfully adopt and implement a security API</li>
</ul>
<p>Summit participants rightly concluded that early adopters can best help close these documentation gaps based on their own experiences. Later, more specific &#8216;specification&#8217; of toolkit function can follow.</p>
<p><strong>Backward Compatibility</strong><br />
Throughout its evolution, the toolkit&#8217;s implementers balanced backwards compatibility with progress. However, one of the first &#8220;user comments&#8221; at the summit was, &#8220;We need backward compatibility.&#8221; This represents the prime example of need for better (perhaps more formal?) communication. </p>
<p><strong>Scanning Tool Support</strong><br />
Finally, getting credit drives good behavior. Providing organizations &#8220;rule packs&#8221; for static and dynamic assessment tools that show alleviated risk from toolkit use should increase adoption. Updating leading commercially-produced SAST products (or SaaS) with rules that remove findings where provided security functionality effectively mitigates risk requires more thought than existing first-pass &#8220;ESAPI rule packs&#8221; incorporate. </p>
<p>Contributors must carefully consider the <em>level</em> such rules should target. Yes, unit testing shows quality of the toolkit&#8217;s implementation itself, but does not demonstrate correct integration of the toolkit with an application. Toolkit contributors, unfortunately, can not produce a generic parametrized system-level security test either demonstrating adopting applications bear no vulnerability. </p>
<p><strong>Conclusion</strong><br />
Summit participants showed support across this broad set of suggestions and discussed each item in relative depth. Now, the objective will be to follow-through on each without loosing momentum. </p>
<p>One possible facilitator could, of course, be private funding. Such funding could facilitate several factors of enterprise readiness simultaneously by 1) defining a road map, 2) proposing, funding, and therefore guaranteeing a work schedule, and 3) narrowing focus to a particular aspect of (increased) modularity (or documentation). Excitement regarding the possibility of both accelerating and focusing progress caused me to blog about the <a href="http://www.cigital.com/justiceleague/2011/09/21/an-owasp-interaction-model/" title="Interaction Model">Interaction Model </a>in my last post. </p>
<p>In the meantime, as summit members return home to day jobs and dig themselves out from under inevitable mounds of e-mail and TODOs, I reflect on the possibility of the ESAPI project with renewed interest. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2011/09/24/suggestions-for-esapi-2-1-and-beyond/feed/</wfw:commentRss>
		<slash:comments>0</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>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>Three New Books</title>
		<link>http://www.cigital.com/justice-league-blog/2008/04/16/three-new-books/</link>
		<comments>http://www.cigital.com/justice-league-blog/2008/04/16/three-new-books/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 20:11:21 +0000</pubDate>
		<dc:creator>gem</dc:creator>
				<category><![CDATA[Enterprise Software Security]]></category>
		<category><![CDATA[Risk Management]]></category>
		<category><![CDATA[Software Security]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/2008/04/16/three-new-books/</guid>
		<description><![CDATA[There are three new books (recently released) that are worth a look. Once is an absolute necessity for any security practitioner. The others may be interesting for some readers of the blog. The book that you MUST READ RIGHT NOW is the second edition of Ross Anderson’s Security Engineering book. Ross did a complete pass [...]]]></description>
			<content:encoded><![CDATA[<p>There are three new books (recently released) that are worth a look.  Once is an absolute necessity for any security practitioner.  The others may be interesting for some readers of the blog.</p>
<p>The book that you MUST READ RIGHT NOW is the second edition of Ross Anderson’s <a href="http://www.amazon.com/Security-Engineering-Building-Dependable-Distributed/dp/0470068523/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1208285784&amp;sr=8-1"><em>Security Engineering</em></a> book.  Ross did a complete pass on his classic tome and somehow made it even better.  It also comes in handy as a weapon as it is so heavy.  Books like Ross’s are a refreshing reality check from the usual pablum published in computer security.</p>
<p><a href="http://www.amazon.com/Security-Engineering-Building-Dependable-Distributed/dp/0470068523/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1208285784&amp;sr=8-1"><img src="/justice-league-blog/files/2008/04/security-engineering.jpg" alt="security-engineering.jpg" align="right" height="125" width="99" /></a></p>
<p>Simply put, this is a must read book for every security professional.  I don’t have my real copy yet from the publisher (but they say one is on the way), but I did take a close look through the manuscript.  Ross retains his number one slot on my list of top 5 things every software security person should read.</p>
<p>Incidentally, I interviewed Ross for Silver Bullet last year (in April).  Ross’s episode is the most popular of all 24 episodes released to date with over 18,000 downloads.  You might want to <a href="http://www.cigital.com/silverbullet/show-013/">give that a listen as well</a>.</p>
<p>The other two books that are worth a look are <em>Crimeware</em> and <em>The New School of Information Security</em>.  Lets cover them in reverse.</p>
<p><a href="http://www.amazon.com/New-School-Information-Security/dp/0321502787/ref=sr_1_1?<br />
ie=UTF8&amp;s=books&amp;qid=1208286357&amp;sr=1-1"><img src="/justice-league-blog/files/2008/04/new-school.jpg" alt="new-school.jpg" align="right" height="125" width="84" /></a></p>
<p><a href="http://www.amazon.com/New-School-Information-Security/dp/0321502787/ref=sr_1_1?<br />
ie=UTF8&amp;s=books&amp;qid=1208286357&amp;sr=1-1"><em>The New School of Information Security</em></a> is a book worth buying for the cover alone.  I know of no other computer security book with a <a href="http://en.wikipedia.org/wiki/Wassily_Kandinsky">Kandinski</a> on the front.  Even though I know Adam Shostack from way back (and never could have predicted that he would become a Microsoft guy), I saw his book at RSA, bought it for the cover, and only then discovered that he was the author!  My plan was to give the book to a good friend who I know is a huge Kandinski fan.  On the way to complete that errand, I had a chance to look though the book and now I need a copy of my own!  If you’re a follower of the economics of security school (which Ross and Bruce Schneier have helped spearhead), you’ll like this book.</p>
<p><a href="http://www.amazon.com/Crimeware-Understanding-Attacks-Defenses-Symantec/dp/0321501950/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1208286629&amp;sr=1-1"><img src="/justice-league-blog/files/2008/04/crimeware.jpg" alt="crimeware.jpg" align="right" height="125" width="125" /></a></p>
<p><a href="http://www.amazon.com/Crimeware-Understanding-Attacks-Defenses-Symantec/dp/0321501950/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1208286629&amp;sr=1-1"><em>Crimeware</em></a> is an academic tome written by my friend Markus Jakobsson.  I contributed a chapter on software security bug taxonomy.  My copy showed up last night, and I have earmarked more time to read it thoroughly.  The enemy has changed over the last decade, and criminals are bringing the game to a new level.</p>
<p>Spring may not be the best reading time, but it does appear to be the best time for a crop of interesting new security books!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2008/04/16/three-new-books/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sharing architecture ideas with the community</title>
		<link>http://www.cigital.com/justice-league-blog/2007/08/31/sharing-architecture-ideas-with-the-community/</link>
		<comments>http://www.cigital.com/justice-league-blog/2007/08/31/sharing-architecture-ideas-with-the-community/#comments</comments>
		<pubDate>Fri, 31 Aug 2007 19:26:54 +0000</pubDate>
		<dc:creator>justiceadmin</dc:creator>
				<category><![CDATA[Assurance]]></category>
		<category><![CDATA[Defects, Bugs, and Flaws]]></category>
		<category><![CDATA[Enterprise Software Security]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Security Touchpoints]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/2007/08/31/sharing-architecture-ideas-with-the-community/</guid>
		<description><![CDATA[We’re pleased to have a guest blogger for this Justice League entry. Michael Cohen is a Senior Security Consultant at Cigital where he is responsible for leading, assessing, architecting and implementing secure software for Fortune 500 companies. Michael also works with Cigital teams on enterprise-wide security solutions intended to improve an organization&#8217;s security posture and [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>We’re pleased to have a guest blogger for this Justice League entry.  Michael Cohen is a Senior Security Consultant at Cigital where he is responsible for leading, assessing, architecting and implementing secure software for Fortune 500 companies. Michael also works with Cigital teams on enterprise-wide security solutions intended to improve an organization&#8217;s security posture and help them meet audit and regulatory requirements.  Michael just gave a talk to the Washington, DC <a href="http://www.iasahome.org/">IASA chapter</a> that was well received, and is now the subject of this entry:</p></blockquote>
<p>When I hear software architects talk about the architecture they’ve crafted to depict the various structures and behaviors of a system, they point out interesting techniques they’ve applied that best convey how the system should work and be put together. An architect’s enthusiasm for the little details reveals a great sense of accomplishment and creativity, but most of all good architecture conveys sorely needed information in order to help those who develop, test and maintain the system. Sharing the tips and tricks gathered from the field is what helps our community move forward to building better software. A classic example of this is the <a href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612"><em>Design Patterns</em></a> book written by the Gang of Four. </p>
<p>Not too long ago I was also sharing my ideas on architecture and security at a local IASA chapter here in Washington, DC.  The group was a crowd of like-minded architects who work for large Fortune 500 companies, government agencies, and promising local startups. My topic was pragmatic secure architecture.  The basic idea was to look at some real ways to incorporate security into architecture using Cigital’s risk management and threat modeling practices. You can find the <a href="http://www.cigital.com/presentations/pragmatic/">slides for my presentation here</a>.</p>
<p>For the uninitiated, threat modeling is a way of depicting where threats (think malicious people, attackers, and so on) can touch a software architecture and how they may be able to exploit critical assets using various attack patterns.  Threat modeling is valuable for determining an architecture’s security posture. In addition, identifying risks in user requirements and business goals, and tying those risks to a threat model results in a map of how design flaws impact the system, its users and the overall business. Threat models coupled with identified high-level risks are a great way to get other stakeholders involved with security decisions.  And mind you, these are stakeholders who would otherwise be unable to contribute and supply critical feedback. </p>
<p>The attendees at the chapter meeting were glad they attended the presentation and heard something worthwhile that they could use in their daily architectural activities.  Many people brought up interesting points about how to best protect critical assets, what a real risk to a system is, and what is considered a good enough mitigation. What I found particularly interesting was how threat modeling provided a way for everyone to contribute interesting ideas about where security vulnerabilities may exist and how they could be mitigated (which, if you think about it, is the entire point of threat models).  </p>
<p>I encourage any architect to share their ideas on building a better architecture with their peers, whether it be at a local organization or at a conference. As a senior security consultant at Cigital, I like to take shared ideas and mold them into my own unique way of thinking about the world.   The best results come when I can apply new ideas to my daily activities as I help our customers assess and create more secure software. </p>
<p>… On an entirely separate note, McGraw still owes me money. I’m watching you, Gary.<br />
[tags]software architecture,software quality,software security,touchpoints[/tags] </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2007/08/31/sharing-architecture-ideas-with-the-community/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Mini-Architecture for Security Guidance</title>
		<link>http://www.cigital.com/justice-league-blog/2007/05/25/a-mini-architecture-for-security-guidance/</link>
		<comments>http://www.cigital.com/justice-league-blog/2007/05/25/a-mini-architecture-for-security-guidance/#comments</comments>
		<pubDate>Fri, 25 May 2007 17:46:36 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Enterprise Software Security]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Software Security Touchpoints]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/2007/05/25/a-mini-architecture-for-security-guidance/</guid>
		<description><![CDATA[Benjamin Tomhave wrote about &#8220;tiering&#8221; security guidance when I cross-posted a comment to my last blog entry on the SC-L mailing list. Quoting him: The higher up you are in the policy framework, the more general and time-enduring the content should be. The farther you progress down the framework to a more detailed level, the [...]]]></description>
			<content:encoded><![CDATA[<p>Benjamin Tomhave wrote about &#8220;tiering&#8221; security guidance when I cross-posted a comment to my last blog entry on the SC-L mailing list. Quoting him:</p>
<blockquote><p>The higher up you are in the policy framework, the more general and time-enduring the content should be. The farther you progress down the framework to a more detailed level, the more perishable the content will be, out of necessity. </p></blockquote>
<p>Later he continues:</p>
<blockquote><p>&#8230;is because implementers need it.  They&#8217;re not security experts (usually) and do not necessarily grok security the same way a seasoned (salty?) security person might.because &#8220;implementers need it&#8221;.
</p></blockquote>
<p>This tiering was implicit to my first post. In fact your most senior security resources can probably use nothing but Security Principals (as described by McGraw&#8217;s BSS Book and the famous <a href="http://web.mit.edu/Saltzer/www/publications/protection/">Saltzer paper</a>) and find both insidious vulnerabilities as well as brand-new &#8220;Game over&#8221; architectural flaws with new development technologies they aren&#8217;t familiar with. But, the more junior (inexperienced) or development-oriented (constructive) the person being targeted, the more specific the guidance must be in order to be valuable without requiring inordinate effort.</p>
<p>Because we&#8217;re trying to change the behavior of the majority of our  Developers&#8211;who range in skill from OK to Hero and whom may have never had even a security awareness class&#8211;I find &#8220;technology-specific&#8221; guidance moves the ball the furthest. </p>
<p>In my previous two posts I talk about forms various levels of standards take, and the way in which one might create it. It occurs to me that I all but showed the bigger picture and might as well follow up to do so. Below, you&#8217;ll find a map of how I show security guidance flowing throw and effecting a software development team (click-through for full detail):</p>
<p align="center"><a class="imagelink" href="/justice-league-blog/files/2007/05/knowledge-collateral-maturation.jpg" title="Mini-Knowledge Architecture"><img src="/justice-league-blog/files/2007/05/knowledge-collateral-maturation.jpg" alt="Mini-Knowledge Architecture" width="500" height="328" /></a></p>
<p>As information moves from top to bottom and from left to right it becomes more specific and actionable, but also more perishable (as has been said). To build security in, one must think about security&#8217;s implications throughout the lifecycle, so I see no reason why security knowledge (regardless of how specific) shouldn&#8217;t mirror artifacts used to construct the application itself: software requirements, design, and the code itself. </p>
<p>Though not central to this discussion, the diagram has been annotated to indicate who should produce and consume this information. Here, I&#8217;ll point out that your centralized Application Security Resources can probably most effectively and efficiently create the generic security guidance, but will need help of Security Architects to create the more technology-specific guidance and garner broad buy-in.</p>
<p>My last post presented a brief model of how one might organize and fund this in practice.<br />
-jOHN</p>
<p>[tags]knowledge architecture,software security[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2007/05/25/a-mini-architecture-for-security-guidance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SDLC on the shoulders of giants</title>
		<link>http://www.cigital.com/justice-league-blog/2007/05/24/sdlc-on-the-shoulders-of-giants/</link>
		<comments>http://www.cigital.com/justice-league-blog/2007/05/24/sdlc-on-the-shoulders-of-giants/#comments</comments>
		<pubDate>Thu, 24 May 2007 14:25:02 +0000</pubDate>
		<dc:creator>pravir</dc:creator>
				<category><![CDATA[Enterprise Software Security]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Software Security Touchpoints]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/2007/05/24/sdlc-on-the-shoulders-of-giants/</guid>
		<description><![CDATA[Software security veterans have all certainly thought about the idea of ‘securing the SDLC’… I can tell because every consulting firm’s collateral that I’ve seen in the past year has a new bullet under their ‘services’ section referring to something like ‘Secure development process integration’ or ‘Secure SDLC services’. That being said, let’s talk about [...]]]></description>
			<content:encoded><![CDATA[<p>Software security veterans have all certainly thought about the idea of ‘securing the SDLC’… I can tell because every consulting firm’s collateral that I’ve seen in the past year has a new bullet under their ‘services’ section referring to something like ‘Secure development process integration’ or ‘Secure SDLC services’. That being said, let’s talk about what this means for a second. Fundamentally, there are a few ‘different’ schools of thought out there (and as it’ll turn out, they’re not all that different at all).</p>
<p>I know of three popular ways of looking at the problem, 1) Microsoft SDL 3.0 (with a recent book by Howard and Lipner to codify the subject), 2) Software Security Touchpoints from Gary’s book Software Security, and 3) CLASP (originally developed by Secure Software, Inc, and now an open project through OWASP). BTW, if anyone knows of other publicly usable process methodologies, by all means email me since I’d love to read about them.</p>
<p>After spending a bit of time thinking through all these different ideas, a few interesting points emerge. First, there’s not much difference between SDL, the Touchpoints, and CLASP. There’s just about nothing I can see where these processes fundamentally disagree. The differences are really only in the timing and the extent of the prescribed activities (i.e. they each cover the bases of what you should be doing, some just give different orderings to the activities and talk about the sub-steps in different ways). My personal opinion is that SDL is particularly suited for companies like MS (large ISVs with large user populations) and process like the Touchpoints and CLASP are a bit more flexible and widely applicable.</p>
<p>So what’s the deal? Do we have the problem of dev process augmentation solved and put to bed? Heck no. Consider the following quote that popped up in a discussion my buddy Gunnar Peterson and I had at the recent OWASP conference in Milan: “Amateurs talk about tactics, debutants talk about strategy, but professionals talk about logistics.??? (this quote has many variations and is hard to find a definitive source, but it’s likely from a US military officer many years ago). As the software security space was emerging, you bet we had to crawl from the primordial ooze by figuring out some tactics to stop the bleeding. Logically following, lots of smart folks sat down and figured out the right way (via experimentation, mostly) to look at the problem from a high-level. Hence, strategy for software security was born. Now, the proverbial last mile is the logistics of how you get the job done within an organization that’s got 50,000 real-world constraints that complicate everything.</p>
<p>Regardless of your favorite security-enhanced SDLC method, you’ll notice that they really are, at their core, a collection of activities, procedures and artifacts (tactics). Don’t get me wrong, it’s great stuff in terms of what’s needed to do the job well and it’s generally assembled and presented in a full-blown, whole-hog, flying-car way (strategy). If you’re in the shoes of the person in charge of augmenting your company’s dev processes, you’re handed a large collection of great things to think about, but little that’s directly actionable in terms of answering ‘what do I do tomorrow?’ (logistics).</p>
<p>What I’m getting at is that I think we’ve gotten to the point where if you’re still debating tactics of what to do or the strategic vision of what needs done for process integration, you’re solving the wrong problem. It’s about rubber-to-the-road logistics. We need to build on the work that’s been done already and come up with plans that make it accessible and usable for an average human that hasn’t made a career on thinking about these things. That’s a serious challenge, but not an impossible one. At Cigital, that’s what our SDLC process gigs are all about (providing the company a detailed plan of how to get it done). What’s needed now is to get a more abstract way of looking at the various factors that contribute to logistical differences (e.g. type of business, market vertical, organizational hierarchy, regulatory constraints, etc.). I strongly believe that we can formalize these factors and I think that goes a long way to breaking the back of the problem. I fact, I’ve been working with folks in the OWASP community on this very problem (and would love to get anyone else with field experience involved). Much of that work will be released in a new version of CLASP in the next week or so, so stay tuned if you’re interested (I’ll post another entry here announcing it).</p>
<p>[tags]software security,sdlc[/tags] </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2007/05/24/sdlc-on-the-shoulders-of-giants/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to Write Good Security Guidance</title>
		<link>http://www.cigital.com/justice-league-blog/2007/05/21/how-to-write-good-security-guidance/</link>
		<comments>http://www.cigital.com/justice-league-blog/2007/05/21/how-to-write-good-security-guidance/#comments</comments>
		<pubDate>Mon, 21 May 2007 18:03:09 +0000</pubDate>
		<dc:creator>jOHN</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/2007/05/21/how-to-write-good-security-guidance/</guid>
		<description><![CDATA[The process of writing security guidance is just as important to the quality of the resulting standards as is the target: technology-specific, code-centric constructive statements. How do you succeed? By using the same muscles you exercise when you conduct secure design. When I write Security guidance, such as the technology-specific standards I blogged about last [...]]]></description>
			<content:encoded><![CDATA[<p>The process of writing security guidance is just as important to the quality of the resulting standards as is the target: technology-specific, code-centric constructive statements. How do you succeed? By using the same muscles you exercise when you conduct secure design. </p>
<p>When I write Security guidance, such as the technology-specific standards I blogged about last week, I start with a threat model for the system (or design paradigm) I’m trying to protect. This could be as specific as a single system or as generic as all my client’s customer-facing 3-tier J EE Apps. I aim to remove attack vectors with sets of standards. I don’t write standards that don’t directly prevent a particular attack I’ve already documented in the same way Agile Developers ignore abstraction not mandated by the current user stories. Eventually though, removing a subsequent attack vector will require a smidge of refactoring or (more likely) augmentation.</p>
<p>Thinking about each attack vector individually gives necessary focus to the process and will help get past hapless statements of context-free specificity. Years ago I saw, “All data must be protected with 128-bit encryption???, within a customer’s standards.  Admirable though the specificity was, the limitations of this as a standard become immediately obvious. Would 128-bit encryption suffice for archival-grade needs—such as log files? What does the plain-text or cipher-text data get used for? If we’re looking at attacks on session management within our imaginary web-app, simply encrypting a session token doesn’t effectively protect against theft and replay does it? Remember last week’s entry. There, in my example, I sought to protect against the circumstance in which (due to omission or later maintenance) a Developer forgot to explicitly demand authentication prior to accessing a piece of functionality.</p>
<p>Think of security standards as requirements driving a design that resists the attacks you outlined in your model. This focuses authoring and often alleviates the writer’s block a blank page can impose. Improving and completing guidance becomes tractable. In my crypto example above, the client was attempting to secure exchange of data between two systems (thick Java clients) over the Internet in a circumstance in which they could not rely on SSL being present. Data from each transition persisted beyond a single session, but had a short span of value—say a day, or week (depending on the volatility present in pricing). You’re probably already conjuring ideas about what you’d expect to see in a secure implementation. With as little context as this, my explanation of the design begins to illuminate attack vectors. From these, you can begin to answer the questions I posed above about ciphers, structure of data, and from there secure design becomes an exercise in trading off difficulties of key maintenance, performance/overhead of the encryption, and others with resisting the attacks you’d enumerate. </p>
<p>Not shockingly, HOW you build this guidance is as important as ending up in courier font. And, (again) it shouldn’t surprise you that I’ve chosen to get end up with code (courier) through design (via threat modeling).  This is how software is built—and security should be no different. This does mean you’ll need security architects (who can code—not the corporate librarian types) to write good, detailed security standards though.</p>
<p>[tags]software security[/tags] </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2007/05/21/how-to-write-good-security-guidance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security Guidance and its “Specificity Knob???</title>
		<link>http://www.cigital.com/justice-league-blog/2007/05/18/security-guidance-and-its-%e2%80%9cspecificity-knob%e2%80%9d/</link>
		<comments>http://www.cigital.com/justice-league-blog/2007/05/18/security-guidance-and-its-%e2%80%9cspecificity-knob%e2%80%9d/#comments</comments>
		<pubDate>Fri, 18 May 2007 18:45:57 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Enterprise Software Security]]></category>
		<category><![CDATA[Governance and Regulation]]></category>
		<category><![CDATA[Software Security]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/2007/05/18/security-guidance-and-its-%e2%80%9cspecificity-knob%e2%80%9d/</guid>
		<description><![CDATA[While speaking at a conference out west an interested attendee challenged me: “You said I should make my security standards as specific as possible, but the other speaker said, ‘Keep them general’, what gives???? This type of exchange happens all too often in the software security space these days. I could do a piece on [...]]]></description>
			<content:encoded><![CDATA[<p>While speaking at a conference out west an interested attendee challenged me: “You said I should make my security standards as specific as possible, but the other speaker said, ‘Keep them general’, what gives???? This type of exchange happens all too often in the software security space these days. I could do a piece on that alone, but instead, I’ll address the challenge.</p>
<p>The confusion stems from two competing goals driving standards creation: 1) providing useful security know-how that benefits developers and 2) obtaining ‘coverage’ of all the security concepts, technology stacks, and development/deployment platforms your organization uses. To be useful to developers&#8211;to truly change the way they behave when “Their butt hits the seat in front of their compiler???—one has to speak their language. Developers speak and write code. Documents like security policy, tend to be written by Corporate Security, or worse: lawyers. These groups speak and write legalese. There’s a big difference and it’s easily detected: one usually comes in 12pt. Courier.</p>
<p>Your objective: answering questions about how to do things right for developers by showing them the right way… while leaving enough flexibility and room in the guidance for them to remain creative and solve the business problems their application was intended to.</p>
<p>Writing technology-specific guidance engages Security Architects in helping directly solve Developer problems. Rather than specifying &#8220;Do not allow direct access to Servlets by name&#8221; (a decent agnostic standard, when used in concert with others) show them how:<br />
&#8212;&#8212;<br />
Using Struts, map an impossible-to-assign role, such as noaccess to every Servlet but one&#8211;a single front controller&#8211;that mediates access to your other Action Servlets like this:</p>
<pre>
 &lt;web-resource-collection&gt;
   &lt;web-resource-name&gt;Application&lt;/web-resource-name&gt;
              &lt;url-pattern&gt;/functionality&lt;/url-pattern&gt;
       &lt;/web-resource-collection&gt;
  &lt;auth-constraint&gt;
   &lt;role-name&gt;noaccess&lt;/role-name&gt;
  &lt;/auth-constraint&gt;
 &lt;/security-constraint&gt;
 &lt;login-config&gt;
  &lt;auth-method&gt;DIGEST&lt;/auth-method&gt;
 &lt;/login-config&gt;
 &lt;security-role&gt;
  &lt;role-name&gt;noaccess&lt;/role-name&gt;
 &lt;/security-role&gt;
</pre>
<p>Place all Action Servlets in a single directory, for ease of maintenance (/functionality in the example above). Demand authentication prior to access to the single front controller and delegate actions from that Servlet.<br />
 &#8212;&#8212;</p>
<p>Alternatives may be necessary. For instance, while the standard prescribes lumping functionality in one directory&#8211;that may not be possible. For those cases, the standard should describe how extension based url-patterns can aid in casting the broadest net possible. </p>
<p>Standards, at this level, should always state a preference however. The worst offense of failing to do so is nearly every J2EE book&#8217;s discussion of both declarative and programmatic means of authorization without indicating which should be used when.   </p>
<p>Next week I&#8217;ll move on and discuss detailed, technology-specific security guidance in more detail, but first I would like to recognize the value less specific guidance provides. Detailed, technology-specific guidance requires significant time and effort to produce. Such guidance is perishable and becomes useless as you upgrade or update your technology stack.  Technology agnostic guidance, or guidance kept at the level of security concepts insulates you a bit more. Organizations should certainly start with this level of guidance, getting coverage over the broad array of security topics needed to educate their developers before diving down a rabbit hole and writing technology-specific guidance. </p>
<p>In other words, one level of guidance does not replace the other. Instead, less specific guidance serves as safety net underneath the more specific, catching inquiring minds when the specific guidance hasn’t been written yet or when it doesn’t apply (as often happens when a team faces constraints like deploying an old version of Tomcat).</p>
<p>I hope, however, that in the meantime I&#8217;ve shown an example of how being technology-specific, code-centric, and detailed about standards can engage security folk in development, engage Developers in their own language, and actually push projects forward more quickly by making hard security decisions for them. This is just one of the activities your Security Architects can undertake when they parachute into development teams&#8230; a concept I introduced in my blog entry on research in the 50&#8242;s.  </p>
<p>[tags]software security[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2007/05/18/security-guidance-and-its-%e2%80%9cspecificity-knob%e2%80%9d/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

