<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.communities.hp.com/securitysoftware/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Following the White Rabbit Blog : software security</title><link>http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/tags/software+security/default.aspx</link><description>Tags: software security</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Defining Security as a Business Requirement</title><link>http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/2009/02/05/defining-security-as-a-business-requirement.aspx</link><pubDate>Thu, 05 Feb 2009 04:53:00 GMT</pubDate><guid isPermaLink="false">94bda21f-7d63-4095-85de-7c2a68fb172c:87792</guid><dc:creator>RafalLos</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.communities.hp.com/securitysoftware/blogs/rafal/rsscomments.aspx?PostID=87792</wfw:commentRss><comments>http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/2009/02/05/defining-security-as-a-business-requirement.aspx#comments</comments><description>&lt;p&gt;This post is a follow-up to the previous one on QA: Defect vs. Vulnerability.&amp;nbsp; All the highly-intelligent responses I received got me thinking further, and so here I present my additional thoughts.&lt;/p&gt;&lt;p&gt;This may not be revolutionary - but given the response I received regarding the terminology difference between defect and vulnerability I think the only logical conclusion we can reach is that &lt;b&gt;if security is not a foundational business requirement, we&amp;#39;re sunk&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;To expand on this point a little more I think it&amp;#39;s important to follow non-technical critical-thinking here.&amp;nbsp; Anything that does not make it into the functional specification of an application [web or otherwise] is an afterthought.&amp;nbsp; It has been conclusively [and repeatedly] proven that anything that is not &amp;quot;baked in&amp;quot; as a requirement is nearly impossible to &lt;i&gt;fix&lt;/i&gt; later on, as an after-thought.&amp;nbsp; So we&amp;#39;re presented with a puzzler.&amp;nbsp; &lt;i&gt;Security&lt;/i&gt; must be a business-level requirement.&amp;nbsp; So how then does one translate vulnerabilities into a business requirement, sanely?&amp;nbsp; Simply stating &amp;quot;... the application shall be free of unintended design flaws and security vulnerabilities&amp;quot; is like asking an architect to build a structure that will withstand every known (and unknown) possible attack - it&amp;#39;s simply illogical.&lt;/p&gt;&lt;p&gt;Strangely, program leads that manage these large-scale web applications at the heart of nearly every major breach want concise, identified things to &lt;i&gt;not put into the code&lt;/i&gt;... but since that list is a moving target the security team gets penalized for the nature of security itself.&amp;nbsp; This is the reason why black-listing input is a losing proposition... you&amp;#39;re always going to be in an arms race with the &lt;i&gt;bad guys&lt;/i&gt;... and you&amp;#39;ll never win.&lt;/p&gt;&lt;p&gt;I&amp;#39;ve heard some recent conversations hit the wire around using the CWE Top 25 or some other list as a definitive list of &lt;i&gt;coding errors to avoid in web applications&lt;/i&gt; but I&amp;#39;m not sure if that will actually solve the problem.&amp;nbsp; The problem with this approach is and will be that these lists are exclusionary measures.&amp;nbsp; These lists illustrate what we must &lt;i&gt;exclude&lt;/i&gt; to be [more] secure.&amp;nbsp; Turning it around and making statements like &lt;i&gt;validate all input&lt;/i&gt; makes little more sense, especially given that &lt;i&gt;input validation&lt;/i&gt; must be defined in the context of the situation, and there is never a one-size-fits-all answer.&amp;nbsp; To illustrate the point further - input validation may mean excluding certain character sets/patterns &lt;i&gt;and&lt;/i&gt; pre-defining acceptable input options ... but this does not account for things like free-form input or other use-case specific examples.&lt;/p&gt;&lt;p&gt;In the end, the crux of the problem lies in the nature of security vulnerabilities.&amp;nbsp; Security vulnerabilities are a moving target and although they can be loosely defined and lumpted into Top 7/10/25 lists it is not logical to consider these lists complete or even functional for designing software.&amp;nbsp; Will a web application be &lt;i&gt;secure&lt;/i&gt; if it follows the CWE Top 25 and addresses those issues?&amp;nbsp; What about the OWASP Top 10?&amp;nbsp; I don&amp;#39;t think anyone has that answer, or at least is willing to stake their reputation on it.&lt;/p&gt;&lt;p&gt;So back to defining &lt;i&gt;security&lt;/i&gt; as a &lt;i&gt;business-level requirement&lt;/i&gt;... can it be done?&amp;nbsp; Can one clearly articulate requirements to secure data/transactions/processes/whatever *before* the technologists get involved; meaning, before the means to execution are defined?&amp;nbsp; I will leave that up for debate. &lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.communities.hp.com/securitysoftware/aggbug.aspx?PostID=87792" width="1" height="1"&gt;</description><category domain="http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/tags/functional+specification/default.aspx">functional specification</category><category domain="http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/tags/quality/default.aspx">quality</category><category domain="http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/tags/process/default.aspx">process</category><category domain="http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/tags/application+security/default.aspx">application security</category><category domain="http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/tags/web+application+security+business+case/default.aspx">web application security business case</category><category domain="http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/tags/software+quality/default.aspx">software quality</category><category domain="http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/tags/software+security/default.aspx">software security</category><category domain="http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/tags/QA/default.aspx">QA</category></item><item><title>Open or Closed?  Which source is more secure?</title><link>http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/2008/12/17/open-source-software-more-or-less-secure.aspx</link><pubDate>Wed, 17 Dec 2008 05:14:00 GMT</pubDate><guid isPermaLink="false">94bda21f-7d63-4095-85de-7c2a68fb172c:86786</guid><dc:creator>RafalLos</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.communities.hp.com/securitysoftware/blogs/rafal/rsscomments.aspx?PostID=86786</wfw:commentRss><comments>http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/2008/12/17/open-source-software-more-or-less-secure.aspx#comments</comments><description>&lt;p&gt;&lt;i&gt;&lt;b&gt;&amp;quot;Is Open-Source software more secure than Closed-Source software?&amp;quot; &lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Of all the questions I get asked on a regular basis on web application security - perhaps this is one of the toughest.&amp;nbsp; The answer, quite simply, is no.&amp;nbsp; There are arguments that can be made for as well as against the security of either - but I think it&amp;#39;s most prudent to lay out the Pros/Cons of each approach so that it&amp;#39;s possible to look at the case for each more objectively.&lt;/p&gt;&lt;p&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;The Positives&lt;/font&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Open-Source&lt;/b&gt;: A case can be made that with open-source software (OSS) there is complete transparency, or at least the appearence of such.&amp;nbsp; The software&amp;#39;s code is freely available, and one can modify it as he or she so chooses.&amp;nbsp; In theory, vulnerabilties of the intentional variety would be more difficult to hide in this scenario (albeit not impossible, obviously). &amp;nbsp; With complete transparency comes the natural ability for many, many people (including security-conscious folks) to put eyeballs on the code and find &lt;i&gt;and disclose&lt;/i&gt; bugs more readily.&amp;nbsp; In this case the good guys get an even crack at defects.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Closed-Source&lt;/b&gt;: With closed source, the source code is unavailable, thus the security by obscurity model falls in place.&amp;nbsp; Also, closed-source is typically for-profit software which is given a great deal of scrutiny to be more secure as security defects can have a devastating effect on the application itself.&amp;nbsp; Security defects in closed-source often go un-noticed for long periods of time, and some are never discovered.&amp;nbsp; With the lack of source code, finding security defects in closed-source software requires extreme amounts of negative testing, using techniques such as fuzzing.&amp;nbsp; Without direct knowledge of the code the process of writing [effective] exploits is often trial-and-error&lt;/li&gt;&lt;/ul&gt;&lt;font color="#ffffff"&gt;The Negatives&lt;/font&gt;&lt;font color="#ffffff"&gt;&lt;br /&gt;&lt;/font&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Open-Source&lt;/b&gt;: Since open-source is more transparent, security defects are found more rapidly - often by the bad guys.&amp;nbsp; Also, open-source software is often built by many different people, and more often than not - on a shoestring budget.&amp;nbsp; The low-budget (free software doesn&amp;#39;t generate a lot of revenue) aspect, it can be argued, prevents the developer from having the proper resources at his or her disposal to produce less defective code.&amp;nbsp; Also, because OSS is often a collaborative effort, it&amp;#39;s relatively easy to make mistakes in the way the different pieces interact with each other, which can lead to security defects.&amp;nbsp; Open-Source Software quite simply doesn&amp;#39;t typically have the monetary backing to produce good quality, more-secure code.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Closed-Source&lt;/b&gt;: Since closed-source software doesn&amp;#39;t make the source code available, and it&amp;#39;s typically &lt;i&gt;illegal&lt;/i&gt; to reverse engineer the code - it becomes up to the developer to produce verifiably secure code.&amp;nbsp; This also puts the &lt;i&gt;good guys&lt;/i&gt; at a distinct disadvantage, because while the hackers care naught for the DMCA and otherlaws, the white hats have to follow the rules.&amp;nbsp; Not getting a chance to pour over the code makes it difficult to find or expose critical security defects, until it&amp;#39;s often way too late.&amp;nbsp; Closed-source software also suffers from the arrogance problem - it goes something like this: &amp;quot;We&amp;#39;re a big professional software developer, not some open-source fly-by-night group, our code is by far superior because we have money and highly-paid developers.&amp;nbsp; Trust us, and don&amp;#39;t reverse-engineer our code or we&amp;#39;ll have you arrested and charged&amp;quot;.&amp;nbsp; This truly becomes a problem for researchers and penetration testers trying to do good, legitimate work.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So, what&amp;#39;s the verdict?&amp;nbsp; Each has their merits and problems, much like the debate over MS Windows vs. Linux... the answer to which is this: &amp;quot;Each, in the hands of a poorly trained chimp, can be exploited rather quickly&amp;quot;.&amp;nbsp; So should you be making the switch to OSS (Open-Source Software) and abandoning closed-source?&amp;nbsp; Probably not - but on that same token, don&amp;#39;t discount one or the other without fully understanding the ramifications of each.&lt;/p&gt;&lt;p&gt;&amp;nbsp;Merry Christmas, Happy Holidays... &lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.communities.hp.com/securitysoftware/aggbug.aspx?PostID=86786" width="1" height="1"&gt;</description><category domain="http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/tags/OSS+security/default.aspx">OSS security</category><category domain="http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/tags/open-source+software+security/default.aspx">open-source software security</category><category domain="http://www.communities.hp.com/securitysoftware/blogs/rafal/archive/tags/software+security/default.aspx">software security</category></item></channel></rss>