<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Startup Security &#187; General Site Security</title>
	<atom:link href="http://startupsecurity.info/blog/category/general-site-security/feed/" rel="self" type="application/rss+xml" />
	<link>http://startupsecurity.info</link>
	<description>Security, for Startups</description>
	<lastBuildDate>Wed, 16 Dec 2009 18:42:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Basic Web Site Security</title>
		<link>http://startupsecurity.info/blog/2009/12/16/basic-web-site-security/</link>
		<comments>http://startupsecurity.info/blog/2009/12/16/basic-web-site-security/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 18:42:59 +0000</pubDate>
		<dc:creator>Damon Cortesi</dc:creator>
				<category><![CDATA[General Site Security]]></category>
		<category><![CDATA[Input Validation]]></category>
		<category><![CDATA[SQL Injection]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://startupsecurity.info/?p=152</guid>
		<description><![CDATA[Let&#8217;s talk for a brief moment about some very basic things you can do to help make your web application more secure. If I were to pick three of the most common issues I still see while browsing the web, they would be:

Error messages enabled
Cross-Site Scripting (unescaped input)
And yes, SQL Injection of some sort

The (un)fortunate [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s talk for a brief moment about some very basic things you can do to help make your web application more secure. If I were to pick three of the most common issues I <em>still</em> see while browsing the web, they would be:</p>
<ol>
<li>Error messages enabled</li>
<li>Cross-Site Scripting (unescaped input)</li>
<li>And yes, SQL Injection of some sort</li>
</ol>
<p>The (un)fortunate thing is that most of these issues are easily solvable. A generic error page, as opposed to a stack trace or verbose error message, can usually be implemented with a couple configuration changes. Yet, I still see large websites that spit out stack traces and code when an error occurs.</p>
<p>Cross-Site Scripting is another issue that still plagues us. Testing for it is simple &#8211; just enter something like <code>test&quot;&gt;</code> into an input field and if the resulting page displays that in raw HTML, chances are you have a problem. Every language has some form of HTML-escaping function and, if possible, it&#8217;s good to turn this on by default. This will be the case in Rails 3.0, thankfully.</p>
<p>Finally, I still see traces of SQL Injection on an all-too regular basis. Identified by the oh-so-dangerous single tick mark &#8211; &#8216; &#8211; and typically resulting in an error page that shouldn&#8217;t be showing up anyway if the first issue were address. That said, even if the error is obscured, it&#8217;s still possible to retrieve data using a technique called Blind SQL Injection. Any data getting sent to an SQL server should also be properly escaped or sent through stored procedures depending on the backend technology. Think SQL Injection isn&#8217;t a problem? Talk to RockYou, whose <a href="http://www.techcrunch.com/2009/12/14/rockyou-hack-security-myspace-facebook-passwords/">database of 32 million usernames and passwords was compromised</a> because of it.</p>
<p>Address those three things and (sadly) you&#8217;ll be ahead of the game.</p>
]]></content:encoded>
			<wfw:commentRss>http://startupsecurity.info/blog/2009/12/16/basic-web-site-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Responsible Disclosure in the Non-Enterprise World</title>
		<link>http://startupsecurity.info/blog/2008/11/18/on-responsible-disclosure-in-the-non-enterprise-world/</link>
		<comments>http://startupsecurity.info/blog/2008/11/18/on-responsible-disclosure-in-the-non-enterprise-world/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 18:21:03 +0000</pubDate>
		<dc:creator>Damon Cortesi</dc:creator>
				<category><![CDATA[Disclosure]]></category>
		<category><![CDATA[General Site Security]]></category>
		<category><![CDATA[Legal]]></category>
		<category><![CDATA[Responsible]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://startupsecurity.info/?p=89</guid>
		<description><![CDATA[There&#8217;s been quite a bit of discussion recently in the security community regarding partial disclosure due to that DNS bug and the zomg my camera is on bug. What I&#8217;d like to do briefly is take a step back and look at the startup community and reporting vulnerability issues to small companies that don&#8217;t have [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s been quite a bit of discussion recently in the security community regarding partial disclosure due to that <a href="http://www.doxpara.com/?p=1250">DNS bug</a> and the <a href="http://ha.ckers.org/blog/20081007/clickjacking-details/">zomg my camera is on</a> bug. What I&#8217;d like to do briefly is take a step back and look at the startup community and reporting vulnerability issues to small companies that don&#8217;t have the resources and experience of large enterprise. Why? Because they may be the next enterprise, you never know. <img src='http://startupsecurity.info/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Over the course of the past few months, as I&#8217;ve been involved with my own startup, I&#8217;ve been paying a lot more attention to that industry. With a quick and dirty development model, it&#8217;s often easy for devs to overlook security. Although <a href="http://www.rubyonrails.org/">some</a> <a href="http://www.djangoproject.com/">frameworks</a> <a href="http://www.djangobook.com/en/1.0/chapter19/">address</a> a lot of the usual concerns (SQL Injection, XSS), they are <a href="http://www.rorsecurity.info/2008/09/08/sql-injection-issue-in-limit-and-offset-parameter/">susceptible</a> as well.</p>
<p>Let&#8217;s take a look at a couple examples that enterprises such as Microsoft and Google now understand, that small development teams might not.</p>
<p><br class="spacer_" /></p>
<p>1. <strong>Put an email address on your website.</strong></p>
<p>Yes. I&#8217;m serious.</p>
<p>I&#8217;ve come across several issues on startup sites recently and being the responsible security researcher that I am, have wanted to report them. Spending a half-hour spidering the site trying to find a single contact email is a lose-lose situation. I&#8217;m either going to discard the bug and the site will remain vulnerable, or somebody else will publicly disclose it and the typical &#8216;hair on fire&#8217; scenario will ensure.</p>
<p><br class="spacer_" /></p>
<p>2. <strong>Respond to the email.</strong></p>
<p>If you don&#8217;t respond, I have no clue if you&#8217;re addressing the issue. A timeline for a potential fix might also be nice, but not always necessary.</p>
<p>Additionally, security researchers generally like the cred associated with finding a bug (ego boost and resumé builder, you know?). So if you do make an update and have some release notes, why not <a href="http://www.microsoft.com/technet/security/bulletin/policy.mspx">thank the researcher</a> for preventing your hair from catching on fire more than it already is?</p>
<p><br class="spacer_" /></p>
<p>3. <strong>Don&#8217;t write off the security guy.</strong></p>
<p>6 years ago, there was a large back-and-forth on a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=154957#c6">Mozilla bug</a>. This year, it was confirmed as a vulnerability known as clickjacking. That Mozilla thread is a pretty classic example of the security disclosure process. If a security researcher is writing to you to report a vulnerability, engage in conversation to understand the concern. Yes, we do sometimes get a little paranoid. But if we emailed you, we&#8217;re really just trying to help.</p>
<p><br class="spacer_" /></p>
<p>4. <strong>Don&#8217;t <em>sue</em> the security guy (aka have a disclosure policy).</strong></p>
<p>One reason that I frequently hold off on reporting bugs I may come across is that I can&#8217;t find a disclosure policy on the site. As an example, both <a href="http://pages.ebay.com/securitycenter/reportproblem.html">eBay</a> and <a href="http://www.microsoft.com/technet/security/bulletin/alertus.aspx">Microsoft</a> allow for easy reporting of security vulnerabilities. Most sites, however, don&#8217;t and it has happened in the past where a security report has been misconstrued as &#8220;hacking&#8221;. Providing some assurance that this sort of action won&#8217;t be taken or an easy means to report vulnerabilities will open up the communication channel necessary.</p>
<p>Hopefully these short notes will help small companies become more open and willing to accept security bugs from external researchers. Occasionally, we come across issues in the course of our normal web activity and wish to report them. Having a published and easy means of doing this is important in allowing for this communication.</p>
]]></content:encoded>
			<wfw:commentRss>http://startupsecurity.info/blog/2008/11/18/on-responsible-disclosure-in-the-non-enterprise-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We&#8217;re not on ARPAnet anymore, Toto</title>
		<link>http://startupsecurity.info/blog/2008/11/11/were-not-on-arpanet-anymore-toto/</link>
		<comments>http://startupsecurity.info/blog/2008/11/11/were-not-on-arpanet-anymore-toto/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 18:33:52 +0000</pubDate>
		<dc:creator>Damon Cortesi</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[General Site Security]]></category>
		<category><![CDATA[Input Validation]]></category>
		<category><![CDATA[CSRF]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[NoScript]]></category>

		<guid isPermaLink="false">http://startupsecurity.info/?p=87</guid>
		<description><![CDATA[Far back in the days of GeoCities and Tripod, JavaScript was a cool little scripting language you could use to make some awesome rollovers on your links and take your site to the next level beyond the blink tag. Today, JavaScript drives what many call Web 2.0 &#8211; a user experience that has made it [...]]]></description>
			<content:encoded><![CDATA[<p>Far back in the days of GeoCities and Tripod, JavaScript was a cool little scripting language you could use to make some awesome rollovers on your links and take your site to the next level beyond the blink tag. Today, JavaScript drives what many call Web 2.0 &#8211; a user experience that has made it possible to put desktop applications (email, office) on the web.</p>
<p>The evolution of JavaScript and its place in security perfectly parallels the transition from server-side security to client-side security.</p>
<p>~History~</p>
<blockquote><p>Before network firewalls were commonplace, the juiciest targets to go after were servers. In what is now unthinkable, it was common for systems to be deployed directly on the Internet with no firewall whatsoever. This is part of the reason that <a href="http://en.wikipedia.org/wiki/Code_Red_(computer_worm)">Code Red</a>, <a href="http://en.wikipedia.org/wiki/Nimda">Nimda</a>, and <a href="http://en.wikipedia.org/wiki/SQL_slammer_worm">Slammer</a> were so successful. The opposite is true now. Network firewalls are commonplace, Windows XP has the firewall turned on by default, and Server 2008 will be the first Microsoft Server OS to be deployed with the <a href="http://www.microsoft.com/windowsserver2008/en/us/security-policy.aspx?pf=true">firewall enabled by default</a>. As such, attackers moved on to the next target &#8211; client workstations and the primary way users interact on them.</p></blockquote>
<p>~/History~</p>
<p>So why should you, as a startup, care about all this? Two reasons.</p>
<ol>
<li>Protect your site from common attacks</li>
<li>Protect yourself from being a victim</li>
</ol>
<p>To address the first one, there&#8217;s a common attack known as <a href="http://www.owasp.org/index.php/Cross-Site_Request_Forgery">Cross-Site Request Forgery</a>. I&#8217;ll get into it in more detail in another post, but effectively it allows one site to take action on another if that target site has not put effective controls in place. A common mitigation is ensuring that all data modification methods occur via POST requests (per HTTP standard). However, if you don&#8217;t have tokens associated with those POST requests, another site could utilize javascript to craft and submit fake POST requests to take actions on a logged-in users behalf. Does your site have a &#8220;remember me&#8221; checkbox? Do user sessions not time out? This could be a problem for you. This issue has been widely known for at least four years (<a href="http://shiflett.org/articles/cross-site-request-forgeries">Chris Shiflett on CSRF</a>), but it&#8217;s only recently been gaining a lot of attention. I&#8217;m surprised more frameworks don&#8217;t have protection for this enabled by default, but it could likely impact development testing. The general approach to fixing this is by utilizing some sort of server-generated token that&#8217;s inserted as a hidden form field and verified on user submittal. </p>
<p>To address the second, an example is necessary. JavaScript, for the most part, is fairly essential to a number of sites that you may visit on a regular basis. The danger however, is malicious JavaScript that may get executed without you even knowing it. That script could be on that site and trying to take action on a different site, or sourced from a remote site altogether. Take, for example, poor David Airey who <a href="http://www.davidairey.com/google-gmail-security-hijack/">lost his domain</a> due to a <a href="http://www.gnucitizen.org/blog/google-gmail-e-mail-hijack-technique/">GMail CSRF</a> vulnerability. The basics behind the attack are as such: At one point, David visited a page that had a malicious JavaScript. That script posted back to his GMail account, reconfiguring it so the attacker could hijack emails. That reconfiguration including forwarding and deleting all domain-related emails. Once David went on vacation, the attacker went to work and David lost his domain.</p>
<p>So how can you protect against this second attack? I personally make use of the Firefox extension <a href="http://noscript.net/">NoScript</a>. This handy extension prevents JavaScript code from automatically executing when you visit a web page, unless you&#8217;ve previously whitelisted that site. While it can be a little annoying, it&#8217;s much better than unknown JavaScript executing in the context of my browsers&#8230;where I spend a good majority of my day. </p>
]]></content:encoded>
			<wfw:commentRss>http://startupsecurity.info/blog/2008/11/11/were-not-on-arpanet-anymore-toto/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Typical Injection Points in a Web Application</title>
		<link>http://startupsecurity.info/blog/2008/11/06/typical-injection-points-in-a-web-application/</link>
		<comments>http://startupsecurity.info/blog/2008/11/06/typical-injection-points-in-a-web-application/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 21:32:52 +0000</pubDate>
		<dc:creator>Damon Cortesi</dc:creator>
				<category><![CDATA[General Site Security]]></category>
		<category><![CDATA[Input Validation]]></category>

		<guid isPermaLink="false">http://startupsecurity.info/?p=79</guid>
		<description><![CDATA[Dove-tailing off my previous post about the Basics of Analyzing Web Site Security, there are some very common places in web applications that I come across typical issues. These are the places I will look at first on a web app to get a general idea of the rest of the site security.

Search Forms
Search forms [...]]]></description>
			<content:encoded><![CDATA[<p>Dove-tailing off my previous post about the <a href="/blog/2008/10/24/the-basics-of-analyzing-web-site-security/">Basics of Analyzing Web Site Security</a>, there are some very common places in web applications that I come across typical issues. These are the places I will look at first on a web app to get a general idea of the rest of the site security.</p>
<ul>
<li><strong>Search Forms</strong>
<p>Search forms generally re-display the search term entered by the user. These terms are quite frequently not properly encoded, either, leading to Cross-Site Scripting (XSS) attacks.</p>
</li>
<li><strong>Jobs and Events</strong>
<p>Jobs and Events pages frequently utilize a database behind the scenes to manage job postings and event listings. Further, they&#8217;re usually pretty easy to check as they have the job or event id in the URL for page rank, etc. I&#8217;ll commonly look for these for easy injection vectors.</p>
</li>
<li><strong>Cookies</strong>
<p>Utilizing the fantastic Web Dev extension, I&#8217;ll take a quick look at the cookies. If I see anything more than a session ID, I&#8217;ll start modifying and manipulating the cookies to verify that server-side checks are in place. Cookies can also frequently lead to XSS.</p>
</li>
<li><strong>Hidden Form Fields</strong>
<p>If there&#8217;s a contact page with a form, the first thing I do is look for hidden form fields to see what parameters the web developers might have thought that a user wouldn&#8217;t see by putting them in a &#8220;hidden&#8221; field. I&#8217;ve come across everything from spam gateways to arbitrary file access due to simple issues like this.</p>
</li>
<li><strong>Typical Directory Structures</strong>
<p>Finally, I&#8217;ll commonly poke around in typical directory structures to see if I get lucky. Things like <code>/admin/</code>, <code>/logs/</code>, and <code>/config/</code>, among others, often are not intended for public consumption or linked to, but are present on the site.</p>
</li>
</ul>
<p>There you go &#8211; those are generally the first places I look if I need to take a quick look at a web site. Beyond that, I start digging into more complex input locations within the application, logic happening behind the scenes, and potential user authorization issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://startupsecurity.info/blog/2008/11/06/typical-injection-points-in-a-web-application/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PCI 101</title>
		<link>http://startupsecurity.info/blog/2008/11/03/pci-101/</link>
		<comments>http://startupsecurity.info/blog/2008/11/03/pci-101/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 01:11:57 +0000</pubDate>
		<dc:creator>Damon Cortesi</dc:creator>
				<category><![CDATA[Compliance]]></category>
		<category><![CDATA[General Site Security]]></category>
		<category><![CDATA[PCI]]></category>
		<category><![CDATA[Risk Management]]></category>

		<guid isPermaLink="false">http://startupsecurity.info/?p=76</guid>
		<description><![CDATA[Since Mike recently linked here from his PCI Blog (Cloud computing security and PCI), let&#8217;s take a brief look at what PCI means for a startup.
PCI Compliance
PCI Compliance has probably been one of the strongest driving factors of security compliance in the US in recent years, particularly for retailers. So what is it? PCI stands [...]]]></description>
			<content:encoded><![CDATA[<p>Since Mike recently linked here from his PCI Blog (<a href="http://pcianswers.com/2008/11/03/cloud-computing-security-and-pci/">Cloud computing security and PCI</a>), let&#8217;s take a brief look at what <a href="https://www.pcisecuritystandards.org/">PCI</a> means for a startup.</p>
<p><strong>PCI Compliance</strong></p>
<p>PCI Compliance has probably been one of the strongest driving factors of security compliance in the US in recent years, particularly for retailers. So what is it? PCI stands for Payment Card Industry and the <a href="https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml">PCI Data Security Standard</a> is an accepted standard among the payment brands (Visa, MasterCard, Amex, Discover, etc) that defines a set of 12 requirements that merchants who handle cardholder data must be compliant with. *<em>you can breathe now</em>* With that broad statement, there are a few things to point out.</p>
<p><strong>Cardholder Data</strong></p>
<p>Straight from the <a href="https://www.pcisecuritystandards.org/pdfs/pci_dss_saq_navigating_dss.pdf">PCI website</a>&#8230;<br />
<blockquote><em>Cardholder data is defined as the primary account number (“PAN,” or credit card number) and other data obtained as part of a payment transaction, including the following data elements:</em>
<ul>
<li>PAN</li>
<li>Cardholder Name</li>
<li>Expiration Date</li>
<li>Service Code</li>
<li>Sensitive Authentication Data: (1) full magnetic stripe data, (2) CAV2/CVC2/CVV2/CID, and (3) PINs/PIN blocks)</li>
</ul>
</blockquote>
<p><strong>This effectively means that if you store, process, or transmit a credit card number, alone or in combination with the data listed above, you are subject to PCI DSS.</strong> I should note, however, that there are different requirements based on your size and processing volume and you should contact your acquirer, payment brand, or local Qualified Security Assessor (QSA) to determine your PCI DSS validation requirements.</p>
<p><strong>The Requirements</strong></p>
<p>So, 12 requirements, huh? Yup. Each with several sub-requirements, too. While you can read the details on the <a href="https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml">PCI DSS site</a> (click &#8220;Download the Specification&#8221;), I think it&#8217;s more important for startups to realize that there are very specific requirements surrounding the handling of cardholder data and to consider those requirements when extending into such areas as e-commerce. Ultimately the goal is to manage the risk of storing cardholder data by means of network segregation, data encryption, audit logging, policy and security testing (among others). Options are also available for outsourcing credit card transactions, which can relieve the strain of PCI compliance for a startup.</p>
<p><strong>One More Thing</strong></p>
<p>Are you a software developer building a payment application but not actually storing cardholder data yourself? You still need to be aware of PCI and the <a href="https://www.pcisecuritystandards.org/security_standards/pci_pa_dss.shtml">Payment Application Data Security Standard</a>. This ties in to my previous post about third-party components and is PCI&#8217;s attempt to ensure safe handling of credit card data for payment applications created by software vendors.</p>
]]></content:encoded>
			<wfw:commentRss>http://startupsecurity.info/blog/2008/11/03/pci-101/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thid-Party Components</title>
		<link>http://startupsecurity.info/blog/2008/11/02/thid-party-components/</link>
		<comments>http://startupsecurity.info/blog/2008/11/02/thid-party-components/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 06:53:59 +0000</pubDate>
		<dc:creator>Damon Cortesi</dc:creator>
				<category><![CDATA[General Site Security]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://startupsecurity.info/?p=69</guid>
		<description><![CDATA[A quick note on this Sunday evening regarding third-party components. 
Your site is only as secure as the software you install.
I&#8217;ll be posting some more info regarding some work I&#8217;ve done in this area recently, but I did want to make a quick post about the security of third-party components.
When you download that plugin or [...]]]></description>
			<content:encoded><![CDATA[<p>A quick note on this Sunday evening regarding third-party components. </p>
<p>Your site is only as secure as the software you install.</p>
<p>I&#8217;ll be posting some more info regarding some work I&#8217;ve done in this area recently, but I did want to make a quick post about the security of third-party components.</p>
<p>When you download that plugin or code written by somebody else, are you doing a sanity check to make sure it&#8217;s secure? Here are a few quick things to think about in order to identify the attack surface.</p>
<ul>
<li>Does it write to disk?</li>
<li>Does it communicate with the database?</li>
<li>Does it interact with the user?</li>
</ul>
<p>Why should you be asking these questions? To determine if it protects against the following attacks.</p>
<ul>
<li>Can I modify the file that it reads/writes to?</li>
<li>Does it protect against SQL Injection?</li>
<li>Does it sanitize or validate input?</li>
</ul>
<p>Security should definitely be a concern when installing any third-party components or plugins on your site. While it&#8217;s difficult to verify the security of external code, you can at least do a quick profile of it and understand what your primary risks are as noted above. A perfect example is the recent <a href="http://blogsecurity.net/wordpress/multiple-vulnerabilities-in-wp-comment-remix-143/">WP Comment Remix Security Bulletin</a> &#8211; installation of that plugin allowed for both SQL Injection and Cross-Site Scripting. </p>
]]></content:encoded>
			<wfw:commentRss>http://startupsecurity.info/blog/2008/11/02/thid-party-components/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Startup Infrastructure Security</title>
		<link>http://startupsecurity.info/blog/2008/10/31/startup-infrastructure-security/</link>
		<comments>http://startupsecurity.info/blog/2008/10/31/startup-infrastructure-security/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 13:17:57 +0000</pubDate>
		<dc:creator>Damon Cortesi</dc:creator>
				<category><![CDATA[General Site Security]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Scaling]]></category>

		<guid isPermaLink="false">http://startupsecurity.info/?p=67</guid>
		<description><![CDATA[ Infrastructure security is one of those things that falls prey to the typical ad-hoc growth of startups as it relates to security. You may start out small, but once the project starts growing you need to put a development environment online, as well as a staging environment. These tend to grow organically, with the [...]]]></description>
			<content:encoded><![CDATA[<p> Infrastructure security is one of those things that falls prey to the typical ad-hoc growth of startups as it relates to security. You may start out small, but once the project starts growing you need to put a development environment online, as well as a staging environment. These tend to grow organically, with the specific needs of an organization. In addition to that, it&#8217;s sometimes necessary to toss the odd server or site online for other testing purposes. What isn&#8217;t always considered here, is the availability and accessibility of those resources.</p>
<p>Let&#8217;s take the example of a staging site. Frequently made Internet accessible for testing purposes, staging sites are a perfect example of the gap between typical web users and more curious, perhaps malicious ones. While typical users will go to x.com and completely interact with the application there, it is not outside the realm of possibility for a curious individual to try staging.x.com, a well-known scheme for staging sites. If this exists, it could reveal information to a potential attacker through verbose error messages or debug information. Besides simply making this public available, here are a couple other flaws I have seen on live staging sites.</p>
<ol>
<li>Having debug information available
<p>One startup allowed users browsing to their staging site to set a cookie that showed debug information. This debug information included exact SQL statements that were getting sent to the database. Having this information readily accessible could provide an attacker with the information needed to craft a custom attack.</p>
</li>
<li>Not locking down all avenues
<p>After it was publicly disclosed, this same startup restricted access to that staging site using basic authentication. Verifying this out of curiosity, I tried to access it via HTTPS. To my surprise, I was not prompted for authentication.</p>
</li>
</ol>
<p>Another common problem is that of putting a site online in the early stages of a startup. Maybe you need to demo the site to a potential investor or client. Maybe you have outsourced some testing. In any case, the one thing to remember is that if you open a port to the Internet, it&#8217;s not private. Port scans, especially for web servers, are extremely common. Combine that with the re-use of IP addresses (*cough*The Cloud*cough*) and your &#8220;private&#8221; site may be crawled by search engines within the hour. I&#8217;m sure most of you are familiar with the statistic that an unpatched XP system only lasts <a href="http://news.zdnet.com/2100-1009_22-137900.html">20 minutes</a> on the net without being found and compromised. If you do restrict access to this, here are a few things to remember.</p>
<ul>
<li>Use strong passwords
<p>When encountered with an authentication prompt of an application that I&#8217;ve been hired to review, some of the first things I try are:
<ol>
<li>admin/admin</li>
<li>guest/guest</li>
<li>demo/demo</li>
<li>Names of, or relating to, the site or application</li>
<li>And a few more&#8230;</li>
</ol>
<p>You may or may not be surprised with the number of &#8220;protected&#8221; sites I&#8217;ve been able to gain access to by applying this simple logic.</p>
</li>
<li>Use multiple layers, if possible
<p>A combination of authentication techniques is much preferred to only one. For example, usernames and passwords can be shared and frequently are. IP filters will help limit <em>where</em> access is allowed from and is a very effective method of restricting access.</p>
</li>
<li>Know your external attack surface
<p>Only by knowing what services or servers you have Internet accessible, can you adequately address the potential risk.</p>
</li>
</ul>
<p>Maintaining infrastructure is not an easy task, but limiting access to exposed services can help limit the risk to an environment. Beyond that, keeping up-to-date on security patches, applying them in a reasonable time frame, and applying common sense security to system administration are all very important. When the environment becomes larger, the toolset necessary to manage these different aspects also becomes important.</p>
]]></content:encoded>
			<wfw:commentRss>http://startupsecurity.info/blog/2008/10/31/startup-infrastructure-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security in a Web 2.0 Startup World</title>
		<link>http://startupsecurity.info/blog/2008/10/28/security-in-a-web-20-startup-world/</link>
		<comments>http://startupsecurity.info/blog/2008/10/28/security-in-a-web-20-startup-world/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 08:22:13 +0000</pubDate>
		<dc:creator>Damon Cortesi</dc:creator>
				<category><![CDATA[Disclosure]]></category>
		<category><![CDATA[General Site Security]]></category>
		<category><![CDATA[SQL Injection]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://startupsecurity.info/?p=54</guid>
		<description><![CDATA[So as part of my recent Life Reboot, I&#8217;ve been getting pretty deeply embedded in the (Seattle) Startup world. One of the fun things is completely changing gears after being embedded in the security world for so long and digging in to a new group of people and technology. This means, of course, that I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>So as part of my recent <a href="http://dcortesi.com/2008/08/25/life-reboot/">Life Reboot</a>, I&#8217;ve been getting pretty deeply embedded in the (Seattle) Startup world. One of the fun things is completely changing gears after being embedded in the security world for so long and digging in to a new group of people and technology. This means, of course, that I&#8217;ve been paying much more attention to the little startups that crop up all over the place.</p>
<p>And what I&#8217;m finding is a little disappointing. </p>
<p>Perhaps I&#8217;ve become a little jaded in the past few years as a security consultant. Working with some large organizations where people usually &#8220;get&#8221; security makes most (yes, there is definitely still a decent level of feedback) conversations surrounding security fairly straightforward. Not only that, but large organizations generally have the benefit of staff that understand security risks and can effectively merge them with the desires of the business to reach a reasonable solution. But let&#8217;s take a brief tour over what I&#8217;ve come across recently. (Names left out to protect the innocent.)</p>
<p><strong>Exhibit 1</strong> &#8211; A random startup (Company A) allows signups on its web page. As with any new service, I&#8217;m sure reporters would have liked to have seen who was signing up from what companies, particularly in order to validate Company A&#8217;s claims of rampant success and signups. Company A, unfortunately, would display a users&#8217; email address on the confirmation signup page. That confirmation signup page had a parameter that could be incremented up or down to reveal email addresses of anybody that signed up.</p>
<p><strong>Class</strong>: Basic design flaw, forced browsing.<br />
<strong>Status</strong>: Fixed, within a half-hour of reporting.</p>
<p><strong>Exhibit 2</strong> &#8211; Another random startup (Company B) has a new service that claims to solve some of your email woes. One of the features of this service is that you can subscribe to RSS feeds of your Inbox. Unauthenticated RSS feeds. Yes, yes, there&#8217;s a SHA-256 hash in the URL, but both Google Reader and Bloglines are searchable, not to mention the potential for referral sniffing or just plain information leakage issues.</p>
<p><strong>Class</strong>: Design flaw, lack of authentication.<br />
<strong>Status</strong>: Removed, within a half-hour of reporting. Put back into place using HTTPS. Authentication still not used.</p>
<p><strong>Exhibit 3</strong> &#8211; Company C has a sweet iPhone app. They also have a web page that is somewhat integrated into the application. That web page is vulnerable to SQL Injection.</p>
<p><strong>Class</strong>: Input validation, SQL Injection.<br />
<strong>Status</strong>: Reported, twice. No response. Depression ensues.</p>
<p><strong>Exhibit 4</strong> &#8211; Company D releases an update to their product and is highly regarded as their service no longer requires the installation of an additional component. Unfortunately, the new feature that permits for that is Cross-Site Scriptable. </p>
<p><strong>Class</strong>: Input validation, Cross-Site Scripting.<br />
<strong>Status</strong>: Reported on October 13. Waiting.</p>
<p>I guess what depresses me is that some of these are pretty basic issues. With all of these problems, I came across them within 5 minutes of using the application. I suppose this post is a plea to the startup&#8217;s of the world&#8230;</p>
<p>Please, if you aren&#8217;t familiar with security, take the time to either talk to somebody that is or bring in a security person for even just half a day to take a look at your product. If nothing else, it&#8217;s one less fire that you&#8217;ll have to put out. You can even <a href="mailto:dacort@startupsecurity.info">contact me directly</a> if you&#8217;re not sure what questions to ask, although I&#8217;ll probably put a post up about that at some point.</p>
<p>Granted, the statement above applies to everybody as even Russ McRee frequently points out on his <a href="http://holisticinfosec.blogspot.com/">HolisticInfoSec</a> blog, many other organizations struggle with basic security flaws regardless of their size or status. </p>
]]></content:encoded>
			<wfw:commentRss>http://startupsecurity.info/blog/2008/10/28/security-in-a-web-20-startup-world/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Basics of Analyzing Web Site Security</title>
		<link>http://startupsecurity.info/blog/2008/10/24/the-basics-of-analyzing-web-site-security/</link>
		<comments>http://startupsecurity.info/blog/2008/10/24/the-basics-of-analyzing-web-site-security/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 20:18:07 +0000</pubDate>
		<dc:creator>Damon Cortesi</dc:creator>
				<category><![CDATA[General Site Security]]></category>

		<guid isPermaLink="false">http://startupsecurity.info/?p=38</guid>
		<description><![CDATA[People often ask me if their web site is secure. Or perhaps what things they should be looking for that may be indicative of security problems. While I can&#8217;t answer that first question completely without performing a web application review (and associated legal docs), there are definitely conclusions I can reach based on a few [...]]]></description>
			<content:encoded><![CDATA[<p>People often ask me if their web site is secure. Or perhaps what things they should be looking for that may be indicative of security problems. While I can&#8217;t answer that first question completely without performing a web application review (and associated legal docs), there are definitely conclusions I can reach based on a few minutes on the site and even a short discussion with the developer(s). Listed below is what I do to get a <em>feel</em> for an application when I&#8217;m engaged on a security review.</p>
<ol>
<li><strong>Look and feel</strong>
<p>Honestly, if a web application looks like it was coded using a GeoCities or Frontpage template, chances are pretty good that it was coded by a developer with little experience. What that means, in turn, is that there are likely to be common security issues throughout the site.</p>
</li>
<li><strong>Error handling</strong>
<p>Somewhat related to the point above, how does the site handle application errors? Does it spit out a verbose error message with a stack trace? Or does it gracefully handle the error message and display a generic message or redirect the user appropriately. Error messages are an attacker&#8217;s friend.</p>
</li>
<li><strong>Parameter Fields</strong>
<p>What kind of parameter fields does the site use, particularly in the URL? If numeric, are the parameters relative to the user or global to the application? Do file names get passed in as parameters? If so, those might susceptible to path traversal issues. Is there a routing protocol on the front-end that limits the input, or do parameters get passed to server-side code to verify format?</p>
</li>
<li><strong>Invalid user input</strong>
<p>How does the application react when I enter input that is invalid? By invalid, I mean everything from attempting to access data that isn&#8217;t mine to putting in a name in a telephone field. Depending on this, I can gauge how much effort was put into validation and sanitization.</p>
</li>
<li><strong>Reflected user input</strong>
<p>Related to the point above, how does the application display user output. If I type HTML characters in a search that are then displayed on the results page, are they HTML encoded? Django 1.0 automatically takes care of this by autoescaping all output, for example, but other frameworks don&#8217;t. </p>
</li>
</ol>
<p>If the developers haven&#8217;t thought about these few things, it will be painfully obvious. If they have, I know that it&#8217;s going to be more difficult to find problems and they will usually be *logic errors* or *infrastructure issues*.</p>
]]></content:encoded>
			<wfw:commentRss>http://startupsecurity.info/blog/2008/10/24/the-basics-of-analyzing-web-site-security/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
