<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Backdooring Web Pages</title>
	<atom:link href="http://www.gnucitizen.org/blog/backdooring-web-pages/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gnucitizen.org/blog/backdooring-web-pages/</link>
	<description>Information Security Think Tank</description>
	<pubDate>Fri, 21 Nov 2008 20:48:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>By: AttackAPI 0.8 is OUT &#124; GNUCITIZEN</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-123991</link>
		<dc:creator>AttackAPI 0.8 is OUT &#124; GNUCITIZEN</dc:creator>
		<pubDate>Fri, 10 Oct 2008 08:20:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-123991</guid>
		<description>[...] redefines the boundaries of today’s computer security. Don’t open any mp3, QuickTime, PDF, or html file that you don’t trust. It might have one of these installed. Once you are caught in the net, [...]</description>
		<content:encoded><![CDATA[<p>[...] redefines the boundaries of today’s computer security. Don’t open any mp3, QuickTime, PDF, or html file that you don’t trust. It might have one of these installed. Once you are caught in the net, [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jake</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-117641</link>
		<dc:creator>Jake</dc:creator>
		<pubDate>Fri, 28 Mar 2008 21:07:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-117641</guid>
		<description>I don't understand how this code is executed on all the pages? I have a website that is loading my page through an iframe and I want to run the script I attached on the page that loaded my iframe.

I ran this code and outputted some debugging information and all that happens is this script being re-attached to the head of the page opened in the iframe, not the iframe's parent window.

How do I fix this?</description>
		<content:encoded><![CDATA[<p>I don&#8217;t understand how this code is executed on all the pages? I have a website that is loading my page through an iframe and I want to run the script I attached on the page that loaded my iframe.</p>
<p>I ran this code and outputted some debugging information and all that happens is this script being re-attached to the head of the page opened in the iframe, not the iframe&#8217;s parent window.</p>
<p>How do I fix this?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bryan</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-63796</link>
		<dc:creator>bryan</dc:creator>
		<pubDate>Thu, 01 Nov 2007 14:02:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-63796</guid>
		<description>go to it</description>
		<content:encoded><![CDATA[<p>go to it</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: GNUCITIZEN &#187; DANGER, DANGER, DANGER</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-1817</link>
		<dc:creator>GNUCITIZEN &#187; DANGER, DANGER, DANGER</dc:creator>
		<pubDate>Wed, 03 Jan 2007 21:22:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-1817</guid>
		<description>[...] The WEB has gone crazy. I know that this is not news for some of you but you will be surprised to what extend this craziness has just developed. It seams that the entire WEB is falling apart and someone has to do something otherwise we risk to lose too much. Among the traditional QuickTime Movie, QTL, Flash, Image, HTML and PDF backdoors, there is another one trivially achievable with high degree of impact. [...]</description>
		<content:encoded><![CDATA[<p>[...] The WEB has gone crazy. I know that this is not news for some of you but you will be surprised to what extend this craziness has just developed. It seams that the entire WEB is falling apart and someone has to do something otherwise we risk to lose too much. Among the traditional QuickTime Movie, QTL, Flash, Image, HTML and PDF backdoors, there is another one trivially achievable with high degree of impact. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pdp</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-198</link>
		<dc:creator>pdp</dc:creator>
		<pubDate>Fri, 06 Oct 2006 01:20:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-198</guid>
		<description>Seriously? That is the first case reported. I must admit that some of the materials on this blog are a bit dodgy but in general they are valid computer security research and it should be taken seriously by educational institutions. But again, who am I kidding? The government don't want you to know more than what they know.

Maybe you can use some of the &lt;a href="http://www.proxydrop.com/" rel="nofollow"&gt;AJAX proxies&lt;/a&gt; available on the net or even &lt;a href="http://translate.google.com" rel="nofollow"&gt;Google translate&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>Seriously? That is the first case reported. I must admit that some of the materials on this blog are a bit dodgy but in general they are valid computer security research and it should be taken seriously by educational institutions. But again, who am I kidding? The government don&#8217;t want you to know more than what they know.</p>
<p>Maybe you can use some of the <a href="http://www.proxydrop.com/" rel="nofollow">AJAX proxies</a> available on the net or even <a href="http://translate.google.com" rel="nofollow">Google translate</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephen</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-197</link>
		<dc:creator>stephen</dc:creator>
		<pubDate>Thu, 05 Oct 2006 16:26:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-197</guid>
		<description>the school keeps blocking this page so i keep having to find a way around it and i have run out of ways</description>
		<content:encoded><![CDATA[<p>the school keeps blocking this page so i keep having to find a way around it and i have run out of ways</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Championsupply Co. Blog &#187; Blog Archive &#187;</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-79</link>
		<dc:creator>Championsupply Co. Blog &#187; Blog Archive &#187;</dc:creator>
		<pubDate>Sat, 16 Sep 2006 01:27:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-79</guid>
		<description>[...] Unfortunately, I am just the messenger. Although I am not aware of any worms available that make use of this technique I won’t be surprised if I see one in a month or two’s time. Malicious Active content in Web Pages, Flash, QuickTime and PDF has suddenly become one of the biggest threats. [...]</description>
		<content:encoded><![CDATA[<p>[...] Unfortunately, I am just the messenger. Although I am not aware of any worms available that make use of this technique I won’t be surprised if I see one in a month or two’s time. Malicious Active content in Web Pages, Flash, QuickTime and PDF has suddenly become one of the biggest threats. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vexner &#187; Blog Archive &#187; Whats new .. or not in this case</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-62</link>
		<dc:creator>Vexner &#187; Blog Archive &#187; Whats new .. or not in this case</dc:creator>
		<pubDate>Sun, 10 Sep 2006 14:38:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-62</guid>
		<description>[...] backdooring-web-pages backdooring-flash-objects [...]</description>
		<content:encoded><![CDATA[<p>[...] backdooring-web-pages backdooring-flash-objects [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pdp</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-22</link>
		<dc:creator>pdp</dc:creator>
		<pubDate>Tue, 29 Aug 2006 07:08:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-22</guid>
		<description>You have the developer eye, this one I can tell for sure. :)

OK the problem is that you are generalizing... why not be specific. Getting the information the following way &lt;code&gt;&#60;age&#62;(\d+)&#60;/age&#62;&lt;/code&gt; is much more secure than parsing it with general purpose parser. You don't need blacklist or white list. In this example you expect something to be the way you want it to be. If it is not then it fails.

I know that usually things are not that simple. The example above is suitable for data extraction. The hardest part is to perform data striping. However, stripping out special characters is sometimes as simple as the fowling &lt;code&gt;/&#60;&#124;&#62;&#124;&#038;.*?;&#124;(... here more rules ...)//&lt;/code&gt;. You can add a few more rules inside. I am far from thinking that these approaches are perfect. The list of possible problems is endless.</description>
		<content:encoded><![CDATA[<p>You have the developer eye, this one I can tell for sure. :)</p>
<p>OK the problem is that you are generalizing&#8230; why not be specific. Getting the information the following way <code>&lt;age&gt;(\d+)&lt;/age&gt;</code> is much more secure than parsing it with general purpose parser. You don&#8217;t need blacklist or white list. In this example you expect something to be the way you want it to be. If it is not then it fails.</p>
<p>I know that usually things are not that simple. The example above is suitable for data extraction. The hardest part is to perform data striping. However, stripping out special characters is sometimes as simple as the fowling <code>/&lt;|&gt;|&#038;.*?;|(... here more rules ...)//</code>. You can add a few more rules inside. I am far from thinking that these approaches are perfect. The list of possible problems is endless.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brad Neuberg</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-21</link>
		<dc:creator>Brad Neuberg</dc:creator>
		<pubDate>Tue, 29 Aug 2006 02:07:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-21</guid>
		<description>But XSS filters that use simple regex are a part of the problem themselves... they miss important edge cases, such as:

&lt;pre&gt;&lt;code&gt;&#60;
 script
src=&#34;http://foobar.com/badscript.js&#34;
&#62;&lt;/code&gt;&lt;/pre&gt;

This is valid HTML; the only way to catch it is to parse your HTML before executing it, then whitelist the elements you want to keep.

Brad</description>
		<content:encoded><![CDATA[<p>But XSS filters that use simple regex are a part of the problem themselves&#8230; they miss important edge cases, such as:</p>
<pre><code>&lt;
 script
src=&quot;http://foobar.com/badscript.js&quot;
&gt;</code></pre>
<p>This is valid HTML; the only way to catch it is to parse your HTML before executing it, then whitelist the elements you want to keep.</p>
<p>Brad</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pdp</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-20</link>
		<dc:creator>pdp</dc:creator>
		<pubDate>Tue, 29 Aug 2006 01:06:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-20</guid>
		<description>As you said "secure systems are ultimately simple systems". Don't use general purpose parsers. Sometimes simple regex could be much better.</description>
		<content:encoded><![CDATA[<p>As you said &#8220;secure systems are ultimately simple systems&#8221;. Don&#8217;t use general purpose parsers. Sometimes simple regex could be much better.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brad Neuberg</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-19</link>
		<dc:creator>Brad Neuberg</dc:creator>
		<pubDate>Tue, 29 Aug 2006 00:45:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-19</guid>
		<description>Ah, yes, XML can contain an XSLT stylesheet directive, but that won't be executed if fetched through Flash or XmlHttpRequest; it is simply a dumb document at that point. 

You're correct about the fact that XML can be a wrapper around raw data, which we've seen with the RSS exploits. You've got to sanitize your data.

Secure systems are ultimately simple systems, and the web at this point is anything but. I'm just a web dev trying to push the browser past it's limits; I think the reponsibility really falls on the browser makers (read: IE) to help change the situation. If we had one clear path for each of these things it might help things.

Best,
  Brad</description>
		<content:encoded><![CDATA[<p>Ah, yes, XML can contain an XSLT stylesheet directive, but that won&#8217;t be executed if fetched through Flash or XmlHttpRequest; it is simply a dumb document at that point. </p>
<p>You&#8217;re correct about the fact that XML can be a wrapper around raw data, which we&#8217;ve seen with the RSS exploits. You&#8217;ve got to sanitize your data.</p>
<p>Secure systems are ultimately simple systems, and the web at this point is anything but. I&#8217;m just a web dev trying to push the browser past it&#8217;s limits; I think the reponsibility really falls on the browser makers (read: IE) to help change the situation. If we had one clear path for each of these things it might help things.</p>
<p>Best,<br />
  Brad</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pdp</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-18</link>
		<dc:creator>pdp</dc:creator>
		<pubDate>Mon, 28 Aug 2006 23:55:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-18</guid>
		<description>First of all I have a few comments on fetching XML via Dojo.Flash. The thing is that XML is far from static. In fact XML is a framework capable of describing tasks. XML is very broad and there are so many technologies involved in it that makes developer's live hard to cope with. XSLT for example is Turing complete language capable of producing polymorphic code. Writing virus or worm in XSLT is not as trivial as writing it in C or JavaScript but still possible.

The sad fact is that XML can be used to backdoor even your browser. Firefox is nothing but mashup of XML related technologies (RDF, XSLT, XPath, ... etc).

It is also worth mentioning that many times XML is used to encapsulate otherwise raw data. XML is also used as a transport protocol. Again, the encapsulated data that resides inside must be sanitized. Because XML and all technologies based on it are so complicated it is much easier to make mistakes.

Again, the sad fact is that XML can be used to backdoor your pages.

I agree that some kind of Dojo Security Guide will be overally beneficial. However, IMHO, it is far from practical. The security field (and other fields as well) goes through cycles. When something is fixed another thing gets broken. If you fix the security than you break the accessibility.  Then you fix the accessibility and at the same time break the security. There is only a golden middle. :)</description>
		<content:encoded><![CDATA[<p>First of all I have a few comments on fetching XML via Dojo.Flash. The thing is that XML is far from static. In fact XML is a framework capable of describing tasks. XML is very broad and there are so many technologies involved in it that makes developer&#8217;s live hard to cope with. XSLT for example is Turing complete language capable of producing polymorphic code. Writing virus or worm in XSLT is not as trivial as writing it in C or JavaScript but still possible.</p>
<p>The sad fact is that XML can be used to backdoor even your browser. Firefox is nothing but mashup of XML related technologies (RDF, XSLT, XPath, &#8230; etc).</p>
<p>It is also worth mentioning that many times XML is used to encapsulate otherwise raw data. XML is also used as a transport protocol. Again, the encapsulated data that resides inside must be sanitized. Because XML and all technologies based on it are so complicated it is much easier to make mistakes.</p>
<p>Again, the sad fact is that XML can be used to backdoor your pages.</p>
<p>I agree that some kind of Dojo Security Guide will be overally beneficial. However, IMHO, it is far from practical. The security field (and other fields as well) goes through cycles. When something is fixed another thing gets broken. If you fix the security than you break the accessibility.  Then you fix the accessibility and at the same time break the security. There is only a golden middle. :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brad Neuberg</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-16</link>
		<dc:creator>Brad Neuberg</dc:creator>
		<pubDate>Mon, 28 Aug 2006 22:26:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-16</guid>
		<description>By the way, I do my work with one half excitement and one half trepidation; I'm trying very hard to think about the security issues while also moving the web forward. It's damn hard with the state of the browser world these days; damn Microsoft and Internet Explorer. I bet if got a small number of their core team and explained to them how a small number of important technical decisions now could keep the web from becomming a mess in the future. I have some contacts there; I wonder if we can do a good cop/bad cop kind of thing? 

By the way, even if we say "no client-side mashups", many of these problems exist with server side mashups as well. My server-side, for example, could be talking to a Yahoo service that returns RSS, which I then return to the client; one of the items in this feed, for example, might have some HTML that has an inline SCRIPT tag, which I then insert into my HTML using innerHTML, causing the SCRIPT tag to execute (not sure if SCRIPT will execute inside of innerHTML). This SCRIPT tag could then do a privilege escalation to access sensitive data, including cookies, and send it off to a third party site using existing leaky holes, like using even the image tag to piggyback info on the URL I fetch for the image.</description>
		<content:encoded><![CDATA[<p>By the way, I do my work with one half excitement and one half trepidation; I&#8217;m trying very hard to think about the security issues while also moving the web forward. It&#8217;s damn hard with the state of the browser world these days; damn Microsoft and Internet Explorer. I bet if got a small number of their core team and explained to them how a small number of important technical decisions now could keep the web from becomming a mess in the future. I have some contacts there; I wonder if we can do a good cop/bad cop kind of thing? </p>
<p>By the way, even if we say &#8220;no client-side mashups&#8221;, many of these problems exist with server side mashups as well. My server-side, for example, could be talking to a Yahoo service that returns RSS, which I then return to the client; one of the items in this feed, for example, might have some HTML that has an inline SCRIPT tag, which I then insert into my HTML using innerHTML, causing the SCRIPT tag to execute (not sure if SCRIPT will execute inside of innerHTML). This SCRIPT tag could then do a privilege escalation to access sensitive data, including cookies, and send it off to a third party site using existing leaky holes, like using even the image tag to piggyback info on the URL I fetch for the image.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brad Neuberg</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-15</link>
		<dc:creator>Brad Neuberg</dc:creator>
		<pubDate>Mon, 28 Aug 2006 22:17:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-15</guid>
		<description>Good points; I'm a big supporter of the kind of security you are doing, even if it is concerning things I'm working on. Keeps me on my toes :)

You identified some interesting attack vectors; if an attacker can write a 'virus' in essence into the Flash storage, it won't be cleared out normally even I clear my cookies. It reminds me of some old computer viruses that would stay even after getting cleaned out by writing themselves into the boot sector and stuff like that. The point about an XSS attack gaining access to valuable local data is also an important one.

Both these vulnerabilities seem to be sensitive to getting an XSS foothold first, then exploting Dojo Storage/Flash second. The first line of defense is to secure against untrusted code being executed in your context; this is difficult, as even a remote stylesheet on Internet Explorer, for example, can eval JavaScript inside of a stylerule. The core of the attack is a privilege escalation.

The problem is compounded when you combine the cross-site beneficial API calls that I and others are trying to do to create new kinds of mashups. This could potentially allow untrusted code to be evalled in a local context, especially if you are using the SCRIPT trick in order to get around the same domain policy, where you create a new SCRIPT tag dynamically through the DOM and get the results as JavaScript that are evalled. 

Note, though, that if you use hidden Flash to do the cross-site calls, you can fetch XML from a third party site and pass this back to Ajax/DHTML using the Dojo.Flash library; this makes things safer, because XML is static and doesn't have behavior; perhaps this is a new, good argument for using hidden Flash to do the cross-site mashups we are trying to achieve rather than the SCRIPT trick.

The cross-site stuff is definently risky, and it does demand a certain level of awareness from developers; it also depends on them trusting the services they mashup. Perhaps what is needed is a formal methodology to make sure that XSS attacks aren't possible with what you've built; I know the potential futility of such an approach, but it might pan out. One issue that developers must be aware of is how user-generated content fits into all of this; even if they trust the services they mashup, a user-generated piece of content can have dynamic behavior that is running in a local context. Perhaps what we can have is a simple checklist that more junior level programmers who are working with this stuff have to think about:

&lt;ul&gt;
&lt;li&gt;Do you trust what you are mashing up? If not, stop.&lt;/li&gt;
&lt;li&gt;Even if you trust who you are mashing up, do they allow user-generated content into their return results?&lt;/li&gt;
&lt;li&gt;Do you allow user-generated content into your results?&lt;/li&gt;
&lt;/ul&gt;

This is not a long-term best strategy though.

I'm hoping that the beneficial XSS stuff will force the browser developers to build a better model in, such as what the WHATWG group is working on for cross-site communication using static messaging rather than 'behavior'.

Best,
  Brad</description>
		<content:encoded><![CDATA[<p>Good points; I&#8217;m a big supporter of the kind of security you are doing, even if it is concerning things I&#8217;m working on. Keeps me on my toes :)</p>
<p>You identified some interesting attack vectors; if an attacker can write a &#8216;virus&#8217; in essence into the Flash storage, it won&#8217;t be cleared out normally even I clear my cookies. It reminds me of some old computer viruses that would stay even after getting cleaned out by writing themselves into the boot sector and stuff like that. The point about an XSS attack gaining access to valuable local data is also an important one.</p>
<p>Both these vulnerabilities seem to be sensitive to getting an XSS foothold first, then exploting Dojo Storage/Flash second. The first line of defense is to secure against untrusted code being executed in your context; this is difficult, as even a remote stylesheet on Internet Explorer, for example, can eval JavaScript inside of a stylerule. The core of the attack is a privilege escalation.</p>
<p>The problem is compounded when you combine the cross-site beneficial API calls that I and others are trying to do to create new kinds of mashups. This could potentially allow untrusted code to be evalled in a local context, especially if you are using the SCRIPT trick in order to get around the same domain policy, where you create a new SCRIPT tag dynamically through the DOM and get the results as JavaScript that are evalled. </p>
<p>Note, though, that if you use hidden Flash to do the cross-site calls, you can fetch XML from a third party site and pass this back to Ajax/DHTML using the Dojo.Flash library; this makes things safer, because XML is static and doesn&#8217;t have behavior; perhaps this is a new, good argument for using hidden Flash to do the cross-site mashups we are trying to achieve rather than the SCRIPT trick.</p>
<p>The cross-site stuff is definently risky, and it does demand a certain level of awareness from developers; it also depends on them trusting the services they mashup. Perhaps what is needed is a formal methodology to make sure that XSS attacks aren&#8217;t possible with what you&#8217;ve built; I know the potential futility of such an approach, but it might pan out. One issue that developers must be aware of is how user-generated content fits into all of this; even if they trust the services they mashup, a user-generated piece of content can have dynamic behavior that is running in a local context. Perhaps what we can have is a simple checklist that more junior level programmers who are working with this stuff have to think about:</p>
<ul>
<li>Do you trust what you are mashing up? If not, stop.</li>
<li>Even if you trust who you are mashing up, do they allow user-generated content into their return results?</li>
<li>Do you allow user-generated content into your results?</li>
</ul>
<p>This is not a long-term best strategy though.</p>
<p>I&#8217;m hoping that the beneficial XSS stuff will force the browser developers to build a better model in, such as what the WHATWG group is working on for cross-site communication using static messaging rather than &#8216;behavior&#8217;.</p>
<p>Best,<br />
  Brad</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pdp</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-14</link>
		<dc:creator>pdp</dc:creator>
		<pubDate>Mon, 28 Aug 2006 20:44:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-14</guid>
		<description>Hi Brad,

It is not that you are doing anything wrong with your Flash storage object. It is a brilliant work and I really enjoy playing with it. Here is a very well know cliche that describes pretty much all security problems: "With the great power comes the great responsibility". Now let me explain why it is a security problem.

First of all developers will use your flash storage stuff for all sorts of things: mail drafts, temporary storage of sensitive information, etc, etc, etc. If the domain that host your flash storage object is vulnerable to XSS than the information that is trapped inside is far more interesting than the site cookies.

The second problem is that developers secure the server by sanitizing all input channels. This is fine, however it is absolutely not a practice to sanitize all input channels that reside on the client. If the developer temporary stores information inside your flash object and then without any sort of sensitization this information is written inside the page via document.write (other ways are also possible) then you have a problem. As I discussed in this post, web page backdoors can use this technique as a channel to reappear again even though they are disabled. This is sort of persistent XSS on the client, also know as DOM-based Cross-site Scripting.

Finally, you brought a very valid point earlier that gave me a few ideas. Your flash storage object can be and will be used as a covert channel for other backdoors.

You made very good point about the problems around disclosing sensitive information. The problem with the security field is that unless you make enough noise nobody will take you seriously. XSS attacks have been here for ages and many people still believe that they are too lame.

For me and other people that I know, it is crucial to stay ahead of the game. After all we are the good guys. It is not that we want to satisfy our ego and that is the reason why we continue researching these topics. All this research, could be valuable to professional attackers but the tendency is that it will take some time until it gets into mainstream exploitation. This gives us a couple of months technological benefit that we will use for the good.

Now here is something that I learned from Mario Puzo's &lt;strong&gt;The Godfather&lt;/strong&gt;. When the heads of all families gathered to discuss about the potentials in the drug business there was only one of them that made any sense. This dude, sorry I forgot his name, reasoned that after all, although he don't believe in drugs, he will take part of the business because then he can control it. As such he will do more good than evil by not allowing drug lords to go to schools or other public places.</description>
		<content:encoded><![CDATA[<p>Hi Brad,</p>
<p>It is not that you are doing anything wrong with your Flash storage object. It is a brilliant work and I really enjoy playing with it. Here is a very well know cliche that describes pretty much all security problems: &#8220;With the great power comes the great responsibility&#8221;. Now let me explain why it is a security problem.</p>
<p>First of all developers will use your flash storage stuff for all sorts of things: mail drafts, temporary storage of sensitive information, etc, etc, etc. If the domain that host your flash storage object is vulnerable to XSS than the information that is trapped inside is far more interesting than the site cookies.</p>
<p>The second problem is that developers secure the server by sanitizing all input channels. This is fine, however it is absolutely not a practice to sanitize all input channels that reside on the client. If the developer temporary stores information inside your flash object and then without any sort of sensitization this information is written inside the page via document.write (other ways are also possible) then you have a problem. As I discussed in this post, web page backdoors can use this technique as a channel to reappear again even though they are disabled. This is sort of persistent XSS on the client, also know as DOM-based Cross-site Scripting.</p>
<p>Finally, you brought a very valid point earlier that gave me a few ideas. Your flash storage object can be and will be used as a covert channel for other backdoors.</p>
<p>You made very good point about the problems around disclosing sensitive information. The problem with the security field is that unless you make enough noise nobody will take you seriously. XSS attacks have been here for ages and many people still believe that they are too lame.</p>
<p>For me and other people that I know, it is crucial to stay ahead of the game. After all we are the good guys. It is not that we want to satisfy our ego and that is the reason why we continue researching these topics. All this research, could be valuable to professional attackers but the tendency is that it will take some time until it gets into mainstream exploitation. This gives us a couple of months technological benefit that we will use for the good.</p>
<p>Now here is something that I learned from Mario Puzo&#8217;s <strong>The Godfather</strong>. When the heads of all families gathered to discuss about the potentials in the drug business there was only one of them that made any sense. This dude, sorry I forgot his name, reasoned that after all, although he don&#8217;t believe in drugs, he will take part of the business because then he can control it. As such he will do more good than evil by not allowing drug lords to go to schools or other public places.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brad Neuberg</title>
		<link>http://www.gnucitizen.org/blog/backdooring-web-pages/#comment-13</link>
		<dc:creator>Brad Neuberg</dc:creator>
		<pubDate>Mon, 28 Aug 2006 17:09:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/backdooring-web-pages#comment-13</guid>
		<description>Hi! I created the Ajax/Flash storage stuff you talked about and want to make sure it can't be used as an attack vector; can you talk more about how you think it can be used? Right now data is locked to a single domain, so one domain can't access the other domain's data. Further, it only works when invoked over the HTTP protocol, and not if invoked from a chrome&#58;// or file&#58;// protocol, making it difficult for local, compromised trojan code such as a fake firefox trojan to use it as a vector to store malignant information unless they are being served from a local HTTP server.

By the way, thanks for doing this work. Sometimes I do work that pushes the bounds of the browser models, such as dojo.storage and beneficial cross-site scripting, but I'm always thinking and worrying about how the work I'm doing might open potential attack vectors. I try to spend alot of time thinking about this stuff myself, and if there is an issue to at least point it out so that developers can be informed (for example, if you host a Dojo Storage app on shared hosting, other apps served from the same domain can access your Dojo Storage data - you have the same access controls as cookies do, which are also linked to a domain - I try to make sure developers know this).

Best,
  Brad</description>
		<content:encoded><![CDATA[<p>Hi! I created the Ajax/Flash storage stuff you talked about and want to make sure it can&#8217;t be used as an attack vector; can you talk more about how you think it can be used? Right now data is locked to a single domain, so one domain can&#8217;t access the other domain&#8217;s data. Further, it only works when invoked over the HTTP protocol, and not if invoked from a chrome&#58;// or file&#58;// protocol, making it difficult for local, compromised trojan code such as a fake firefox trojan to use it as a vector to store malignant information unless they are being served from a local HTTP server.</p>
<p>By the way, thanks for doing this work. Sometimes I do work that pushes the bounds of the browser models, such as dojo.storage and beneficial cross-site scripting, but I&#8217;m always thinking and worrying about how the work I&#8217;m doing might open potential attack vectors. I try to spend alot of time thinking about this stuff myself, and if there is an issue to at least point it out so that developers can be informed (for example, if you host a Dojo Storage app on shared hosting, other apps served from the same domain can access your Dojo Storage data - you have the same access controls as cookies do, which are also linked to a domain - I try to make sure developers know this).</p>
<p>Best,<br />
  Brad</p>
]]></content:encoded>
	</item>
</channel>
</rss>
