<?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; jOHN</title>
	<atom:link href="http://www.cigital.com/justice-league-blog/author/john/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>An OWASP Interaction Model</title>
		<link>http://www.cigital.com/justice-league-blog/2011/09/21/an-owasp-interaction-model/</link>
		<comments>http://www.cigital.com/justice-league-blog/2011/09/21/an-owasp-interaction-model/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 19:05:13 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Software Security]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=883</guid>
		<description><![CDATA[Out at AppSecUSA, the OWASP board met and decided that it was valuable to support a partnership model with private industry. The aim: figure out a way to allow private (or federal) organizations to shape existing OWASP assets to better meet their needs. Better meeting an organization&#8217;s needs will likely involve: Integration with standard-fare open [...]]]></description>
			<content:encoded><![CDATA[<p>Out at <a href="http://www.appsecusa.org/" title="AppSecUSA">AppSecUSA</a>, the OWASP board met and decided that it was valuable to support a partnership model with private industry. The aim: figure out a way to allow private (or federal) organizations to shape existing OWASP assets to better meet their needs. Better meeting an organization&#8217;s needs will likely involve: </p>
<ol>
<li>Integration with standard-fare open source and commercial middleware commonly used to deploy organizations&#8217; web-apps (e.g. CA SiteMinder, MQ-Series, Documentum, etc.)</li>
<li>Greater predictability (and later maturity) in asset delivery road maps and schedule</li>
<li>Complete and user-centric documentation regarding adoption, implementation, and configuration</li>
<li>Progress against existing asset gaps deemed barriers to adoption by an organization</li>
</ol>
<p><a href="https://www.owasp.org/index.php/User:Jeff_Williams" title="Jeff Williams">Jeff Williams</a> and I collaborated on a <a href="https://docs.google.com/leaf?id=1ea4jWVDziLcZMTJUC5qW5psWYROpB-oPlqyl4Ei2xHA&amp;sort=name&amp;layout=list&amp;pid=0B0kzJSN-1ikNNjg5YmFjZWItZGY2NC00ZGYwLWJkYzUtMzM5NjdlOThkOWJl&amp;cindex=1" title="Straw Man Partnership Model">Straw Man Partnership Model</a> that describes ways for organizations to interact with OWASP. </p>
<p>As describe above here, the &#8220;buyer&#8221; (an organizational stakeholder) drives interaction. For this, I posit a buyer-driven work flow (see figure below)</p>
<p align="center"><img src="http://www.cigital.com/justice-league-blog/files/2011/09/buyer-producer-driven-workflow.jpg" alt="" width="75%" /><br />(Buyer-driven workflow available: <a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0B0kzJSN-1ikNMDgzYmM3ZGItZDVlMi00NTA5LTk5MmUtOWU5MTcwYWQ4YzUz&amp;hl=en_US" title="buyer-driven workflow">here</a> )</p>
<p>Summarizing, the buyer coordinates with the OWASP project owner (either directly, or through a partner such as Cigital), determines things like: level of effort (LoE), division of responsibilities, and what will ultimately be shared. The producer then works with OWASP project team resources to hit scheduling and roadmap sign-posts. </p>
<p>If you&#8217;re interested in helping your organization with benefiting from open source projects, perhaps I can help there. If you&#8217;re interested in helping mature the projects themselves, I can definitely help&#8211;especially with OWASP ESAPI or cheat sheets. I&#8217;m also very interested in feedback on the <a href="https://docs.google.com/leaf?id=0B0kzJSN-1ikNNjg5YmFjZWItZGY2NC00ZGYwLWJkYzUtMzM5NjdlOThkOWJl&amp;sort=name&amp;layout=list&amp;num=50" title="whole partnership model">whole partnership model</a>. Please send mail. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2011/09/21/an-owasp-interaction-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Threat Modeling &#8211; Vocabulary</title>
		<link>http://www.cigital.com/justice-league-blog/2011/05/11/threat-modeling-vocabulary/</link>
		<comments>http://www.cigital.com/justice-league-blog/2011/05/11/threat-modeling-vocabulary/#comments</comments>
		<pubDate>Wed, 11 May 2011 21:54:52 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Assurance]]></category>
		<category><![CDATA[Software Security]]></category>

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

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

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

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=726</guid>
		<description><![CDATA[&#8216;A short but important one, while I hop a train. Static analysis proponents, myself especially, have taken up the flag of &#8220;visibility&#8221; and paraded chanting &#8220;Customize to reduce False Positives&#8221;; I apologize. This provides tremendous benefit but misleads. Discussing the topic with @Wh1t3Rabbit, it occurred to me: time to change perception. So, why talk about [...]]]></description>
			<content:encoded><![CDATA[<p>&#8216;A short but important one, while I hop a train. Static analysis proponents, myself especially, have taken up the flag of &#8220;visibility&#8221; and paraded chanting &#8220;Customize to reduce False Positives&#8221;; I apologize. This provides tremendous benefit but misleads. Discussing the topic with <a href="http://twitter.com/#!/Wh1t3Rabbit">@Wh1t3Rabbit</a>, it occurred to me: time to change perception. </p>
<p>So, why talk about false positives in the first place? Well, tool adopters I correspond with unilaterally indicated that &#8220;dealing with false positives&#8221; was their big challenge. I thought, &#8220;Address the pain directly.&#8221; </p>
<p>However, this is not strictly how I went about it with more savvy folk. Instead, we focused on positively identifying those vulnerabilities we could easily verify as needing fixed. This may sound like two sides of the same coin&#8211;and to some extent it is: reducing false positives reduces the pile of hay in which one must look for needles.</p>
<p>However, other techniques bore just as much (or more) fruit. We successfully tuned through other means such as:</p>
<p><OL><br />
<LI>Adding scanning capability (sometimes custom rules, sometimes custom scanners) for vulnerabilities that always slipped by source code review but for which testing verified existance.</LI><br />
<LI>Separating and promoting those vulnerabilities that take more time/effort to verify with testing alone</LI><br />
<LI>Plainly removing those rules that produced inaccurate results easily found by testing *gasp*</LI><br />
<LI>Discussing pain-points with operations staff: what weaknesses attributable to source code were they constantly chasing in production?</LI><br />
</OL> </p>
<p>This tuning scheme is very myopic: fixating on assessment. That is, it focuses on the relative effort associated with various different security assessment activities. It ignores broader risk management factors (discover-ability, probability of exploit, and impact) and remediation factors (effort to fix, regression rate, etc.). </p>
<p>Advanced practices use all these factors to tune. But, organizations without risk management practice or development relationships can use these assessment-driven measures to drive improvement without external dependencies today.</p>
<p>Expect more on the topic of &#8220;Focusing on what to fix&#8221; from me. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2011/03/30/marching-for-false-positives-or-focusing-on-what-to-fix/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Moving to Mobile &#8211; New Threats</title>
		<link>http://www.cigital.com/justice-league-blog/2011/03/29/moving-to-mobile-new-threats/</link>
		<comments>http://www.cigital.com/justice-league-blog/2011/03/29/moving-to-mobile-new-threats/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 17:45:11 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Software Security Touchpoints]]></category>
		<category><![CDATA[Threat Modeling]]></category>

		<guid isPermaLink="false">http://www.cigital.com/justiceleague/?p=563</guid>
		<description><![CDATA[A 'move to mobile' represents an ideal opportunity to revisit threat modeling. The natural question: how do my threats change when I bring a model channel into my existing application?  ]]></description>
			<content:encoded><![CDATA[<p><strong><em>This post written in collaboration w/ <a href="http://www.cigital.com/justiceleague/author/jason/">Jason Rouse</a></em></strong></p>
<p>In the software development circles I travel, the topic of adding a mobile channel onto existing application/system infrastructure has come up a bunch recently. With regards to threat modeling a &#8216;move to mobile&#8217; represents an ideal opportunity to revisit threat modeling. Remember, I don&#8217;t necessarily prescribe threat modeling for well-known system arch-types (such as classic n-tier) and technology stacks as much as when teams attempt new and lesser known architectures.</p>
<p>The natural question: how do my threats change when I bring a mobile channel into my existing application?   Consider, for instance, a generic application, as depicted below:</p>
<div id="attachment_571" class="wp-caption aligncenter" style="width: 614px"><a href="http://www.cigital.com/justice-league-blog/2011/03/29/moving-to-mobile-new-threats/mobile-new-code-threats-2/" rel="attachment wp-att-571"><img src="/justice-league-blog/files/2011/03/Mobile-New-Code-Threats.png" alt="Existing Application w/ New Mobile Channel" width="453" height="378" class="size-full wp-image-571" /></a><p class="wp-caption-text">Existing Application w/ New Mobile Channel</p></div>
<p>This application supported a User and CSR through a browser interface, and had other connections to RESTful services in its middle tier. Now, we&#8217;ve added more controller and presentation tier logic, perhaps opting to reuse almost all the former application&#8217;s model. In this case, the new functionality aims to provide a more numerous set of users (2-4X as many as the plain browser interface) access to their accounts and services but with considerably lower bandwidth. The intent is that a sub-set of services would be offered (rate comparison and ACH transfer being omitted) and all available services will be provided in a crisp, simple, and responsive format. </p>
<p>Since we&#8217;ve discussed this example (and many like it) in threat modeling classes, we&#8217;ll leave these users and threats to the original system alone for now.</p>
<p>New portions of the system, being constructed to support mobile, are depicted in blue. In a future post, we&#8217;ll discuss how to more clearly identify the change in attack surface due to these additions. For now, let&#8217;s just consider the new Threats themselves. Again:</p>
<blockquote><p><em>Threat &#8211; A class of individuals or software agent executing on behalf of such an individual</em></p></blockquote>
<p>When we model threats we describe a threat&#8217;s capabilities, level of access, and skills to start. Let&#8217;s apply a few  of Threat Modeling techniques to identify new threats to consider. </p>
<p> <strong>1. Consider the system&#8217;s users</strong><br />
 When teams add new functionality to a system, or when they start a new development effort entirely, they commonly create user stories or perhaps even detailed use cases and requirements.</p>
<p>The first (and easiest) way to identify new threats to the system is to mine user stories, use cases, and other usage documentation (even marketectures often work) for their users. Then, consider:</p>
<ul>
<li>What evil or insidious behaviors could a user engage in?</li>
<li>What obnoxious or stupid behaviors could a user cause trouble with?</li>
</ul>
<p>Two users come to mind as we look at proposed new mobile functionality:</p>
<ol>
<li>Mobile device user (in this case, a smart phone)</li>
<li>Neighboring network user</li>
</ol>
<p>Combining the first items from our two lists above, we come to our first threat: a malicious mobile device user.</p>
<blockquote><p><em>1. Malicious Mobile Device User</em> &#8211; Device users possess the credentials to the device (including any UI, &#8216;app store&#8217;, or other username/password tuples) and likely possess the carrier account/credentials. Access includes physical access to the device and use of both of its applications and browsers. This threat can install applications, sync, and explore device contents with their computer.  Of course, this threat has access to device SDK and simulators as any developer would. See this threat depicted in the figure above with label &#8220;1&#8243;.</p></blockquote>
<p>When we discuss attack surfaces, we&#8217;ll discuss what kinds of access and capabilities these threats possess in a technology-specific fashion. Some conceptual actions include:<br />
<UL><br />
       <LI>Transfer device contents to computer for debugging, reversing, etc.</LI><br />
       <LI>Install purpose-built (malicious) applications on device</LI><br />
       <LI>Manipulate application settings, set up a proxy for web interaction, etc.</LI><br />
        <LI>Use both browser and application to access the same services/resources</LI><br />
        <LI>Jailbreak device</LI><br />
</UL></p>
<p><strong>Consider Evil/Insidious User Action</strong><br />
The last behavior piques particular interest. When the user decides, with malicious intention,  to jailbreak their device, additional malicious behaviors are available to them. Regardless of whether or not the jailbreak was motivated by malicious intent, the device&#8217;s security controls are compromised. In this case, applications can no longer trust that security features such as application signing apply or that a confidential path for their data exists between the application and network. Documenting threats in a traceability matrix allows one to show this escalation of privilege from one threat to another directly: </p>
</blockquote>
<p><a href="http://www.cigital.com/justice-league-blog/2011/03/29/moving-to-mobile-new-threats/privilege-escalation-tabular/" rel="attachment wp-att-596"><img src="/justice-league-blog/files/2011/03/Privilege-Escalation-Tabular.png" alt="Privilege Escalation - Tabular Format" width="634" height="84" class="aligncenter size-full wp-image-596" /></a></p>
<p>In summary, this behavior gives rise to another class of threat:</p>
<blockquote><p><em>2. Malicious Mobile Device</em> &#8211;  This threat has all the capabilities and access of a malicious mobile device user, but can also compromise or augment the device OS and its drivers. The figure above depicts this threat labeling it &#8220;4&#8243;. </p></blockquote>
<p>A broad range of capabilities results from this opportunity and if a device is compromised prior to the a victim application being loaded, malicious behavior can observe and affect the application installation process itself, or user signup/registration processes&#8211;which may include initial credential/key material exchange. This imagined scenario may quickly turn an application&#8217;s entire security proposition into a house of cards. </p>
<p><strong>Consider Obnoxious/Stupid User Action</strong><br />
Once you start, it&#8217;s hard not to imagine a multitude of stupid things a user could do with their mobile device.  Let&#8217;s focus on a common and important one: the user could leave the device somewhere, for it to be stolen. This scenario has two effects: first, this dramatically increases the population of Threat #1: malicious device user. Let&#8217;s split this threat into 1.A (previously described) and 1.B: malicious device user (same as 1.A but without the user&#8217;s credentials). However, Threat 1.B also increases the population of Threat #2&#8211;malicious devices because thieves can jailbreak devices even without user credentials. </p>
<p>An important third scenario impacts certain applications, like the generic one we describe above. If our threat traceability matrix (above) was filled out during a previous secure design exercise, it might include &#8220;password reset&#8221; use described in the mitigation column. Indeed, during many threat modeling courses jOHN teaches his participants indicate &#8220;we can remove the <em>malicious CSR</em> threat entirely by doing password reset out-of-band using a mobile phone.&#8221;</p>
<blockquote><p>
<strong>In the case that a phone is stolen and possesses the bank&#8217;s MobileBankingApp, perhaps which caches the user&#8217;s name, how effective is this control? </strong>
</p></blockquote>
<p>Many password reset implementations jOHN observes (using his accounts) suffer full compromise under the &#8216;stolen phone&#8217; scenario. In this case, the identification of a new threat causes us to reconsider or augment the design of our system so that it again demonstrates the security properties we desire.</p>
<p><strong>A Brief Diversion into the Mobile Threat Population</strong><br />
Looking superficially at search results, it appears as though ~120,000 phones are stolen in the UK annually; ~200,000 in Australia. Another site indicated 26M phones are stolen annually and resold. Regardless of how accurate these numbers are, this represents a much larger threat population than expected from security researchers and nefarious parties alone.</p>
<p><em>Not Stolen, &#8220;Something Borrowed&#8221;</em></p>
<p>Consider more generally the notion of the device being &#8220;out of sight&#8221; interaction briefly, perhaps through the following vectors:</p>
<p><UL><br />
<LI>Because stolen  (unknown to the device&#8217;s user) and returned after being tampered with</LI><br />
<LI>The device is plugged into another individual&#8217;s machine (perhaps for charging or for app download)</LI><br />
<LI>Device lent to individual for momentary use (phone call, game demo, contact/weather lookup)</LI><br />
<LI>Grey-market phone, donated phones, recycled/returned phones</LI><br />
</UL></p>
<p>Each of these cases exposes the whole of the device&#8217;s attack surface to exploitation without visual cues to the phone&#8217;s user. </p>
<p><em>And Who &#8216;Owns&#8217; These Devices Anyways</em></p>
<p>This is perhaps a good time to point out that the phone&#8217;s user may not be the phone&#8217;s owner. Family and corporate phone plans often provide access to the phone, remotely, unbeknownst to the user. In these cases, the phone&#8217;s owner must be considered a (yet unpictured in our diagram) threat from the user&#8217;s perspective. </p>
<p>From the phone (or account) owner&#8217;s perspective, the user represents a similar threat: the user can potentially add/modify/remove software without visual cues or notification. Our &#8216;single-user&#8217; device actually serves multiple masters:</p>
<p><OL><br />
<LI>Me</LI><br />
<LI>The Account Owner</LI><br />
<LI>Our Benevolent Dictators: Google/Apple&#8230; RIM/Microsoft?</LI><br />
<LI>Carriers: ATT, VeriZon&#8230; </LI><br />
<LI>Device Manufacturer</LI><br />
</OL></p>
<p><a href="http://www.cigital.com/justice-league-blog/2011/03/29/moving-to-mobile-new-threats/ownerhierarchy/" rel="attachment wp-att-667"><img src="/justice-league-blog/files/2011/03/OwnerHierarchy.png" alt="Device Owner Hierarchy" width="367" height="401" class="alignright size-full wp-image-667" /></a><br />
We know the benevolent dictators retain the right/capability to remove applications from our devices. What other capabilities must an application publisher be concerned about within their Threat Model?</p>
<p>Here in the diagram, you see the inevitable separation of the application store curator and the current set of benevolent dictators listed&#8211;<a href="http://www.amazon.com/mobile-apps/b?ie=UTF8&amp;node=2350149011">Amazon&#8217;s new application store </a>is a prime example.</p>
<p><strong>Reconsider Old Model&#8217;s Threats</strong><br />
Having conducted a threat model on the classic n-tier system before, a man-in-the-middle (MiM) threat was undoubtedly considered. Reconsider this threat in terms of the new architecture. </p>
<p>A common mistake modelers make in considering mobile MiM is to forget that devices contain not only applications that make Internet connections but that they also possess browsers:</p>
<blockquote><p><em>3. MiM</em> &#8211; This threat has access to traffic sent over the Internet (OR carrier network) sent either from the app to server or<br />
vice versa. When a device contains a browser, this threat can see both app to server traffic and browser to server traffic from the same account/device. This threat may be able to see traffic through (active or passive) interposition, or through landing code (script) w/in the device&#8217;s browser using classic web attacks (Depicted as Threat #4 in the figure above).</p></blockquote>
<p>Whether or not one needs to consider both Internet and carrier-based sniffing depends on other factors within the threat model. Cigital has always considered carrier-level compromise part of its mobile threat model, at a low barrier to entry. However, it bears mentioning that as recently as 2004 it was challenge to convince organizations that individuals could <em>&#8220;be the mobile network&#8221;</em>. It&#8217;s somewhat vindicating to see this as a <a href="http://www.wireless.att.com/learn/why/3gmicrocell/">consumer-grade scenario</a> now.</p>
<p>This isn&#8217;t the half of it though (and we&#8217;re getting ahead of ourselves a little bit in talking about attack surface here, but). Consider the following &#8216;radio-based&#8217; surfaces on the phone:</p>
<p><OL><br />
<LI>GSM Stack</LI><br />
<LI>CDMA Stack</LI><br />
<LI>802.11</LI><br />
<LI>Bluetooth</LI><br />
<LI>NFC (coming soon to a device near you!!!)</LI><br />
</OL></p>
<p>Remember, vulnerability in any of these implementations may cause our user to suffer a &#8220;<a href="http://www.cigital.com/justice-league-blog/2011/03/29/moving-to-mobile-new-threats/bluesniper-2/" rel="attachment wp-att-706">drive-by owning</a>&#8220;, leaving him/her with Threat #2: Malicious Device.</p>
<p><strong>Other Old Threat</strong><br />
Taking another cue from former efforts, modelers must consider the possibility that malicious applications will run alongside their applications within a mobile device. This scenario is no different than that of a browser, or any application running on the almost forgotten host computer.</p>
<blockquote><p><em>4. Malicious Application</em> &#8211; Threat represents either a compromised victim application on the device, a Trojan, or other malware (depicted in the figure above as #3). The causal vector may have been data interpreted and executed by a vulnerable app, a malicious application placed in an app store (or otherwise available for download), or different entirely. Such applications (malicious or corrupted) can attempt to poke and prod at your victim app directly, exploit the underlying device OS, or focus on server resources directly. The malicious app may possess a valid signature (or not, as advantageous) and has access to the device&#8217;s services (as per what the user has granted it). </p></blockquote>
<p><strong>Summary</strong><br />
Hopefully, this thought exercise has shown its reader threats they hadn&#8217;t considered. Hopefully it shows the reader the advantages of reconsidering a threat model as the architecture changes through normal means:</p>
<ol>
<LI>Start with the users/user-stories</LI><br />
<LI>Think maliciously</LI><br />
<LI>Think &#8216;stupid&#8217;</LI><br />
<LI>Re-consider old threats in the new architecture</LI><br />
<LI>Understand, you&#8217;re not the only device &#8216;user&#8217;, &#8216;owner&#8217;</LI>
</ol>
<p>It continues to surprise me that these techniques pay off even when only threats (the &#8216;who&#8217;) themselves are considered. </p>
<p>Next, we&#8217;ll write up how consideration of the attack surface differs as we &#8216;move to mobile&#8217; and begin to see how this expanded surface can have dramatic implications on the security posture of existing functionality.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cigital.com/justice-league-blog/2011/03/29/moving-to-mobile-new-threats/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Scrap Static Tools, just &#8220;Fix your code&#8221;?</title>
		<link>http://www.cigital.com/justice-league-blog/2011/02/23/scrap-static-tools-just-fix-your-code/</link>
		<comments>http://www.cigital.com/justice-league-blog/2011/02/23/scrap-static-tools-just-fix-your-code/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 15:32:13 +0000</pubDate>
		<dc:creator>jOHN</dc:creator>
				<category><![CDATA[Assurance]]></category>
		<category><![CDATA[BSIMM]]></category>
		<category><![CDATA[Security Features]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Security]]></category>
		<category><![CDATA[Software Security Touchpoints]]></category>

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

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

