<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Jeremy Simmons: The Blog - ASP.Net</title>
    <link>http://www.jeremysimmons.net/blog/</link>
    <description>Four out of Five Coders recommend</description>
    <language>en-us</language>
    <copyright>Jeremy Simmons 2005-2009</copyright>
    <lastBuildDate>Fri, 08 Oct 2004 13:46:03 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.2.8279.16125</generator>
    <managingEditor>jsimmons@jeremysimmons.net</managingEditor>
    <webMaster>jsimmons@jeremysimmons.net</webMaster>
    <item>
      <trackback:ping>http://www.jeremysimmons.net/blog/Trackback.aspx?guid=7aaa0cc6-f230-4d25-b146-1e1182c9792b</trackback:ping>
      <pingback:server>http://www.jeremysimmons.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jeremysimmons.net/blog/PermaLink,guid,7aaa0cc6-f230-4d25-b146-1e1182c9792b.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.jeremysimmons.net/blog/CommentView,guid,7aaa0cc6-f230-4d25-b146-1e1182c9792b.aspx</wfw:comment>
      <wfw:commentRss>http://www.jeremysimmons.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=7aaa0cc6-f230-4d25-b146-1e1182c9792b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font color="#000000">
            <span>COVER YOUR SECURITY HOLES! It's quick, it's painless,
and should be a standard procedure for all production apps.</span>
          </font>
        </p>
        <font color="#000000">
          <span>
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <h4>Global.asax code sample (Visual Basic .NET)
</h4>
            </span>
            <p>
              <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">&lt;script
