<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Bits 'n Widgets - Security</title>
    <link>http://bitsnwidgets.com/</link>
    <description>&amp;nbsp;&amp;nbsp;Thoughts on real-world, practical, common-sense approaches to Agile software development using Scrum and XP</description>
    <language>en-us</language>
    <copyright>John E. Boal</copyright>
    <lastBuildDate>Fri, 16 May 2008 14:24:02 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>webmaster@bitsnwidgets.com</managingEditor>
    <webMaster>webmaster@bitsnwidgets.com</webMaster>
    <item>
      <trackback:ping>http://bitsnwidgets.com/Trackback.aspx?guid=8645632f-2374-4a59-8c1b-eaa5070b8ddb</trackback:ping>
      <pingback:server>http://bitsnwidgets.com/pingback.aspx</pingback:server>
      <pingback:target>http://bitsnwidgets.com/PermaLink,guid,8645632f-2374-4a59-8c1b-eaa5070b8ddb.aspx</pingback:target>
      <dc:creator>John Boal</dc:creator>
      <wfw:comment>http://bitsnwidgets.com/CommentView,guid,8645632f-2374-4a59-8c1b-eaa5070b8ddb.aspx</wfw:comment>
      <wfw:commentRss>http://bitsnwidgets.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8645632f-2374-4a59-8c1b-eaa5070b8ddb</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <font size="4">
          <font size="3">
            <font size="2">
              <i>Everyone
keeps asking me about it, so here it is...<br /></i>So you want to know about threat modeling? Congratulations, you have taken the
first step toward software security. Software security should be the first thing we
think about when we write software, but somehow it ends up being the last thing in
a lot of cases. We should really be designing software with security as Feature 0.
A Threat model is a nice element of an overall security plan, which really should
be figured out before code line 1 gets written. This article gives a basic overview
of how to create a Threat Model document, which can be used as a basis for a security
plan for the system.<br /></font>
            <br />
          </font>
          <b>What is a Threat Model?</b>
        </font>
        <br />
