<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>cyphersec</title>
	
	<link>http://www.cyphersec.com</link>
	<description>A blog about Web Application Security and .NET development best practices</description>
	<lastBuildDate>Tue, 23 Feb 2010 18:02:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CypherSecurity" /><feedburner:info uri="cyphersecurity" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-sa/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:emailServiceId>CypherSecurity</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>OWASP Code Crawler 2.5 Released</title>
		<link>http://www.cyphersec.com/archives/730</link>
		<comments>http://www.cyphersec.com/archives/730#comments</comments>
		<pubDate>Sat, 23 Jan 2010 16:53:42 +0000</pubDate>
		<dc:creator>Alessio Marziali</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/web/htdocs/www.cyphersec.com/home/wp-content/plugins/autometa/autometa.php</b> on line <b>364</b><br />
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[owasp.org]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Code Crawler]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.cyphersec.com/2010/01/23/owasp-code-crawler-2-5-released/</guid>
		<description><![CDATA[
OWASP Code Crawler is a .NET Windows Forms application built using Microsoft .NET C#, XML, Linq and few third parties open source components. Its development started in fall 2007 as a very simple prototype from a mail conversation between me (Alessio Marziali) and Eoin Keary (Code Review Project Leader and Board Member). Eoin spotted the [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="361" src="http://itc.blogs.com/photos/uncategorized/celebration6_3.jpg" width="541" border="0" /></p>
<p><strong>OWASP Code Crawler</strong> is a .NET Windows Forms application built using Microsoft .NET C#, XML, Linq and few third parties open source components. Its development started in fall 2007 as a very simple prototype from a mail conversation between me (Alessio Marziali) and Eoin Keary (Code Review Project Leader and Board Member). Eoin spotted the hidden power of this tool and asked me if I could be interested in making it open source. Thrilled by the idea of joining OWASP, few months later Code Crawler became an official OWASP Project.</p>
<p>Over the years Code Crawler has substantially grown, mainly with the help of other volunteers around the world, and today I am very pleased to announce we have reached version 2.5. I personally want to thanks <strong>Tripurai Rai</strong>, <strong>Sasikumar Ganesan </strong>and<em> </em><strong>Paulo Coimbra</strong> for helping me make this happen. In this release we have been focusing mainly on the UI of the application and also improved our database while introducing utilities like STRIDE, DREAD Calculator and ASP.NET ViewState Decoder. For a detailed list of features you can refer to the changelog attached at the end of this post.</p>
<h2>License</h2>
<p>OWASP Code Crawler 2.5 is a <b>Creative Commons Attribution Share Alike 3.0</b> open source application which means you are free to copy, distribute, transmit and remix this code as you like. In this case, you must attribute the work in the manner specified by the author or licensor (<i>but not in any way that suggests that they endorse you or your use of the work</i>). If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license.</p>
<h2>Download</h2>
<p>OWASP Code Crawler 2.5 can be downloaded from <a href="http://codecrawler.codeplex.com.">http://codecrawler.codeplex.com.</a> Please be advised that in order to run Code Crawler requires <strong>Microsoft .NET Framework 3.5</strong>. You may download it from <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&amp;displaylang=en" target="_blank"><strong>here</strong></a> (link to Microsoft download website). </p>
<h2>Changelog</h2>
<ul>
<li><b>Code Crawler Editor</b>
<ul>
<li>Find (CTRL+F) </li>
<li>Mark Findings </li>
<li>Select All (CTRL+A) </li>
<li>Copy as RTF (sweet) </li>
<li>CodeFolding </li>
<li>SyntaxHighlight </li>
<li>BracketMatching </li>
<li>Unlimited Undo/Redo buffer </li>
<li>Bookmarks </li>
<li>Go to line (CTRL+G) </li>
<li>Replace </li>
<li>Breakpoints </li>
</ul>
</li>
<li><b>Single Scan Form</b>
<ul>
<li>New User Interface </li>
<li>STRIDE Classification </li>
<li>Direct links to MSDN and Google </li>
<li>Shortcuts to Notepad and Calc </li>
<li>Threats Count </li>
<li>Printing </li>
<li>RTF Report </li>
</ul>
</li>
<li><b>Visual Studio .NET (for VS 2005 - 2008)</b>
<ul>
<li>Supports ONLY C# Project files (*.csjpro) </li>
<li>Bigger fonts </li>
</ul>
</li>
<li><b>Mainform</b>
<ul>
<li>New User Interface </li>
<li>Links to OWASP content </li>
<li>WASC Threat Classification 2.0 </li>
<li>Sun Java Guidelines </li>
<li>Removed OWASP Browser </li>
<li>Removed Network Scan </li>
<li>Removed Reporting Frame </li>
</ul>
</li>
<li><b>Database</b>
<ul>
<li>286 Keywords </li>
<li>Multi STRIDE Schema </li>
<li>Refactoring </li>
</ul>
</li>
<li><b>Utilities</b>
<ul>
<li>ASP.NET ViewState Decoder </li>
<li>DREAD Calculator </li>
</ul>
</li>
</ul>
<img src="http://feeds.feedburner.com/~r/CypherSecurity/~4/olTMCspf5Gw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyphersec.com/archives/730/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OWASP Code Crawler 2.5 – Screenshots</title>
		<link>http://www.cyphersec.com/archives/720</link>
		<comments>http://www.cyphersec.com/archives/720#comments</comments>
		<pubDate>Tue, 19 Jan 2010 19:39:38 +0000</pubDate>
		<dc:creator>Alessio Marziali</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/web/htdocs/www.cyphersec.com/home/wp-content/plugins/autometa/autometa.php</b> on line <b>364</b><br />
		<category><![CDATA[Code Crawler]]></category>
		<category><![CDATA[owasp.org]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.cyphersec.com/2010/01/19/code-crawler-2-5-screenshots/</guid>
		<description><![CDATA[It has been a while since I have posted something about Code Crawler, the project I am developing since fall 2007. Our development team, which is now composed by three developers, is in the process of making the magic happen again.
What follows is a list of screenshots of Code Crawler 2.5. Code Crawler is more [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">It has been a while since I have posted something about Code Crawler, the project I am developing since fall 2007. Our development team, which is now composed by three developers, is in the process of making the magic happen again.</p>
<p align="justify">What follows is a list of screenshots of <strong>Code Crawler 2.5</strong>. Code Crawler is more or less a new project today. We have taken the good and removed the bad. So far we have completed&#160; <strong>STRIDE</strong> automatic classification, <strong>DREAD</strong>, Improved performances, Enchanted our database in terms of quality and quantity and most of all we said good bye to our previous UI.</p>
<p><a href="http://www.cyphersec.com/wp-content/uploads/2010/01/SingleFile.png"><img title="SingleFile" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="339" alt="SingleFile" src="http://www.cyphersec.com/wp-content/uploads/2010/01/SingleFile_thumb.png" width="528" border="0" /></a> </p>
<p align="center">Single File Scan new User Interface.</p>
<p><a href="http://www.cyphersec.com/wp-content/uploads/2010/01/CsProj.png"><img title="CsProj" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="341" alt="CsProj" src="http://www.cyphersec.com/wp-content/uploads/2010/01/CsProj_thumb.png" width="527" border="0" /></a></p>
<p align="center">Visual Studio .NET (2005/2008) Integration is now fully working.</p>
<p><a href="http://www.cyphersec.com/wp-content/uploads/2010/01/MultiFiles.png"><img title="MultiFiles" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="352" alt="MultiFiles" src="http://www.cyphersec.com/wp-content/uploads/2010/01/MultiFiles_thumb.png" width="531" border="0" /></a></p>
<p>Code Crawler can now scan hundreds of files at the same time without leaving nothing behind. In this example Code Crawler has finished scanning a very busy Visual Studio Solution and an external file using single file mode. The user can switch easily between the result at any time.</p>
<p><a href="http://www.cyphersec.com/wp-content/uploads/2010/01/DreadCalculator.jpg"><img title="DreadCalculator" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="339" alt="DreadCalculator" src="http://www.cyphersec.com/wp-content/uploads/2010/01/DreadCalculator_thumb.jpg" width="535" border="0" /></a> </p>
<p align="center">Dread Calculator is an easy to use tool integrated within Code Crawler which makes Risk Analysis easy.</p>
<p><a href="http://www.cyphersec.com/wp-content/uploads/2010/01/OwaspResources.png"><img title="OwaspResources" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="203" alt="OwaspResources" src="http://www.cyphersec.com/wp-content/uploads/2010/01/OwaspResources_thumb.png" width="533" border="0" /></a> </p>
<p>Code Crawler provides direct links to all OWASP major contents such as Guides and tools.</p>
<p><a href="http://www.cyphersec.com/wp-content/uploads/2010/01/SingleFilesUtilities.png"><img title="SingleFilesUtilities" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="121" alt="SingleFilesUtilities" src="http://www.cyphersec.com/wp-content/uploads/2010/01/SingleFilesUtilities_thumb.png" width="552" border="0" /></a> </p>
<p>The single source code file form provides easy accessible options such as:</p>
<ol>
<li>Archive (for reporting purposes and further investigations) </li>
<li>Print Source Code </li>
<li>Notepad </li>
<li>Calc </li>
<li>Google </li>
<li>MSN </li>
<li>Threats Count. </li>
</ol>
<p>Download links, next week, hopefully.</p>
<img src="http://feeds.feedburner.com/~r/CypherSecurity/~4/IVaSmvw5NHA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyphersec.com/archives/720/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Microsoft releases Cross Site Scripting Security reference.</title>
		<link>http://www.cyphersec.com/archives/707</link>
		<comments>http://www.cyphersec.com/archives/707#comments</comments>
		<pubDate>Tue, 19 Jan 2010 15:16:22 +0000</pubDate>
		<dc:creator>Alessio Marziali</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/web/htdocs/www.cyphersec.com/home/wp-content/plugins/autometa/autometa.php</b> on line <b>364</b><br />
		<category><![CDATA[SDLC]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Secure Programming]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.cyphersec.com/2010/01/19/microsoft-releases-cross-site-scripting-security-reference/</guid>
		<description><![CDATA[ 
Cross-site scripting attacks are on the rise because they are easy for attackers to craft and execute. In addition, they allow attackers to gather the most valuable content (user data) rapidly and in a manner that can easily go unnoticed by the user and often the Web site or application itself. As XSS attacks [...]]]></description>
			<content:encoded><![CDATA[<p><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="97" alt="image" src="http://www.cyphersec.com/wp-content/uploads/2010/01/image.png" width="539" border="0" /> </p>
<blockquote><p>Cross-site scripting attacks are on the rise because <strong>they are easy for attackers to craft and execute</strong>. In addition, they allow attackers to gather the most valuable content (user data) rapidly and in a manner that can easily go unnoticed by the user and often the Web site or application itself. As XSS attacks continue, <strong>it is imperative that development organizations prepare themselves with the solutions needed to rapidly address the problems as they occur</strong>. It is equally important that long-term solutions including security policies/requirements are in place to design, <strong>implement, verify</strong>, and <strong>release code that proactively protects your customers from XSS attacks</strong>.</p>
</blockquote>
<p align="justify">Microsoft has released another document as part of their SDLC document library. This time is a 21 page document titled “Quick Security Reference : Cross Site Scripting”. The scope of this document is to increase awareness of XSS Vulnerabilities to each persona involved in software development. In particular Microsoft identifies four different roles: Business decision maker, architect, developer and tester. </p>
<p align="justify">Quick Security Reference Cross Site Scripting Reference also includes results of a basic survey of software companies that have established practices for <strong>fixing vulnerabilities</strong> that lead to attacks approximate that the costs associated with remediating a Web site that has encountered <strong>XSS like</strong> attack is around <strong>40-man-hours per incident</strong>. That cost combined with the cost of hiring or training engineer to address the problem (~100$/hour) and the average number of seven XSS (or similar) exploitable vulnerabilities per Web site brings the total estimated cost to $28,000 to fix each problem reactively.</p>
<p align="justify">Figure 1. “12 Web application vulnerabilities between January 2006 and June 2007” shows XSS at the top of the ladder leaving no doubt that XSS is definitely one of the most exploited vulnerabilities in today applications.</p>
<p align="left"><img title="image" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="317" alt="image" src="http://www.cyphersec.com/wp-content/uploads/2010/01/image1.png" width="406" border="0" /></p>
<p align="justify">Each persona is then introduced to different topics related to XSS, strictly related to their role and responsibilities. An architect will be more involved in Input Validation Rules, Output encoding strategies, Future Design Considerations rather then Identifying Untrusted Input and Writing Secure Code just to mention few. Useful insights on how to identify and classify an XSS type vulnerability (<em>Reflected, Stored, Local</em>) and software development best practices are also part of the document. </p>
<p align="justify">In conclusion; Software developers may find this document surprisingly useful as it covers almost everything they need to know in order to prevent, discover, mitigate and fix XSS vulnerabilities.</p>
<img src="http://feeds.feedburner.com/~r/CypherSecurity/~4/OJCc4Zs3Uvo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyphersec.com/archives/707/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>32 millions accounts stolen? An inconvenient truth</title>
		<link>http://www.cyphersec.com/archives/687</link>
		<comments>http://www.cyphersec.com/archives/687#comments</comments>
		<pubDate>Sun, 20 Dec 2009 14:37:50 +0000</pubDate>
		<dc:creator>Alessio Marziali</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/web/htdocs/www.cyphersec.com/home/wp-content/plugins/autometa/autometa.php</b> on line <b>364</b><br />
		<category><![CDATA[CyberCrime]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Best practices]]></category>
		<category><![CDATA[Sql Injection]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.cyphersec.com/2009/12/20/32-millions-credentials-stolen-an-inconvenient/</guid>
		<description><![CDATA[&#160; A site for social networking developers has been hit with a major SQL Injection attack that exposed more than 30 million user names and passwords RockYou, a site that delivers widgets for social networking developers for MySpace, Facebook and other. The bug has been fixed but not before the hacker it.
In fact, the hacker [...]]]></description>
			<content:encoded><![CDATA[<p align="justify"><img title="SQL,jpg" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="133" alt="SQL,jpg" src="http://www.cyphersec.com/wp-content/uploads/2009/12/SQLjpg1.jpg" width="537" border="0" />&#160; <br />A site for social networking developers has been hit with a major SQL Injection attack that exposed more than 30 million user names and passwords RockYou, a site that delivers widgets for social networking developers for MySpace, Facebook and other. The bug has been fixed but not before the hacker it.</p>
<p align="justify">In fact, the hacker that goes by the alias “igigi” has published on the 15th of December on his blog the <a href="http://rockyou.com/" target="_blank">Rockyou</a> database structure along with samples of the stolen data. The hacker <a href="http://igigi.baywords.com/rockyou-com-exposed-more-than-32-millions-of-passwords-in-plaintext/" target="_blank">claims</a> he has <strong>downloaded over 32,603,388</strong> (32 millions) <strong>user accounts</strong>.</p>
<p align="justify">Rockyou is currently making users aware of what happened and what they are doing in order to reduce the harm.</p>
<blockquote><p>“We are investigating the data breach, <strong>reviewing our security protocols</strong>, and <strong>implementing new practices to prevent this from happening again</strong>. For example, we are taking the following steps:       </p>
<p>1. <strong>We are encrypting all passwords;</strong>       <br />2. We are upgrading the legacy platform with the same infrastructure and industry <strong>standard security protocols</strong> we employ on our partner applications platforms;       <br />3. We are <strong>reviewing our current data security features</strong> and ensuring that they meet industry standards and best practices; and       <br />4. We are cooperating with Federal authorities to investigate the illegal breach of our database.       </p>
<p><strong>We are sorry for the inconvenience</strong> this illegal intrusion onto the RockYou system has caused our users. We will continue to advise our users of any information that would help them.</p>
</blockquote>
<p align="justify">What we can learn from this accident is quite obvious, SQL Injection is still one of the most popular threats, and of course, storing password as simple plaintext is definitely one of the biggest mistakes you can do while architecting a web application. This is why less than a month ago I was writing here on cyphersec.com a series of best practices aimed at increasing web application security. I’m sure I’ll add the Rockyou accident to the list of real world examples that proves why having plaintext passwords is a bad idea.</p>
<blockquote><p align="justify">Rule 14# - <em>Never compare passwords</em>, <u>compare the hash</u>. Do not use MD5 which could be hacked using Rainbow tables, use RIPEMD160 instead.</p>
</blockquote>
<p align="justify">Anyway, the worst part of the story is not the reputation of Rockyou which, obviously, has been hit hard - the problem is people still considering the side effects of non implementing application security as an inconvenient.</p>
<blockquote><p><strong>DarkReading</strong>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; – <a href="http://www.darkreading.com/database_security/security/attacks/showArticle.jhtml?articleID=222002178" target="_blank">Social Networking Developer Site Database Hacked In Sql Injection Attack</a>       <br /><strong>Owasp Foundation</strong> – <a href="http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet" target="_blank">SQL Injection Prevention Cheat Sheet</a>       <br /><strong>cyphersec.com</strong>&#160;&#160;&#160;&#160;&#160;&#160; – <a href="http://www.cyphersec.com/2009/10/04/how-to-secure-an-asp-net-application/" target="_blank">Security Best Practices: ASP.NET Applications</a>       <br /><strong>cyphersec.com</strong>&#160;&#160;&#160;&#160;&#160;&#160; – <a href="http://www.cyphersec.com/2008/01/24/01-hackattack-come-rubare-un-database/" target="_blank">Toyo Tires, How to steal a database</a> (Italian Language)&#160; </p>
</blockquote>
<img src="http://feeds.feedburner.com/~r/CypherSecurity/~4/thgAm99HK48" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyphersec.com/archives/687/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft security considerations for clients and cloud applications</title>
		<link>http://www.cyphersec.com/archives/684</link>
		<comments>http://www.cyphersec.com/archives/684#comments</comments>
		<pubDate>Sun, 22 Nov 2009 11:39:52 +0000</pubDate>
		<dc:creator>Alessio Marziali</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/web/htdocs/www.cyphersec.com/home/wp-content/plugins/autometa/autometa.php</b> on line <b>364</b><br />
		<category><![CDATA[riflessioni]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[SDL]]></category>
		<category><![CDATA[Windows Azure]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.cyphersec.com/2009/11/22/microsoft-security-considerations-for-clients-and-cloud-applications/</guid>
		<description><![CDATA[Microsoft is about to release its new Cloud computing product named Windows Azure by January 2010. Azure will provide a new Cloud Computing option to software vendors and application developers.
With that said, Microsoft has released on the 13th of November a six paged document “Security Considerations for Client and Cloud Applications” via their Secure Development [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Microsoft is about to release its new Cloud computing product named Windows Azure by January 2010. Azure will provide a new Cloud Computing option to software vendors and application developers.</p>
<p align="justify">With that said, Microsoft has released on the 13th of November a six paged document “<em>Security Considerations for Client and Cloud Applications” </em>via their Secure Development Lifecycle website. Surprisingly, the document doesn’t actually includes any advice for application developers nor for IT Managers considering moving their applications on the cloud. </p>
<p align="justify">It’s more just a&#160; “<em>Look. Here how we do cloud computing at Microsoft and, as you can see we do actually care about security. So pick us up</em>” document.</p>
<p align="justify">The only interesting part of the document which is worth mentioning is&#160; an overview of what the <em>Operational Services Security and Compliance</em> team within Microsoft does. <strong>OSSC team works</strong> <strong>across the operation, product, and service delivery teams and with</strong> <strong>internal</strong> and <strong>external auditors</strong> <strong>to</strong> <strong>ensure compliance with the relevant standards and regulatory obligations</strong>.     </p>
<p>The following list presents an overview of some of the audits and assessments that the Microsoft cloud environment must undergo on a regular basis: </p>
<ul>
<li><b>Payment Card Industry Data Security Standard (PCI-DSS)</b>. This standard requires an annual review and validation of the security controls related to credit card transactions. </li>
<li><b>Media Ratings Council</b>. This relates to the integrity of advertising system data generation and processing. </li>
<li><b>Sarbanes-Oxley (SOX)</b>. This legislation requires that selected systems are audited annually to validate compliance with key processes related to financial reporting integrity. </li>
<li><b>Health Insurance Portability and Accountability Act (HIPAA)</b>. This act specifies privacy, security, and disaster recovery guidelines for the electronic storage of health records. </li>
<li><b>Internal audit and privacy assessments</b>. Assessments occur throughout a given year. </li>
</ul>
<p align="justify">After analyzing all of these requirements, Microsoft determined that many of the audits and assessments required an evaluation of the same operational controls and processes. Recognizing the significant opportunity to eliminate redundant efforts, streamline processes, and proactively manage compliance expectations in a more comprehensive manner, the OSSC team <strong>developed a comprehensive compliance framework</strong>. This framework and associated processes follow the five-step methodology represented in the following illustration.</p>
<p align="justify">&#160;<a href="http://www.cyphersec.com/wp-content/uploads/2009/11/image2.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="316" alt="image" src="http://www.cyphersec.com/wp-content/uploads/2009/11/image_thumb1.png" width="518" border="0" /></a> </p>
<ul>
<li>
<div align="justify"><b>Identify and integrate requirements</b>. Define the scope and applicable controls. Standard operating procedures (SOPs) and process documents are gathered and reviewed. </div>
</li>
<li>
<div align="justify"><b>Assess and remediate gaps</b>. Identify and remediate gaps in process or technology controls. </div>
</li>
<li>
<div align="justify"><b>Test effectiveness and assess risk</b>. Measure and report on the effectiveness of controls. </div>
</li>
<li>
<div align="justify"><b>Attain certifications and attestations</b>. Engage with third-party certification authorities and auditors. </div>
</li>
<li>
<div align="justify"><b>Improve and optimize</b>. Assess and document the root cause of any noncompliance, and then track the remediation process. This phase also involves continuing to optimize controls across security domains to generate efficiencies in passing future audit and certification reviews. </div>
</li>
</ul>
<h2>Different Applications different level of security required</h2>
<p>The <strong>security required will vary</strong>, depending on the type of system. For example, a government system dealing with millions of social security numbers will have much stronger requirements than a standard business application. Microsoft classifies systems as low, moderate, or high business impact to help determine security requirements and the strength of security features that they must provide. The categories take into account the relative potential for financial and reputational damage if the asset was involved in a security incident. For example, data assets falling into the moderate impact category are subject to encryption requirements when they reside on removable media or when they are involved in external network transfers. Data in the high impact category, in addition to moderate impact requirements, is subject to encryption requirements for storage and for <em>internal system and network transfers</em>.</p>
<p>For all cloud services that Microsoft offers, the <strong>documentation provided to users will always state what is protected <u>and how it is protected</u></strong>. For example, users who choose to host their applications “in the cloud” may want to have their applications and processing protected from those of other users. For these users, Microsoft is committed to providing this level of protection. Additional security feature and protection requirements will vary from user to user, and from application to application, depending on data sensitivity and on applicable laws and regulations. <strong>Microsoft will be transparent about the strength and applicability of the security protections that its cloud services offer so that users will know what security features and processes are available</strong>, and will be able to determine how Microsoft will protect their data and processing. The information provided will enable users to evaluate the suitability of Microsoft’s cloud platform for their security requirements and to make informed decisions about their use of cloud services.</p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=7c75f87f-f210-4ee0-a6d9-65d8a6ddd1b7&amp;displaylang=en" target="_blank">Download [docx] [microsoft.com]</a></p>
<img src="http://feeds.feedburner.com/~r/CypherSecurity/~4/FJ5db_6zWYI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyphersec.com/archives/684/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Security Development Lifecycle 4.1</title>
		<link>http://www.cyphersec.com/archives/677</link>
		<comments>http://www.cyphersec.com/archives/677#comments</comments>
		<pubDate>Fri, 20 Nov 2009 22:55:01 +0000</pubDate>
		<dc:creator>Alessio Marziali</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/web/htdocs/www.cyphersec.com/home/wp-content/plugins/autometa/autometa.php</b> on line <b>364</b><br />
		<category><![CDATA[riflessioni]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.cyphersec.com/2009/11/20/microsoft-security-development-lifecycle-4-1/</guid>
		<description><![CDATA[ 
The Microsoft Security Development Lifecycle (SDL) is an industry-Cleading software security assurance process. A Microsoft-wide initiative and a mandatory policy since 2004, the SDL has played a critical role in embedding security and privacy in Microsoft software and culture. Combining a holistic and practical approach, the SDL introduces security and privacy early and throughout [...]]]></description>
			<content:encoded><![CDATA[<p><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="110" alt="image" src="http://www.cyphersec.com/wp-content/uploads/2009/11/image.png" width="539" border="0" /> </p>
<blockquote><p>The Microsoft Security Development Lifecycle (SDL) is an industry-Cleading software security <strong>assurance process</strong>. A Microsoft-wide initiative and a mandatory policy since 2004, the <strong>SDL</strong> has <strong>played</strong> a <strong>critical role</strong> <strong>in</strong> embedding <strong>security</strong> and <strong>privacy</strong> in <strong>Microsoft software</strong> and culture. Combining a holistic and practical approach, the SDL introduces security and privacy early and throughout all phases of the development process. It has led Microsoft to measurable and widely recognized security improvements in flagship products, such as Windows Vista® and Microsoft SQL Server®. <strong>Microsoft is publishing the detailed SDL process guidance as part of its commitment to enable a more secure and trustworthy computing ecosystem</strong>.</p>
</blockquote>
<p>A new updated version of Microsoft Security Development Lifecycle has been released recently. The 125 pages whitepaper is a comprehensive set of guidelines aiming at making agile development and security best practices fit together for the first time.</p>
<p>In this release Microsoft indicates “7 Phases” as the hearth beating of the Security Development Lifecycle.</p>
<ol>
<li>Training <em>(Core Training)</em> </li>
<li>Requirements <em>(Define quality/bugs bar)</em> </li>
<li>Design <em>(Attack surface analysis – Threat modelling)</em> </li>
<li>Implementation <em>(Specify tools – Enforce banned functions – <strong>Static Analysis</strong> )</em> </li>
<li>Verification <em>(Dynamic / Fuzz testing – Verify threat models/attack surface )</em> </li>
<li>Release <em>(Response plan – Final Security Review – Release archive)</em> </li>
<li>Response <em>(Response execution)</em> </li>
</ol>
<p>For those who are new to SDLC and or to this whitepaper – <strong>read it</strong>. Anyone involved in professional software development should read carefully this document.</p>
<p>The <strong>Education and Awareness</strong> – Pre SDL Requirements: Security Training (for example) urge that all members of a software development team should receive appropriate training to stay informed about security basics and recent trends in security and privacy.     </p>
<p>In fact, Microsoft suggests individuals who develop software programs should attend <strong>at least one security training class each year</strong><strong>.</strong></p>
<blockquote><p>Security Training can help ensure software is created with security and privacy in mind and can also help development teams stay current on security issues. Project team members are strongly encouraged to seek <em>additional</em> security and privacy education that is appropriate to their needs or products.</p>
</blockquote>
<blockquote><p>The entire team should remain informed about security issues in the industry. Attacks and threats evolve constantly, and staying current is important.</p>
</blockquote>
<p>Another interesting part, which is new of this version is the Security Code Review. And how it’s introduced to the reader. </p>
<blockquote><p><strong>Security code reviews are a critical component of the Security Development Lifecycle</strong>. Given the opportunity to review old code or work on a new cool feature, <strong>developers lean towards the latter</strong>. Unsurprisingly, <strong>attackers</strong> don't target only new functionality; they <strong>will attack all code</strong>, <strong>regardless of its age</strong>. Waiting to make the code more secure in the next version of the product is not a good solution for protecting customers, and therefore, high-risk items that are considered the most sensitive and important for security should be reviewed in depth at the earliest opportunity.</p>
</blockquote>
<p>Microsoft suggest to determine the most-at risk components using the following criteria and perform an in-depth security review of the code making up those components.</p>
<ul>
<li><b>Priority 1</b> code is considered to be the most sensitive from a security standpoint. The following are examples of Priority 1 code, but please note this is not necessarily a definitive list. Pri 1 code is all Internet- or network-facing code, code in the Trusted Computing Base (TCB)—such as kernel or SYSTEM code, code running as administrator or Local System, code running as an elevated user (also includes LocalService and NetworkService), or features with a prior history of vulnerability, regardless of version. Any code that handles secret data, such as encryption keys and passwords, is considered Pri 1 code. For managed code, Priority 1 code is considered to be any unverifiable code (any code that the standard PEVerify.exe tool reports as not verified). All code supporting functionality exposed on the maximum attack surface is considered Pri 1 code by definition. </li>
<li><b>Priority 2</b> is optionally installed code that runs with user privilege, or code that is installed by default that doesn't meet the Priority 1 criteria. </li>
<li><b>Priority 3</b> is rarely used code and setup code. <i>Setup code that handles secret data, such as encryption keys and passwords, is always considered Priority 1 code.</i> </li>
</ul>
<p><a href="http://www.cyphersec.com/wp-content/uploads/2009/11/image1.png"><img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="262" alt="image" src="http://www.cyphersec.com/wp-content/uploads/2009/11/image_thumb.png" width="432" border="0" /></a></p>
<p>The document also includes loads of fresh new recommendations regarding both security and privacy. New techniques for protecting COM+ are also available.</p>
<p><a href="http://go.microsoft.com/?linkid=9694872" target="_blank">Microsoft Security Development Lifecycle 4.1 [Download] [.docx]</a></p>
<img src="http://feeds.feedburner.com/~r/CypherSecurity/~4/cFNvwpQGWHY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyphersec.com/archives/677/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Crawler for Visual Studio .NET</title>
		<link>http://www.cyphersec.com/archives/671</link>
		<comments>http://www.cyphersec.com/archives/671#comments</comments>
		<pubDate>Sun, 01 Nov 2009 22:43:40 +0000</pubDate>
		<dc:creator>Alessio Marziali</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/web/htdocs/www.cyphersec.com/home/wp-content/plugins/autometa/autometa.php</b> on line <b>364</b><br />
		<category><![CDATA[Code Crawler]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[owasp.org]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.cyphersec.com/2009/11/01/code-crawler-for-visual-studio-net/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p align="center"><a href="http://www.cyphersec.com/wp-content/uploads/2009/11/CodeCrawlerVisualStudio.png"><img title="CodeCrawlerVisualStudio" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="453" alt="CodeCrawlerVisualStudio" src="http://www.cyphersec.com/wp-content/uploads/2009/11/CodeCrawlerVisualStudio_thumb.png" width="553" border="0" /></a></p>
<img src="http://feeds.feedburner.com/~r/CypherSecurity/~4/dNMNJbNRQ-g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyphersec.com/archives/671/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>40th anniversary of the Net</title>
		<link>http://www.cyphersec.com/archives/666</link>
		<comments>http://www.cyphersec.com/archives/666#comments</comments>
		<pubDate>Thu, 29 Oct 2009 12:56:32 +0000</pubDate>
		<dc:creator>Alessio Marziali</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/web/htdocs/www.cyphersec.com/home/wp-content/plugins/autometa/autometa.php</b> on line <b>364</b><br />
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Internet]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.cyphersec.com/2009/10/29/40th-anniversary-of-the-net/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><object width="445" height="364"><param name="movie" value="http://www.youtube.com/v/7duyl0ZZ5BQ&amp;hl=it&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;border=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/7duyl0ZZ5BQ&amp;hl=it&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="445" height="364"></embed></object></p>
<img src="http://feeds.feedburner.com/~r/CypherSecurity/~4/9l1etjP4zcw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyphersec.com/archives/666/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Anti-XSS Library v3.1 Released</title>
		<link>http://www.cyphersec.com/archives/659</link>
		<comments>http://www.cyphersec.com/archives/659#comments</comments>
		<pubDate>Sat, 17 Oct 2009 12:56:58 +0000</pubDate>
		<dc:creator>Alessio Marziali</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/web/htdocs/www.cyphersec.com/home/wp-content/plugins/autometa/autometa.php</b> on line <b>364</b><br />
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[Anti-XSS Library]]></category>
		<category><![CDATA[ASP.net]]></category>
		<category><![CDATA[Secure Programming]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.cyphersec.com/2009/10/17/microsoft-anti-xss-library-v3-1-release/</guid>
		<description><![CDATA[The Microsoft Information Security Tools (IST) team has released the latest Microsoft Anti-Cross Site Scripting (Anti-XSS) Library version 3.1. 
How does a cross-site scripting (XSS) vulnerability occur? An example is when a web application does not encode the output that is sent to the browser, this can make the site susceptible XSS attacks as well [...]]]></description>
			<content:encoded><![CDATA[<p>The Microsoft <a href="http://blogs.msdn.com/securitytools/">Information Security Tools</a> (IST) team has released the latest Microsoft <a href="http://www.microsoft.com/downloads/details.aspx?familyid=051EE83C-5CCF-48ED-8463-02F56A6BFC09&amp;displaylang=en">Anti-Cross Site Scripting (Anti-XSS) Library version 3.1</a>. </p>
<p>How does a cross-site scripting (XSS) vulnerability occur? An example is when a web application does not encode the output that is sent to the browser, this can make the site susceptible XSS attacks as well as other common attacks. </p>
<p>Using XSS attacks, malicious users can cause damage to a site including hijacking a client session, stealing a web session information as well as cookies and more. The Anti-XSS Library v3.1 is an encoding library specifically designed to help developers protect their ASP.NET web-based applications from XSS attacks. Watch the video, “<a href="http://channel9.msdn.com/posts/Jossie/Anti-XSS-30-Released/">Anti-XSS 3.0 Released</a>,” as Vineet Batta and Anil Revuru (RV), Senior Software Developers from the Microsoft <a href="http://blogs.msdn.com/securitytools/default.aspx">Information Security Tools</a> (IST), provide an overview of the Anti-XSS Library and how it can prevent XSS attacks in your application. </p>
<p><strong>The key new feature in Anti-XSS v3.1 is sanitization of HTML pages and fragments</strong>, ensuring all malicious scripts are removed and enabling the input safe to display to the browser.</p>
<p>Download the latest <a href="http://www.microsoft.com/downloads/details.aspx?familyid=051EE83C-5CCF-48ED-8463-02F56A6BFC09&amp;displaylang=en">Anti-XSS Library v3.1</a>. Learn more about this library and other information security tools on the <a href="http://blogs.msdn.com/securitytools/default.aspx">IST blog</a>.</p>
<p> source : <a href="http://blogs.msdn.com/infosec/archive/2009/09/17/anti-xss-3-1-released.aspx" target="_blank">Information Security - Thoughts &amp; Experiences from Todd Kutzke</a></p>
<img src="http://feeds.feedburner.com/~r/CypherSecurity/~4/rKM8law1nhA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyphersec.com/archives/659/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security Best Practices : ASP.NET Applications</title>
		<link>http://www.cyphersec.com/archives/641</link>
		<comments>http://www.cyphersec.com/archives/641#comments</comments>
		<pubDate>Sun, 04 Oct 2009 20:16:48 +0000</pubDate>
		<dc:creator>Alessio Marziali</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/web/htdocs/www.cyphersec.com/home/wp-content/plugins/autometa/autometa.php</b> on line <b>364</b><br />
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[Pro ASP.NET]]></category>
		<category><![CDATA[Vulnerabilità]]></category>
		<category><![CDATA[riflessioni]]></category>
		<category><![CDATA[ASP.net]]></category>
		<category><![CDATA[Best practices]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.cyphersec.com/?p=641</guid>
		<description><![CDATA[
Last Update: 2010/01/14
Securing web applications has always been a nightmare and probably it will always be. Working hacks for all major web development frameworks are into the wild and new vulnerabilities get discovered every day if not every hour.
Fortunately, .NET framework provides a good lists of defences that, if used and managed properly will allow [...]]]></description>
			<content:encoded><![CDATA[<p><img height="198" src="http://www.usfst.com/media/focus-area-images/FSTUS/issues-9-1/Secure_transaction_LRG_FOC.png" width="539" /></p>
<p align="right"><strong>Last Update: </strong>2010/01/14</p>
<p align="justify">Securing web applications has always been a nightmare and probably it will always be. Working hacks for all major web development frameworks are into the wild and new vulnerabilities get discovered every day if not every hour.</p>
<p align="justify">Fortunately, .NET framework provides a good lists of defences that, if used and managed properly will allow you to create a defence wall between something valuable (your application) and the bad guys.</p>
<p align="justify">What follows is a list of all the .NET/ASP.NET security features, and best practices I’ve learned to be effective while coding web application during these years.</p>
<h2>ASP.NET Application Security Guidelines</h2>
<p>&#160;</p>
<ol>
<li>
<div align="justify">Security should not taken down in the name of simplicity and/or UI appeal. </div>
</li>
<li>
<div align="justify"><strong>Avoid, at all costs, client side validation</strong> (e.g. using Ajax or all JavaScript related validation libraries). JavaScript can and will, turned off and so your protections). </div>
</li>
<li>
<div align="justify"><strong>Validate everything that comes in</strong>. From HTTP Headers, to User Inputs (HttpHeaders, Cookies, ViewState and so on). Even if you don’t use them, keep an eye on them, bad formatted http headers could crash your web server for instance. </div>
</li>
<li>
<div align="justify">Assume that <strong>not only good guys will be using your applications.</strong> </div>
</li>
<li>
<div align="justify"><strong>Security through Obscurity</strong> never makes sense. </div>
</li>
<li>
<div align="justify"><strong>Validate user inputs</strong> in the application, promote the use of Regular Expressions (and be assured that they work the way they are meant to be) </div>
</li>
<li>
<div align="justify">If you are using AJAX, <strong>shield all your Ajax calls</strong>. Ajax hacking is a new kind of hacking into applications, be sure they are secure. </div>
</li>
<li>
<div align="justify">When using AJAX, be careful what you send back. Do not leak information. Do not return more information than is necessary to complete the request. </div>
</li>
<li>
<div align="justify">Use the principle of Encapsulation. Don’t abuse the public keyword. If something is marked as public there should be a valid reason for it. Promote the use of the internal and/or protected internal instead. </div>
</li>
<li>
<div align="justify">Pages with sensitive data should not be cached: page content is easily accessed using browser’s history.        </div>
</li>
<li>
<div align="justify">Use Declarative and Imperative Security and don’t trust your own code. If your method is supposed to just read a file, use PermitOnly along with FileIOPermission. </div>
</li>
<li>
<div align="justify">Avoid using FullTrust, which means your application can do everything not only at application level by also at CLR level. Use Medium Trust or Low Trust depending on your application needs.        <br />&#160; <img src="http://i.technet.microsoft.com/Dd163542.table_C14624412_5(en-us,TechNet.10).png" />         </p>
</div>
</li>
<li>
<div align="justify">Use mature, well security tested algorithms. </div>
</li>
<li>
<div align="justify">Never compare passwords, compare the hash. Do not use MD5 which could be hacked using Rainbow tables, use RIPEMD160 instead. </div>
</li>
<li>
<div align="justify">Don’t rely on <strong>ViewState</strong> as a valid and secure storage. <strong>ViewState</strong> is by default base64 encoded, in a matter of seconds any clever hacker could hack it and use it against you. Encrypt it at page or application level using <strong>ViewStateEncryptionMode</strong>. </div>
</li>
<li>
<div align="justify">Make use of the <strong>HealthMonitoring</strong> system and trace your application behaviour. Use <strong>ViewStateFailureAuditEvent</strong> and make your application respond to such events. </div>
</li>
<li>
<div align="justify">Encrypt your connection strings using <strong>aspnet_regiis</strong>. This tool it’s so easy to use and requires simple steps to both encrypt and decrypt connection’s strings. </div>
</li>
<li>
<div align="justify">Promote the use of <strong>Gatekeepers</strong>, and never trust your application. If something have to deal with some other piece of code, it has to be authorised and authenticated first. </div>
</li>
<li>
<div align="justify">Don’t use <strong>Blacklists</strong>, but use Whitelists instead, teach your application what to accept not what to avoid. </div>
</li>
<li>
<div align="justify">Don’t try to sanitize a URI, if it doesn’t fit, reject it and let the user provide a valid one. </div>
</li>
<li>
<div align="justify">While creating a <strong>Web Service</strong>, use WSE. If you are using WCF instead, before writing an application on it read the <a href="http://www.codeplex.com/WCFSecurity" target="_blank">WCF Security Guidance</a>. </div>
</li>
<li>
<div align="justify">Don’t tell them anything. If your application throws an exception don’t provide technical details to the user. An hackers could read through the lines and craft a better working hack. </div>
</li>
<li>
<div align="justify">While storing a password or any sensitive string, use the <a href="http://msdn.microsoft.com/en-us/library/system.security.securestring.aspx" target="_blank">SecureString</a> object. Which is encrypted for privacy when being used, and deleted from computer memory when no longer needed. </div>
</li>
<li>
<div align="justify">Use platform features to manage keys where possible. </div>
</li>
<li>
<div align="justify">Do not pass sensitive data from page to page. </div>
</li>
<li>
<div align="justify">Do not cache sensitive data. </div>
</li>
<li>
<div align="justify">Do NOT use GET for anything that changes the server state or contains sensitive information. GET requests are logged in the web server access logs. They are also shown in the browser history. </div>
</li>
<li>
<div align="justify">DO use POST for every action that changes the server state and reject all non-POST methods. POST prevents unintentional actions, Most search engines won’t crawl POST forms and it also helps prevent duplicate submissions. </div>
</li>
<li>
<div align="justify">If using Cookies, mark them as <strong>HTTPOnly</strong> using System.Net.Cookie. Set the <strong>httpOnlyCookies</strong> attribute on the authentication cookie. Internet Explorer Service Pack 1 supports this attribute, which prevents client-side script from accessing the cookie from the document.cookie property. </div>
</li>
<li>
<div align="justify">Using <strong>slidingexpiration</strong>, is not always a good idea. A hacker could be possibly be logged in and won’t ever be kick out while trying to hack what’s next. </div>
</li>
<li>
<div align="justify">Do not echo any user input straight away. Encode it first. Do it only if required. ANY information you give to a hacker CAN and WILL be used to hack your website. </div>
</li>
<li>
<div align="justify">Learn how to use the <a href="http://msdn.microsoft.com/en-us/library/aa973813.aspx" target="_blank">Microsoft Anti-Cross Site Scripting Library</a> to prevent XSS attacks. </div>
</li>
<li>
<div align="justify">Protect Audit and Log Files. Log files might be boring stuff to look at. From an hacker point of view, they are a goldmine as they could possible revel valuable information. </div>
</li>
<li>
<div align="left">Don’t use <strong>Server.MapPath</strong> use <strong>Request.MapPath </strong>instead and mark the final parameter of to false. This means that a user cannot successfully supply a path that contains “..” to traverse outside of your application’s virtual directory hierarchy. Eg:         </p>
<p><strong>Request.MapPath</strong>(<strong>INPUT</strong>, HttpContext.Current.Request.ApplicationPath, <strong>false</strong>);         </p>
</div>
</li>
<li>
<div align="left">Add safeguards to your ASP.NET application to help protect against common canonicalization issues using <strong>System.IO.GetFullPath</strong> at application level at the beginning of every request (Global.asax)         </p>
<p><a href="http://www.cyphersec.com/wp-content/uploads/2010/02/ScreenShot002.jpg"><img title="ScreenShot002" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="143" alt="ScreenShot002" src="http://www.cyphersec.com/wp-content/uploads/2010/02/ScreenShot002_thumb.jpg" width="497" border="0" /></a> </div>
</li>
<li>
<div align="justify">Use <strong>WindowsAuthentication</strong> instead of any custom authentication. Using <strong>WindowsAuthentication</strong> ensure you the password will never be transmitted over the network. </div>
</li>
<li>
<div align="justify">When constructing SQL queries, use type safe SQL parameters. AKA Use stored procedures or if you can not use <strong>parameterised queries</strong> in conjunction with Prepare statement. Using stored procedures it is always the best approach, from both technical and security point of views. </div>
</li>
<li>
<div align="justify">Robots.txt files are the first place hackers look at. Use access controls to protect them. </div>
</li>
<li>
<div align="justify">Secure your Web Service Definition Language WSDL. Your WSDL leaks the interface to your web service. </div>
</li>
<li>
<div align="justify">ASP.NET provides a very rich security features for protecting your pages against <strong>CSRF attacks</strong>. Using <strong>ViewStateUserKey</strong> in association with <strong>Session.SessionID</strong> as discussed <a href="http://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet#Viewstate_.28ASP.NET.29" target="_blank">here</a> in the OWASP Cross Site Forgery Prevention Cheat. This value will be now validated in the postback and if the value provided does not match the value in the viewstate an exception is thrown. <em>Note</em>: This requires ViewState to be enabled and therefore cannot be used in ASP.NET MVC applications. </div>
</li>
<li>
<div align="justify">ASP.NET 1.1 and later include a <strong>ValidateRequest</strong> page directive that stops some malicious user input that could lead to XSS exploits. Since, ValidateRequest is enabled by default, all you have to do <strong>is ensure that you don’t explicitly disable it</strong>, either with page directives or configuration files. Note that ValidateRequest blocks any request that contain HTML or XML. If your page is intended to accept HTML or XML input from the user, you need to disable ValidateRequest, but be sure to follow the input validation discussed previously.</div>
</li>
<li>
<div align="justify">If you must use <em>innerHTML</em> to create elements in the document, create only those elements that are not available through the DOM (param is one example) or that are not generated by user input. To generate HTML elements, use the <strong>createElement</strong>, <strong>appendChild</strong> and <strong>setAttribute</strong> methods for greater safety.</div>
</li>
<li>
<div align="justify">If your site is constructed with frames, you can set the <strong>SECURITY attribute</strong> on <strong>untrusted</strong> <strong>FRAME</strong> and <strong>IFRAME</strong> elements to restricted. This set the security zone of the frame in the browser to the user’s restricted zone, which does not allow any script to run.         </p>
</div>
</li>
</ol>
<h2>Web Server Security Guidelines</h2>
<p>&#160;</p>
<ol>
<li>
<div align="justify">Deny extended URLs. Excessively long URLs can be sent to Microsoft IIS servers, causing the server to fail to log the complete request. Unless specific applications require long URLs, set a limit of 2048 characters. Microsoft IIS will process request over 4096 bytes long, but will not place the contents of the request in log files. Modify <em>%windir%\system32\inetsrv\urlscan\urlscan.ini</em> and ensure “<em>MaxQueryString'=2048</em>” is present. This requires URLScan to be installed (read below) </div>
</li>
<li>
<div align="justify">Use URLScan v2.5 or 3.1.        <br /><strong>URLScan</strong> v3.1 is a security tool that restricts the types of HTTP requests that Internet Information Services (IIS) will process. By blocking specific HTTP requests, URLScan helps prevent potentially harmful requests from being processed by web applications on the server. URLScan v3.1 has feature upgrades and fixes from its predecessor (v2.5) such as the ability to scan query strings, the ability to custom tailor rules that scan parts of your HTTP requests and many others. URLScan v3.1 will install as an ISAPI filter on IIS 5.1 and later, including the latest IIS 7.0 for Windows Server 2008 </div>
</li>
<li>
<div align="justify">Disable Directory listing. </div>
</li>
<li>
<div align="justify">Your webserver should always be patched with the last updates. </div>
</li>
<li>
<div align="justify">Scan your webserver using tools like <a href="http://cirt.net/nikto2" target="_blank">Nikto</a>. Nikto is an Open Source (GPL) web scanner which performs comprehensive tests against web servers for multiple items, including over 3500 potentially dangerous files/CGIs. </div>
</li>
<li>
<div align="justify">Use SSLs were possible, this will encrypt and protect your data while on the wire. Using SSL doesn’t necessary means you are secure. It simply means your data is encrypted while on the go. If using SSL, restrict authentication tickets to HTTPS connections only. </div>
</li>
<li>
<div align="justify">Ensure that the application pool identity is not granted sensitive privileges or unnecessary rights to access resources. </div>
</li>
<li>
<div align="justify">Do not use highly privileged or administrative identities for IIS application pools </div>
</li>
<li>
<div align="justify">Consider using a lower privilege identity. </div>
</li>
<li>
<div align="justify">Separate code with different privilege requirements into different application pools </div>
</li>
<li>
<div align="justify">When using anonymous authentication, configure the anonymous user to be the application pool identity. </div>
</li>
<li>
<div align="justify">Use the principle of least privileged account. Create and associate your application with a low privileges user that fills all your applications needs.</div>
</li>
</ol>
<h2>SQL Server Security Guidelines</h2>
<ol>
<li>
<div align="justify">Disable access to the <strong>xp_cmdshell</strong> functions within SQL Server using EXEC sp_dropextendedproc ‘xp_cmdshell’. </div>
</li>
<li>
<div align="justify">Choose Windows Authentication when you can. It enforces strong passwords, password policies and other interesting stuff. </div>
</li>
<li>
<div align="justify">Use a least privileges user. Create a SQL Server login for the account. Map the login to a database user in the required database. Place the database user in a database role. Grant the database role limited permissions to only those stored procedures or table your application really needs. By using a database role, you avoid granting permissions directly to the database user. This isolate you from potential damage to the database. </div>
</li>
<li>
<div align="justify">If you are really paranoid, or asked to be, use the last line of defence. Database Cryptography. </div>
</li>
</ol>
<img src="http://feeds.feedburner.com/~r/CypherSecurity/~4/YmSVca4qnu4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cyphersec.com/archives/641/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
