<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Hi, I'm Eric and I'll be your software developer this evening</title><link>http://blogs.msdn.com/ericlippert/archive/2003/09/23/53076.aspx</link><description>The other day I mentioned my worst customer-impacting mistake ever -- marking a heavily used object with the wrong threading model. A number of people commented to me that it was unusual to see a developer own up to such a mistake in a public forum. (Surprisingly,</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>RE: Hi, I'm Eric and I'll be your software developer this evening</title><link>http://blogs.msdn.com/ericlippert/archive/2003/09/23/53076.aspx#53077</link><pubDate>Tue, 23 Sep 2003 23:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:53077</guid><dc:creator>Deadprogrammer</dc:creator><description>Every time I look at the Citicorp building I think that the &amp;lt;a href=&amp;quot;http://deadprogrammer.livejournal.com/2003/04/15/&amp;quot;&amp;gt;only thing that is holding it up&amp;lt;/a&amp;gt; is the integrity of it's architect.

By the way dictionary object thing is nothing compared to  ::$DATA thing. I had a lot of fun looking at other people's code when that happened.</description></item><item><title>RE: Hi, I'm Eric and I'll be your software developer this evening</title><link>http://blogs.msdn.com/ericlippert/archive/2003/09/23/53076.aspx#53078</link><pubDate>Wed, 24 Sep 2003 00:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:53078</guid><dc:creator>Blake</dc:creator><description>Despite how easy it was to exploit, ::$DATA was really a pretty subtle bug to catch.  The fact that NTFS supports multiple named streams per file has always been little known or understood.  The fact that the 'main' stream is named :$DATA was never documented at all as far as I'm aware.  I'm sure the people on the IIS team who wrote the URL cracking code had no reasonable way to know that it was named such.</description></item><item><title>RE: Hi, I'm Eric and I'll be your software developer this evening</title><link>http://blogs.msdn.com/ericlippert/archive/2003/09/23/53076.aspx#53079</link><pubDate>Wed, 24 Sep 2003 02:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:53079</guid><dc:creator>Eric Lippert</dc:creator><description>The fundamental problem wasn't the $DATA vulnerabilty.  The fundamental problem was that the guys who wrote the URL cracking code _failed to an insecure mode due to a canonicalization error_.  The fact that $DATA happened to be the vulnerability that was found is actually kind of irrelevant -- when you make decisions based on noncanonical data you invite these kinds of problems.  I talked about this quite a bit in my book actually.</description></item><item><title>RE: Hi, I'm Eric and I'll be your software developer this evening</title><link>http://blogs.msdn.com/ericlippert/archive/2003/09/23/53076.aspx#53080</link><pubDate>Wed, 24 Sep 2003 07:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:53080</guid><dc:creator>Blake</dc:creator><description>I agree whole heartedly about 'fail safe', in the original sense of the phrase.  The importance of that as a design point can't be overstated.

That said, I don't follow why that was strictly a canonicalization error.  They are valid path characters per rfc1738 and it's updates.  It's a valid Win32/NTFS path as well.  Why _should_ they be canonicalizing it?

Hmm, on the other hand, what is broken is when I think about it is extracting the extension and hence type.  Actually, there's lots of interesting questions there... clearly the streams within a file have different types.  The stream containing document properties shouldn't be passed to the ASP engine even thought it's file extension is .ASP.

Okay, I'm just rambling now, ignore me.</description></item><item><title>RE: Hi, I'm Eric and I'll be your software developer this evening</title><link>http://blogs.msdn.com/ericlippert/archive/2003/09/23/53076.aspx#53081</link><pubDate>Fri, 26 Sep 2003 04:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:53081</guid><dc:creator>Peter Torr</dc:creator><description>I thought we transformed code into money...? :-)

As to the :$DATA thing. I was actually thinking the other day (for reasons that are beyond me) that it would be &amp;quot;cool&amp;quot; to get IIS to scan the entire wwwroot folder (and any other vroots) and keep all known filenames in memory. Then whenever it got a request, it would merely check if the name was in its list, return it if it was, or reject it if it was not. This (in theory) would stop many information leakage errors, because (i) there's no attempt at canonicalisation, and (ii) IIS never says &amp;quot;Oi! Mr. Windows, Can you load this 'ere file for me?&amp;quot; It only loads files that it knows are good and safe, using the exact same filenames it retrieved from the filesystem search itself. Just a thought, although the perf / memory impact is probably quite bad..</description></item><item><title>Customer Service Is Not Rocket Science</title><link>http://blogs.msdn.com/ericlippert/archive/2003/09/23/53076.aspx#107380</link><pubDate>Sun, 04 Apr 2004 20:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:107380</guid><dc:creator>Fabulous Adventures In Coding</dc:creator><description /></item></channel></rss>