A Threat Model is a Document. The document describes a system in more or less a standardized
way, so people can easily understand the system's overall architecture and design,
and how it functions - from a security perspective.<br />
A typical Threat Model Includes:<br /><ul><li>
Architectural Components 
</li><li>
Data flows 
</li><li>
Points of Entry 
</li><li>
Possible Attack Vectors or Scenarios 
</li><li>
Remedies or Counters to the Threats</li></ul><font size="4"><b>How-to create a Threat Model<br /></b><font size="2">We can work backward from the goal: Ship secure software. To do
this, we need to eliminate or mitigate security threats. To find these threats, we
need to identify what's important to us, and how it can be used (for us and against
us). We need to be specific about what we have that needs protection. Only then can
we be clear about how to protect. We can use a Dataflow Diagram to help us identify
these things in our system. Here is the suggested process:<br /></font></font><p></p><ol><li>
Create a Dataflow Diagram 
<ol><li>
See my separate post here: <a href="http://">How to create a Dataflow Diagram</a></li></ol></li><li>
Identify the protected resources (Assets) that are of value to us. 
<ol><li>
Everything on the DFD is an asset. Every dataflow, every process, interactor, and
data store. 
</li><li>
Servers may be assets, as well as their operating systems, and other software on them. 
</li><li>
There may be intangible assets as well, such as bandwidth, or industry reputation.
Imagine the damage if a security company's web server got owned by a hacker. 
</li><li>
What other specific things for the organization might be of value?<br /></li></ol></li><li>
Identify the Entry Points - all places where data can enter the system. 
<ol><li>
Entry points are more than just services listening on ports. 
</li><li>
Input or data files 
</li><li>
RSS feeds or external data feeds<br /></li><li>
Configuration files or business rules engines 
</li><li>
Unintended services left running on the server<br /></li></ol></li><li>
Locate the Trust-Level boundaries. 
<ol><li>
Where are there components that communicate with each other at different levels of
trust? 
</li><li>
Server and client are definitely different trust levels... 
</li><li>
Consider server boundaries 
</li><li>
process boundaries 
</li><li>
application boundaries<br /></li></ol></li><li>
Brainstorm Threats 
<ol><li>
Get the whole team together (developers, testers, program managers, and even management)
and discuss each of the things on the dataflow diagram, to see what if anything there
is that is possible, or potentially a threat. Don't exclude any ideas at this point,
just write it all down. We can eliminate and prioritize later. 
</li><li>
Keep in mind that each of the asset types has a set list of potential threat vectors
for it, these can be used to examine each asset for a thorough evaluation. 
<ol><li>
Threat types are [STRIDE] Spoofing, Tampering, Repudiation, Information disclosure,
Denial of service, and Escalation of privilege.<br /></li></ol></li><li>
No threat is to big, to small, or too outlandish to record. "Someone could bribe our
sysadmin for the root password" is still a valid threat... 
</li><li>
It’s sometimes difficult to identify the threats. We can use a trick to find threats
by identifying them from mitigations:<br />
“We use SSL to protect the data flow between the server and the user.”<br />
That’s a Mitigation… but what’s the Threat? Man-in-the-middle, data disclosure, etc.<br />
How about “SSL authenticates the server.” =&gt; Threat: “Hacker could impersonate
our server”<br /></li></ol></li><li>
Refactor, revise, amend, prioritize, categorize Threat list. 
<ol><li>
Go through the list, and evaluate each of the suggestions, giving each a priority.
If there are non-valuable suggestions, discard them at this time. 
</li><li>
Threats need to be linked to a asset(s), and entry point(s)<br /></li></ol></li><li>
Brainstorm mitigations to threats, starting with the highest priority 
<ol><li>
Mitigations include firewalls, SSL encryption, PKI security, certificates, and the
like. 
</li><li>
Sometimes a mitigation for a denial of service threat is to increase the performance
of the application, such that the expensive issue is no longer expensive. Other times
we can mitigate by throttling, or something akin. 
</li><li>
Mitigation Examples: 
<ol><li>
Code Reviews - #1 most effective means to prevent security defects 
</li><li>
SSL protects in-transit data and authenticates the server (does NOT authenticate the
client…) 
</li><li>
Input validation for user input 
</li><li>
XSD validation for XML documents 
</li><li>
Use Stored Procedures to access all data 
</li><li>
Access Control Lists prevent unintended access 
</li><li>
Firewalls prevent unintended access 
</li><li>
Least-Privilege accounts lower the amount of potential damage a compromise can effect 
</li><li>
Bandwidth Throttling can help prevent DOS attacks.<br /></li></ol></li></ol></li><li>
Document all of these things in a "standardized template" 
<ol><li>
Different organizations use different templates, I don't have a good example yet but
when I do I will post it.<br /></li></ol></li><li>
Present and Review the threat model with the team producing the software. 
<ol><li>
Everyone should be on the same page. The threat model is a great way for everyone
to come to a common understanding of the architecture and focus on the things that
can keep it secure.<br /></li></ol></li><li>
Keep the document secured, and release it only on a need-to-know basis. 
<ol><li>
This document tells everyone what we know are potential shortcomings of our system.
Keep it under wraps! 
</li><li>
Only allow access to specific personnel, and make it a short list.<br /></li></ol></li><li>
Review and Revise this document EACH SPRINT. 
<ol><li>
Even if no new features are shipped in a sprint, it is worth reviewing the model document,
just to make sure it is still accurate and relevant. 
</li><li>
If there ever is a security incident, the information most definitely should be added
to the Threat Model document. One would wonder at this point what in the process of
security and system design let this flaw in. This would be an opportunity to evaluate
the design process and make some changes.</li></ol></li><li>
Use the Threat Model as a guide to designing and developing software 
<ol><li>
Now that you have a basis to start, use it as a springboard to design and implement
better software!<br /></li></ol></li></ol><p>
Using this method, we should be able to produce a document that gives us a base starting
point to talk about security of our system, and help even non-technical people get
on the same page to understand what any potential issues are. With this understanding
of the system, we can then move forward and focus on the areas that are most important.<br /><br />
There are some tools available, here is one from <a href="http://www.microsoft.com/downloads/details.aspx?familyid=62830f95-0e61-4f87-88a6-e7c663444ac1&amp;displaylang=en">Microsoft</a>.
It has some pro's and con's. There isn't much else out there that I know of at the
moment in terms of tools that help with Threat Modeling.<br /><br />
Here is also a <a href="http://msdn.microsoft.com/en-us/library/aa302419.aspx">nice
article on MSDN</a> about Threat Modeling that is similar to this method I describe.
</p><p><br />
PS - some terms used in Threat Modeling<br /><b><font size="4">Terminology<br /></font></b></p><ul><li>
Asset        (Protected Resource) Something we have
that someone might want to get 
</li><li>
DREAD        Ranking system – how serious is it 
<ul><li>
Damage, Reproducibility, Exploitability, Affected users, Discoverability</li></ul></li><li>
Entry Point        Interface between the system and
the world 
</li><li>
Exploit        Using a vulnerability to compromise something 
</li><li>
External Interactor    an entity not in scope for this threat model 
</li><li>
Mitigation        lessening impact of or elimination
of a threat 
</li><li>
Penetration Test    third party is hired to find a way to hack in 
</li><li>
Vulnerability        a security flaw that could be exploited 
</li><li>
Vector        the mechanism of entry 
</li><li>
STRIDE        Classification system – what kind of threat
is it 
<ul><li>
Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation
of privilege</li></ul></li><li>
Threat        an adversary’s goal<br /><br /></li></ul><img width="0" height="0" src="http://bitsnwidgets.com/aggbug.ashx?id=8645632f-2374-4a59-8c1b-eaa5070b8ddb" /></body>
      <title>Threat Modeling 101 - How to Create a Threat Model, a 12-Step Program.</title>
      <guid isPermaLink="false">http://bitsnwidgets.com/PermaLink,guid,8645632f-2374-4a59-8c1b-eaa5070b8ddb.aspx</guid>
      <link>http://BitsNWidgets.com/2008/05/16/ThreatModeling101HowToCreateAThreatModelA12StepProgram.aspx</link>
      <pubDate>Fri, 16 May 2008 14:24:02 GMT</pubDate>
      <description>&lt;font size=4&gt;&lt;font size=3&gt;&lt;font size=2&gt;&lt;i&gt;Everyone keeps asking me about it, so here