language=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"vb"</span> runat=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"server"</span>&gt;<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span> Application_BeginRequest(Sender <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">as</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Object</span>,
E <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">as</span> EventArgs)<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">If</span> (Request.Path.IndexOf(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">chr</span>(92))
&gt;= 0 <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">OR</span> _<br />
System.IO.Path.GetFullPath(Request.PhysicalPath) &lt;&gt; Request.PhysicalPath) <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">then</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Throw</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">New</span> HttpException(404, <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Not
Found"</span>)<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">If</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">End</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Sub</span><br />
&lt;/script&gt;</span>
            </p>
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <h4>Global.asax code sample ( C#)
</h4>
              <p>
                <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">&lt;script
language=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"C#"</span> runat=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"server"</span>&gt;<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> Application_BeginRequest(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">object</span> source,
EventArgs e) {<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">if</span> (Request.Path.IndexOf('\\')
&gt;= 0 ||<br />
System.IO.Path.GetFullPath(Request.PhysicalPath) !<span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> Request.PhysicalPath)
{<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">throw</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> HttpException(404, <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"not
found"</span>);<br />
}<br />
}<br />
&lt;/script&gt;<br /></span>
              </p>
            </span>
            <p>
              <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
                <br />
 
</span>
            </p>
          </span>
        </font>
        <p>
          <font color="#000000">
            <span>On with the blog.</span>
          </font>
        </p>
        <p>
          <font color="#000000">
            <span>I was reading my daily email and ran accross a new alert.
Apparantly on 10/6/2004 Microsoft released KB Article 887459. This article can be
read here <a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;887459">http://support.microsoft.com/default.aspx?scid=kb;EN-US;887459</a> </span>
          </font>
          <font color="#000000">
            <span>The
site that I visit to find out about these is <a href="http://kbalertz.com/">http://kbalertz.com</a>.
Great site, they have a free email letter. Sign up if you're any kind of a respectable
Microsoft geek.</span>
          </font>
        </p>
        <p>
          <font color="#000000">
            <span>So, in this website, on the feedback someone says, “Well,
we have URLScan installed. Aren't we already covered“ </span>
          </font>
        </p>
        <p>
          <font color="#000000">
            <span>
            </span>
          </font>
          <font color="#000000">
            <span>Yes, my friend,
you are covered from a canononical attack if you use the default install of URLScan,
and it hasn't been tampered with, and you can ensure some sysadmin hasn't uninstalled
it, or some developer who is too lazy to write code that is kosher with that kind
of tool. Lets not forget, gasp, our customers may not have this installed.</span>
          </font>
        </p>
        <p>
          <font color="#000000">
            <span>If you read the documentation for URLScan here  </span>
          </font>
          <font color="#000000">
            <span>
              <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/HT_URLScan.asp">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/HT_URLScan.asp</a> You'll
find the following info</span>
          </font>
        </p>
        <ul>
          <li>
            <font color="#000000">
              <span>URLScan blocks requests that contain potentially harmful
characters, for example, characters that have been used to exploit vulnerabilities
in the past such as "." used for directory traversal. It is not recommended that project
paths contain the "." character. If you must allow this, you need to set AllowDotInPath=1
in URLScan.ini. </span>
            </font>
          </li>
        </ul>
        <p>
          <font color="#000000">
            <span>It's very clear that URLScan does do the same 'thing'
(blocking a period to avoid canononical traversal) only in the sense that it accomplishes
it as an end result. It does not do provide a total solution for all vectors of attack.
The problem is that if you deploy a webapp to a customer's box, you cannot ensure
that they have (or will have) Urlscan installed. If you the vendor do not take steps
to make sure that kind of functionality is provided within the app, you're going to
loose one (if not many more) customers.</span> This kind of common sense is not something
they put in KB articles, and is reserved mostly for blogs. Sigh. Maybe someone will
read this and take it to heart.</font>
        </p>
        <p>
          <font color="#000000">Update,</font>
        </p>
        <p>
          <font color="#000000">I pulled this information from Scott Hanselman's blog <a href="http://www.hanselman.com/blog/PermaLink.aspx?guid=78159d3b-40f2-45d0-93ad-2718274cbccb">http://www.hanselman.com/blog/PermaLink.aspx?guid=78159d3b-40f2-45d0-93ad-2718274cbccb</a></font>
        </p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <em>1) Updated </em>
            <a href="http://www.hanselman.com/blog/ct.ashx?id=78159d3b-40f2-45d0-93ad-2718274cbccb&amp;url=http%3a%2f%2fwww.microsoft.com%2fsecurity%2fincident%2faspnet.mspx">
              <em>http://www.microsoft.com/security/incident/aspnet.mspx</em>
            </a>
            <em> with
new information about the reported vulnerability.  This should help clear up
some of the confusion we've seen about what is affected by this.  To be super
clear, all ASP.NET applications, on ALL OS's should follow the guidance provided.</em>
          </p>
          <p>
            <em>2) A new HTTP Module mitigation best practice.  This is in the form
of an MSI installer that will help protect all ASP.NET applications on a Web server. 
This MSI installer will place a binary into the GAC and update the machine.config
file for ASP.NET.  You can find download information at </em>
            <a href="http://www.hanselman.com/blog/ct.ashx?id=78159d3b-40f2-45d0-93ad-2718274cbccb&amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyID%3dda77b852-dfa0-4631-aaf9-8bcc6c743026%26displaylang%3den">
              <em>http://www.microsoft.com/downloads/details.aspx?FamilyID=da77b852-dfa0-4631-aaf9-8bcc6c743026&amp;displaylang=en</em>
            </a>
          </p>
          <p>
            <em>You can also download the MSI directly at </em>
            <a href="http://www.hanselman.com/blog/ct.ashx?id=78159d3b-40f2-45d0-93ad-2718274cbccb&amp;url=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f4%2f6%2f1%2f461433d5-cbac-4721-85cb-c5a514fd0049%2fVPModule.msi">
              <em>http://download.microsoft.com/download/4/6/1/461433d5-cbac-4721-85cb-c5a514fd0049/VPModule.msi</em>
            </a>
          </p>
          <p>
            <em>3) Detailed guidance about the HTTP Module, how the MSI works, and how to deploy
