<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Courier;
        panose-1:2 7 4 9 2 2 5 2 4 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.apple-style-span
        {mso-style-name:apple-style-span;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body bgcolor=white lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>This is GREAT work and I&#8217;d like to see this type of analysis for
every popular web technology out there.&nbsp; I tend to agree with Andrew that it&#8217;s
better to lay out a comprehensive scheme.&nbsp; I think this can be softened by
saying that missing areas need to be augmented with other libraries or are
simply left up to the developer.&nbsp; I think using the ASVS as a rough guideline
for the organization is a good idea.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>--Jeff<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

</div>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> owasp-leaders-bounces@lists.owasp.org
[mailto:owasp-leaders-bounces@lists.owasp.org] <b>On Behalf Of </b>Arshan
Dabirsiaghi<br>
<b>Sent:</b> Wednesday, April 15, 2009 11:55 PM<br>
<b>To:</b> Andrew van der Stock<br>
<b>Cc:</b> Owasp leaders<br>
<b>Subject:</b> Re: [Owasp-leaders] Struts2 security gap analysis<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<div>

<p class=MsoNormal>Thx Andrew - yes, it is missing quite a bit from your
perspective which I suspect may be a common one. Some general thoughts:&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>I am afraid I may not be able to completely seperate opinion
from fact because proving one methodology provides more assurance is a
non-trivial task. I will have to think about it. It's not like we have a lot of
hard data in this field. &nbsp;<br>
<br>
There is a bit of a method to the madness as far as the security areas I
covered. I wanted to choose security areas they could easily understand and
wouldn't out of hand reject as part of their charter. However I will revisit
this because I don't want it to seem incomplete. You think short stubs would be
ok?&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>As far as moving the appendix entries up, there is simply
too much code and it's very redundant, which is why I put in the
&quot;Centralized..&quot; section and appendices to let readers interested in
seeing the code know where they could find it.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>I will take a look at your specific edits and get back to
you soon.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Arshan<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal style='margin-bottom:12.0pt'><br>
On Apr 15, 2009, at 10:21 PM, &quot;Andrew van der Stock&quot; &lt;<a
href="mailto:vanderaj@owasp.org">vanderaj@owasp.org</a>&gt; wrote:<o:p></o:p></p>

</div>

<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>

<div>

<p class=MsoNormal>@James - you've obviously not met Arshan then. He likes
offense.&nbsp;:)&nbsp;<o:p></o:p></p>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>@Arshan - I've sent you some comments as a marked up
document, but I think it needs to be a lot more structured than it is, with the
appendices rolled into the chapters. You shouldn't have to go to two places in
the document to figure out what is the gap and what is needed.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>The opinion on the state of the J2EE security landscape
taints the document overly much. There's no justification (i.e. references or
well argued reasoning) for the opinions, and none of the opinions help Struts2
developers decide why they should implement or ignore a gap. I strongly suggest
the removal of opinion for the most part outside of recommendations.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>I suggest the following structure:<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>1. Introduction&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Basically the current text<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>2. Gap analysis<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>A simple table for each chapter, with three columns, one
line per row using ASVS Level 2B as the baseline.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-family:Courier'>Verification &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|&nbsp;ESAPI
&nbsp; | Struts2</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-family:Courier'>---------------------------------------------------------------------------</span><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><span style='font-family:Courier'>2.6 Verify that all
authentication decisions are logged | Present | Missing</span><o:p></o:p></p>

</div>

<div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>This section should be entirely factual with zero opinion.
If there's a partial implementation, consider footnotes, end notes, or use the
recommendation text to describe what needs to happen to bring it up to
scratch.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</div>

<div>

<p class=MsoNormal><b>3. Recommendations</b><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>A simple bullet list of your existing recommendations,
including why each missing control should be included in Struts2 (or whatever
product). This is where opinion can creep in, as it's about what WE think
Struts2 should do. We should also use RFC2119 meanings for may, should, could,
must, etc. as currently, there's too many wooly recommendations that have
unclear outcomes.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>There should be three choice of recommendation:<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>A) Struts2 to&nbsp;document&nbsp;preferred mechanism (i.e.
in Logging, this is to use Log4j) in the official documentation<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>B) May implement<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>C) Should&nbsp;implement<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>For the last two, we need to put up absolutely everything
they need to do to satisfy the gap. Adopting ESAPI is one choice for them, but
that choice belongs in the introduction of the entire document, but to
continuously state &quot;Adopt ESAPI&quot; is not going to cut it as it does
not describe HOW to close the gap.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>For example, in the input validation chapter, we should
describe what is missing from Struts2 (e.g. canonicalization) and how that
should be implemented in the recommendation. That allows Struts2 to consider
implementing the control themselves, or to adopt ESAPI as they see fit.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><b>4. References</b><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>As per current text.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal><b>What's missing in this document</b><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<div>

<p class=MsoNormal>The document is missing quite a lot of security sections:<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Session management<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>Cryptography<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>Error Handling (there is one para near the beginning, but it
should be called out explicitly)<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>Data Protection<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>Communications Security<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>HTTP Security<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>Security Configuration<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>I'd probably leave off malicious code and internal security
verifications as they're more advanced than what is truly necessary for a
framework today, particularly when Struts2 (and most frameworks) are missing so
many key controls.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>As it stands,&nbsp;I'd really, really, really recommend
AGAINST release without these sections as it feels less than a third finished
right now. Particularly the access control section that does not tell you the
gaps in Struts2 nor what gaps should be filled. For a gaps document, that's too
huge a gap for this document to be taken seriously by the Struts2
developers.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>thanks,<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>Andrew<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<div>

<div>

<p class=MsoNormal>On 15/04/2009, at 11:33 PM, McGovern, James F (HTSC, IT)
wrote:<o:p></o:p></p>

</div>

<p class=MsoNormal><br>
<br>
<o:p></o:p></p>

<div>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:blue'>Could you publish on the OWASP site and not use URLs that may be
offensive to others...</span><span style='font-size:10.0pt;font-family:"Verdana","sans-serif";
color:black'><o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</div>

</div>

</blockquote>

</div>

</div>

</body>

</html>