it is...&lt;br&gt;
&lt;/i&gt;So you want to know about threat modeling? Congratulations, you have taken the
first step toward software security. Software security should be the first thing we
think about when we write software, but somehow it ends up being the last thing in
a lot of cases. We should really be designing software with security as Feature 0.
A Threat model is a nice element of an overall security plan, which really should
be figured out before code line 1 gets written. This article gives a basic overview
of how to create a Threat Model document, which can be used as a basis for a security
plan for the system.&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
&lt;/font&gt;&lt;b&gt;What is a Threat Model?&lt;/b&gt;&lt;/font&gt;
&lt;br&gt;
A Threat Model is a Document. The document describes a system in more or less a standardized
way, so people can easily understand the system's overall architecture and design,
and how it functions - from a security perspective.&lt;br&gt;
A typical Threat Model Includes:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Architectural Components 
&lt;li&gt;
Data flows 
&lt;li&gt;
Points of Entry 
&lt;li&gt;
Possible Attack Vectors or Scenarios 
&lt;li&gt;
Remedies or Counters to the Threats&lt;/li&gt;
&lt;/ul&gt;
&lt;font size=4&gt;&lt;b&gt;How-to create a Threat Model&lt;br&gt;
&lt;/b&gt;&lt;font size=2&gt;We can work backward from the goal: Ship secure software. To do this,
we need to eliminate or mitigate security threats. To find these threats, we need
to identify what's important to us, and how it can be used (for us and against us).
We need to be specific about what we have that needs protection. Only then can we
be clear about how to protect. We can use a Dataflow Diagram to help us identify these
things in our system. Here is the suggested process:&lt;br&gt;
&lt;/font&gt;&lt;/font&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Create a Dataflow Diagram 
&lt;ol&gt;
&lt;li&gt;
See my separate post here: &lt;a href="http://"&gt;How to create a Dataflow Diagram&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Identify the protected resources (Assets) that are of value to us. 
&lt;ol&gt;
&lt;li&gt;
Everything on the DFD is an asset. Every dataflow, every process, interactor, and
data store. 
&lt;li&gt;
Servers may be assets, as well as their operating systems, and other software on them. 
&lt;li&gt;
There may be intangible assets as well, such as bandwidth, or industry reputation.
Imagine the damage if a security company's web server got owned by a hacker. 
&lt;li&gt;
What other specific things for the organization might be of value?&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Identify the Entry Points - all places where data can enter the system. 
&lt;ol&gt;
&lt;li&gt;
Entry points are more than just services listening on ports. 
&lt;li&gt;
Input or data files 
&lt;li&gt;
RSS feeds or external data feeds&lt;br&gt;
&lt;li&gt;
Configuration files or business rules engines 
&lt;li&gt;
Unintended services left running on the server&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Locate the Trust-Level boundaries. 
&lt;ol&gt;
&lt;li&gt;
Where are there components that communicate with each other at different levels of
trust? 
&lt;li&gt;
Server and client are definitely different trust levels... 
&lt;li&gt;
Consider server boundaries 
&lt;li&gt;
process boundaries 
&lt;li&gt;
application boundaries&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Brainstorm Threats 
&lt;ol&gt;
&lt;li&gt;
Get the whole team together (developers, testers, program managers, and even management)
and discuss each of the things on the dataflow diagram, to see what if anything there
is that is possible, or potentially a threat. Don't exclude any ideas at this point,
just write it all down. We can eliminate and prioritize later. 
&lt;li&gt;
Keep in mind that each of the asset types has a set list of potential threat vectors
for it, these can be used to examine each asset for a thorough evaluation. 
&lt;ol&gt;
&lt;li&gt;
Threat types are [STRIDE] Spoofing, Tampering, Repudiation, Information disclosure,
Denial of service, and Escalation of privilege.&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
No threat is to big, to small, or too outlandish to record. "Someone could bribe our
sysadmin for the root password" is still a valid threat... 
&lt;li&gt;
It’s sometimes difficult to identify the threats. We can use a trick to find threats
by identifying them from mitigations:&lt;br&gt;
“We use SSL to protect the data flow between the server and the user.”&lt;br&gt;
That’s a Mitigation… but what’s the Threat? Man-in-the-middle, data disclosure, etc.&lt;br&gt;
How about “SSL authenticates the server.” =&amp;gt; Threat: “Hacker could impersonate
our server”&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Refactor, revise, amend, prioritize, categorize Threat list. 
&lt;ol&gt;
&lt;li&gt;
Go through the list, and evaluate each of the suggestions, giving each a priority.
If there are non-valuable suggestions, discard them at this time. 
&lt;li&gt;
Threats need to be linked to a asset(s), and entry point(s)&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Brainstorm mitigations to threats, starting with the highest priority 
&lt;ol&gt;
&lt;li&gt;
Mitigations include firewalls, SSL encryption, PKI security, certificates, and the
like. 
&lt;li&gt;
Sometimes a mitigation for a denial of service threat is to increase the performance
of the application, such that the expensive issue is no longer expensive. Other times
we can mitigate by throttling, or something akin. 
&lt;li&gt;
Mitigation Examples: 
&lt;ol&gt;
&lt;li&gt;
Code Reviews - #1 most effective means to prevent security defects 
&lt;li&gt;
SSL protects in-transit data and authenticates the server (does NOT authenticate the
client…) 
&lt;li&gt;
Input validation for user input 
&lt;li&gt;
XSD validation for XML documents 
&lt;li&gt;
Use Stored Procedures to access all data 
&lt;li&gt;
Access Control Lists prevent unintended access 
&lt;li&gt;
Firewalls prevent unintended access 
&lt;li&gt;
Least-Privilege accounts lower the amount of potential damage a compromise can effect 
&lt;li&gt;
Bandwidth Throttling can help prevent DOS attacks.&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Document all of these things in a "standardized template" 
&lt;ol&gt;
&lt;li&gt;
Different organizations use different templates, I don't have a good example yet but
when I do I will post it.&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Present and Review the threat model with the team producing the software. 
&lt;ol&gt;
&lt;li&gt;
Everyone should be on the same page. The threat model is a great way for everyone
to come to a common understanding of the architecture and focus on the things that
can keep it secure.&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Keep the document secured, and release it only on a need-to-know basis. 
&lt;ol&gt;
&lt;li&gt;
This document tells everyone what we know are potential shortcomings of our system.
Keep it under wraps! 
&lt;li&gt;
Only allow access to specific personnel, and make it a short list.&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Review and Revise this document EACH SPRINT. 
&lt;ol&gt;
&lt;li&gt;
Even if no new features are shipped in a sprint, it is worth reviewing the model document,
just to make sure it is still accurate and relevant. 
&lt;li&gt;
If there ever is a security incident, the information most definitely should be added
to the Threat Model document. One would wonder at this point what in the process of
security and system design let this flaw in. This would be an opportunity to evaluate
the design process and make some changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Use the Threat Model as a guide to designing and developing software 
&lt;ol&gt;
&lt;li&gt;
Now that you have a basis to start, use it as a springboard to design and implement
better software!&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Using this method, we should be able to produce a document that gives us a base starting
point to talk about security of our system, and help even non-technical people get
on the same page to understand what any potential issues are. With this understanding
of the system, we can then move forward and focus on the areas that are most important.&lt;br&gt;
&lt;br&gt;
There are some tools available, here is one from &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=62830f95-0e61-4f87-88a6-e7c663444ac1&amp;amp;displaylang=en"&gt;Microsoft&lt;/a&gt;.
It has some pro's and con's. There isn't much else out there that I know of at the
moment in terms of tools that help with Threat Modeling.&lt;br&gt;
&lt;br&gt;
Here&amp;nbsp;is also a &lt;a href="http://msdn.microsoft.com/en-us/library/aa302419.aspx"&gt;nice
article on MSDN&lt;/a&gt; about Threat Modeling that is&amp;nbsp;similar to this method I describe.
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
PS - some terms used in Threat Modeling&lt;br&gt;
&lt;b&gt;&lt;font size=4&gt;Terminology&lt;br&gt;
&lt;/p&gt;
&gt;&gt; 
&lt;ul&gt;
&lt;li&gt;
Asset&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; (Protected Resource) Something we have
that someone might want to get 
&lt;li&gt;
DREAD&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Ranking system – how serious is it 
&lt;ul&gt;
&lt;li&gt;
Damage, Reproducibility, Exploitability, Affected users, Discoverability&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Entry Point&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Interface between the system and
the world 
&lt;li&gt;
Exploit&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Using a vulnerability to compromise something 
&lt;li&gt;
External Interactor&amp;nbsp;&amp;nbsp;&amp;nbsp; an entity not in scope for this threat model 
&lt;li&gt;
Mitigation&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; lessening impact of or elimination
of a threat 
&lt;li&gt;
Penetration Test&amp;nbsp;&amp;nbsp;&amp;nbsp; third party is hired to find a way to hack in 
&lt;li&gt;
Vulnerability&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; a security flaw that could be exploited 
&lt;li&gt;
Vector&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; the mechanism of entry 
&lt;li&gt;
STRIDE&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Classification system – what kind of threat
is it 
&lt;ul&gt;
&lt;li&gt;
Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation
of privilege&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Threat&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; an adversary’s goal&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://bitsnwidgets.com/aggbug.ashx?id=8645632f-2374-4a59-8c1b-eaa5070b8ddb" /&gt;</description>
      <comments>http://bitsnwidgets.com/CommentView,guid,8645632f-2374-4a59-8c1b-eaa5070b8ddb.aspx</comments>
      <category>Security</category>
    </item>
    <item>
      <trackback:ping>http://bitsnwidgets.com/Trackback.aspx?guid=c879d61c-bc2b-41e9-b25d-2f3b39f0fde5</trackback:ping>
      <pingback:server>http://bitsnwidgets.com/pingback.aspx</pingback:server>
      <pingback:target>http://bitsnwidgets.com/PermaLink,guid,c879d61c-bc2b-41e9-b25d-2f3b39f0fde5.aspx</pingback:target>
      <dc:creator>John Boal</dc:creator>
      <wfw:comment>http://bitsnwidgets.com/CommentView,guid,c879d61c-bc2b-41e9-b25d-2f3b39f0fde5.aspx</wfw:comment>
      <wfw:commentRss>http://bitsnwidgets.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c879d61c-bc2b-41e9-b25d-2f3b39f0fde5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Security has always been a challenge in