it.  You can find this KB Article at </em>
            <a href="http://www.hanselman.com/blog/ct.ashx?id=78159d3b-40f2-45d0-93ad-2718274cbccb&amp;url=http%3a%2f%2fsupport.microsoft.com%2f%3fkbid%3d887289">
              <em>http://support.microsoft.com/?kbid=887289</em>
            </a>
            <br />
          </p>
        </blockquote>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.jeremysimmons.net/blog/aggbug.ashx?id=7aaa0cc6-f230-4d25-b146-1e1182c9792b" />
      </body>
      <title>Making your Asp.Net Applications safe from conononical attacks</title>
      <guid isPermaLink="false">http://www.jeremysimmons.net/blog/PermaLink,guid,7aaa0cc6-f230-4d25-b146-1e1182c9792b.aspx</guid>
      <link>http://www.jeremysimmons.net/blog/2004/10/08/MakingYourAspNetApplicationsSafeFromConononicalAttacks.aspx</link>
      <pubDate>Fri, 08 Oct 2004 13:46:03 GMT</pubDate>
      <description>&lt;p&gt;
&lt;font color=#000000&gt;&lt;span&gt;COVER YOUR SECURITY HOLES! It's quick, it's painless, and
should be a standard procedure for all production apps.&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;font color=#000000&gt;&lt;span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt; 
&lt;h4&gt;Global.asax code sample (Visual Basic .NET)
&lt;/h4&gt;
&lt;/span&gt; 
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;lt;script
language=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"vb"&lt;/span&gt; runat=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"server"&lt;/span&gt;&amp;gt;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt; Application_BeginRequest(Sender &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;as&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Object&lt;/span&gt;,
E &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;as&lt;/span&gt; EventArgs)&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;If&lt;/span&gt; (Request.Path.IndexOf(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;chr&lt;/span&gt;(92))
&amp;gt;= 0 &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;OR&lt;/span&gt; _&lt;br&gt;
System.IO.Path.GetFullPath(Request.PhysicalPath) &amp;lt;&amp;gt; Request.PhysicalPath) &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;then&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Throw&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;New&lt;/span&gt; HttpException(404, &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Not
Found"&lt;/span&gt;)&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;If&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;End&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Sub&lt;/span&gt;
&lt;br&gt;
&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt; 
&lt;h4&gt;Global.asax code sample ( C#)
&lt;/h4&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;lt;script
language=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"C#"&lt;/span&gt; runat=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"server"&lt;/span&gt;&amp;gt;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; Application_BeginRequest(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;object&lt;/span&gt; source,
EventArgs e) {&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt; (Request.Path.IndexOf('\\')
&amp;gt;= 0 ||&lt;br&gt;
System.IO.Path.GetFullPath(Request.PhysicalPath) !&lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; Request.PhysicalPath)
{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;throw&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; HttpException(404, &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"not
found"&lt;/span&gt;);&lt;br&gt;
}&lt;br&gt;
}&lt;br&gt;
&amp;lt;/script&amp;gt;&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/span&gt; 
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;
&lt;br&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/span&gt;&gt;&lt;/font&gt; 
&lt;p&gt;
&lt;font color=#000000&gt;&lt;span&gt;On with the blog.&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000000&gt;&lt;span&gt;I was reading my daily email and ran accross a new alert.
Apparantly on 10/6/2004 Microsoft released KB Article 887459. This article can be
read here &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;887459"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;887459&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;font color=#000000&gt;&lt;span&gt;The
site that I visit to find out about these is &lt;a href="http://kbalertz.com/"&gt;http://kbalertz.com&lt;/a&gt;.
Great site, they have a free email letter. Sign up if you're any kind of a respectable
Microsoft geek.&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000000&gt;&lt;span&gt;So, in this website, on the feedback someone says, &amp;#8220;Well,
we have URLScan installed. Aren't we already covered&amp;#8220; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000000&gt;&lt;span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font color=#000000&gt;&lt;span&gt;Yes, my friend,
you are covered from a canononical attack if you use the default install of URLScan,
and it hasn't been tampered with, and you can ensure some sysadmin hasn't uninstalled
it, or some developer who is too lazy to write code that is kosher with that kind
of tool. Lets not forget, gasp, our customers may not have this installed.&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000000&gt;&lt;span&gt;If you read the documentation for URLScan here&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;font color=#000000&gt;&lt;span&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/HT_URLScan.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/HT_URLScan.asp&lt;/a&gt;&amp;nbsp;You'll
find the following info&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;font color=#000000&gt;&lt;span&gt;URLScan blocks requests that contain potentially harmful
characters, for example, characters that have been used to exploit vulnerabilities
in the past such as "." used for directory traversal. It is not recommended that project
paths contain the "." character. If you must allow this, you need to set AllowDotInPath=1
in URLScan.ini.&amp;nbsp;&lt;/span&gt;&lt;/font&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font color=#000000&gt;&lt;span&gt;It's very clear that&amp;nbsp;URLScan does do the same 'thing'
(blocking a period to avoid canononical traversal) only in the sense that it accomplishes
it as an end result. It does not do provide a total solution for all vectors of attack.
The problem is that if you deploy a webapp to a customer's box, you cannot ensure
that they have (or will have) Urlscan installed. If you the vendor do not take steps
to make sure that kind of functionality is provided within the app, you're going to
loose one (if not many more) customers.&lt;/span&gt; This kind of common sense is not something
they put in KB articles, and is reserved mostly for blogs. Sigh. Maybe someone will
read this and take it to heart.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000000&gt;Update,&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000000&gt;I pulled this information from Scott Hanselman's blog &lt;a href="http://www.hanselman.com/blog/PermaLink.aspx?guid=78159d3b-40f2-45d0-93ad-2718274cbccb"&gt;http://www.hanselman.com/blog/PermaLink.aspx?guid=78159d3b-40f2-45d0-93ad-2718274cbccb&lt;/a&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
&lt;em&gt;1) Updated &lt;/em&gt;&lt;a href="http://www.hanselman.com/blog/ct.ashx?id=78159d3b-40f2-45d0-93ad-2718274cbccb&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fsecurity%2fincident%2faspnet.mspx"&gt;&lt;em&gt;http://www.microsoft.com/security/incident/aspnet.mspx&lt;/em&gt;&lt;/a&gt;&lt;em&gt; with
new information about the reported vulnerability.&amp;nbsp; This should help clear up
some of the confusion we've seen about what is affected by this.&amp;nbsp; To be super
clear, all ASP.NET applications, on ALL OS's should follow the guidance provided.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;2)&amp;nbsp;A new HTTP Module mitigation best practice.&amp;nbsp; This is in the form
of an MSI installer that will help protect all ASP.NET applications on a Web server.&amp;nbsp;
This MSI installer will place a binary into the GAC and update the machine.config
file for ASP.NET.&amp;nbsp; You can find download information at &lt;/em&gt;&lt;a href="http://www.hanselman.com/blog/ct.ashx?id=78159d3b-40f2-45d0-93ad-2718274cbccb&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyID%3dda77b852-dfa0-4631-aaf9-8bcc6c743026%26displaylang%3den"&gt;&lt;em&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=da77b852-dfa0-4631-aaf9-8bcc6c743026&amp;amp;displaylang=en&lt;/em&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;You can also download the MSI directly at &lt;/em&gt;&lt;a href="http://www.hanselman.com/blog/ct.ashx?id=78159d3b-40f2-45d0-93ad-2718274cbccb&amp;amp;url=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f4%2f6%2f1%2f461433d5-cbac-4721-85cb-c5a514fd0049%2fVPModule.msi"&gt;&lt;em&gt;http://download.microsoft.com/download/4/6/1/461433d5-cbac-4721-85cb-c5a514fd0049/VPModule.msi&lt;/em&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;3) Detailed guidance about the HTTP Module, how the MSI works, and how to deploy
it.&amp;nbsp; You can find this KB Article at &lt;/em&gt;&lt;a href="http://www.hanselman.com/blog/ct.ashx?id=78159d3b-40f2-45d0-93ad-2718274cbccb&amp;amp;url=http%3a%2f%2fsupport.microsoft.com%2f%3fkbid%3d887289"&gt;&lt;em&gt;http://support.microsoft.com/?kbid=887289&lt;/em&gt;&lt;/a&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jeremysimmons.net/blog/aggbug.ashx?id=7aaa0cc6-f230-4d25-b146-1e1182c9792b" /&gt;</description>
      <comments>http://www.jeremysimmons.net/blog/CommentView,guid,7aaa0cc6-f230-4d25-b146-1e1182c9792b.aspx</comments>
      <category>All things Microsoft</category>
      <category>ASP.Net</category>
    </item>
  </channel>
</rss>