software development. Being in an environment that has rapid ship cycles and iterative
development does add challenges of its own when it comes to security.<br /><br />
Here are a few of the key concepts I intend to flesh out in the next few weeks:<br /><ul><li>
Security Requirements</li><ul><li>
how to come up with security stories</li><li>
how much is enough?</li><li>
how much is too much?<br /></li></ul><li>
Using automated tools</li><ul><li>
what tools are available</li><ul><li>
MetaSploit - multiple vulnerabilities: <a href="http://www.metasploit.com/">http://www.metasploit.com/</a></li><li>
Fiddler - HTTP/S proxy, inspector, injector, manipulator. Fun for the whole family. <a href="http://www.fiddlertool.com/">http://www.fiddlertool.com/</a><br /></li><li>
WireShark - network protocol analyzer and sniffer: <a href="http://www.wireshark.org/">http://www.wireshark.org/</a><br /></li><li>
various other network tools like Snort, RetinA, NetStumbler can be automated and scripted.<br /></li></ul><ul><li>
use static code analysis tools, and pay attention to their results.</li><li>
I recommend also doing file and network fuzzing on system entry points, but don't
have any good tool recommendations. Got some? Please leave comments!<br /></li></ul><li>
web site testing vs web service testing</li><li>
application testing<br /></li><li>
how do the fit into automation frameworks<br /></li></ul><li>
Security Documentation (Threat Models)</li><ul><li>
Designing in Security as Feature 0</li><li>
Iterative Threat Modeling</li><li>
Who Reads the Threat Model?</li><li>
How do we turn threat models into automated acceptance tests?</li></ul><li>
security testing strategies</li><ul><li>
white route (internal folks, given the internals of the system)<br /></li><li>
black route (for-hire hackers, given only an objective to accomplish, and no system
information)</li></ul><li>
security-oriented code reviews</li><ul><li>
how to train developers and testers to look for security defects<br /></li></ul><li>
security vs. performance</li><ul><li>
Sometimes mitigations incur a performance hit. How do we avoid this, and what are
some alternatives?<br /></li></ul></ul><p></p><br />
This is an Agile blog, so this is the first production release of this article ...
More features (content) will become available over time, so stay tuned to this RSS
feed for updates and new content, as they emerge.<br /><img width="0" height="0" src="http://bitsnwidgets.com/aggbug.ashx?id=c879d61c-bc2b-41e9-b25d-2f3b39f0fde5" /></body>
      <title>How to Implement Software Security on an Agile Team</title>
      <guid isPermaLink="false">http://bitsnwidgets.com/PermaLink,guid,c879d61c-bc2b-41e9-b25d-2f3b39f0fde5.aspx</guid>
      <link>http://BitsNWidgets.com/2008/05/10/HowToImplementSoftwareSecurityOnAnAgileTeam.aspx</link>
      <pubDate>Sat, 10 May 2008 19:54:11 GMT</pubDate>
      <description>Security has always been a challenge in software development. Being in an environment that has rapid ship cycles and iterative development does add challenges of its own when it comes to security.&lt;br&gt;
&lt;br&gt;
Here are a few of the key concepts I intend to flesh out in the next few weeks:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Security Requirements&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
how to come up with security stories&lt;/li&gt;
&lt;li&gt;
how much is enough?&lt;/li&gt;
&lt;li&gt;
how much is too much?&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Using automated tools&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
what tools are available&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
MetaSploit - multiple vulnerabilities: &lt;a href="http://www.metasploit.com/"&gt;http://www.metasploit.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
Fiddler - HTTP/S proxy, inspector, injector, manipulator. Fun for the whole family. &lt;a href="http://www.fiddlertool.com/"&gt;http://www.fiddlertool.com/&lt;/a&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
WireShark - network protocol analyzer and sniffer: &lt;a href="http://www.wireshark.org/"&gt;http://www.wireshark.org/&lt;/a&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
various other network tools like Snort, RetinA, NetStumbler can be automated and scripted.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
use static code analysis tools, and pay attention to their results.&lt;/li&gt;
&lt;li&gt;
I recommend also doing file and network fuzzing on system entry points, but don't
have any good tool recommendations. Got some? Please leave comments!&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
web site testing vs web service testing&lt;/li&gt;
&lt;li&gt;
application testing&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
how do the fit into automation frameworks&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Security Documentation (Threat Models)&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Designing in Security as Feature 0&lt;/li&gt;
&lt;li&gt;
Iterative Threat Modeling&lt;/li&gt;
&lt;li&gt;
Who Reads the Threat Model?&lt;/li&gt;
&lt;li&gt;
How do we turn threat models into automated acceptance tests?&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
security testing strategies&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
white route (internal folks, given the internals of the system)&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
black route (for-hire hackers, given only an objective to accomplish, and no system
information)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
security-oriented code reviews&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
how to train developers and testers to look for security defects&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
security vs. performance&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Sometimes mitigations incur a performance hit. How do we avoid this, and what are
some alternatives?&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;br&gt;
This is an Agile blog, so this is the first production release of this article ...
More features (content) will become available over time, so stay tuned to this RSS
feed for updates and new content, as they emerge.&lt;br&gt;
&lt;img width="0" height="0" src="http://bitsnwidgets.com/aggbug.ashx?id=c879d61c-bc2b-41e9-b25d-2f3b39f0fde5" /&gt;</description>
      <comments>http://bitsnwidgets.com/CommentView,guid,c879d61c-bc2b-41e9-b25d-2f3b39f0fde5.aspx</comments>
      <category>Security</category>
      <category>Team</category>
      <category>testing</category>
    </item>
  </channel>
</rss>