<?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>Kirk Jackson's Page of Words - Security</title>
    <link>http://pageofwords.com/blog/</link>
    <description>Run the ink across this page of words</description>
    <language>en-us</language>
    <copyright>Kirk Jackson</copyright>
    <lastBuildDate>Thu, 14 Jul 2011 01:52:31 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>kirkj@paradise.net.nz</managingEditor>
    <webMaster>kirkj@paradise.net.nz</webMaster>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=51bfff43-2cd1-49c9-a63a-5a6a95c8b7ce</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,51bfff43-2cd1-49c9-a63a-5a6a95c8b7ce.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,51bfff43-2cd1-49c9-a63a-5a6a95c8b7ce.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=51bfff43-2cd1-49c9-a63a-5a6a95c8b7ce</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today I'm presenting at the awesome <a href="http://www.wdcnz.com">WDCNZ</a> conference,
organised by <a href="http://bgeek.net">Owen</a> and the fine folks at <a href="http://www.xero.com">Xero</a>.
</p>
        <p>
The talk discusses some of the new browser features that will help to protect you
from XSS, man-in-the-middle and other attacks. 
</p>
        <p>
Please download, and send through any feedback or questions: <a href="http://pageofwords.com/blog/content/binary/KirkJackson-WDCNZ-GetAHeader-online.pdf">KirkJackson-WDCNZ-GetAHeader-online.pdf
(1.35 MB)</a></p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=51bfff43-2cd1-49c9-a63a-5a6a95c8b7ce" />
      </body>
      <title>WDCNZ Conference - Web Security: Get a Head(er)</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,51bfff43-2cd1-49c9-a63a-5a6a95c8b7ce.aspx</guid>
      <link>http://pageofwords.com/blog/2011/07/14/WDCNZConferenceWebSecurityGetAHeader.aspx</link>
      <pubDate>Thu, 14 Jul 2011 01:52:31 GMT</pubDate>
      <description>&lt;p&gt;
Today I'm presenting at the awesome &lt;a href="http://www.wdcnz.com"&gt;WDCNZ&lt;/a&gt; conference,
organised by &lt;a href="http://bgeek.net"&gt;Owen&lt;/a&gt; and the fine folks at &lt;a href="http://www.xero.com"&gt;Xero&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
The talk discusses some of the new browser features that will help to protect you
from XSS, man-in-the-middle and other attacks. 
&lt;/p&gt;
&lt;p&gt;
Please download, and send through any feedback or questions: &lt;a href="http://pageofwords.com/blog/content/binary/KirkJackson-WDCNZ-GetAHeader-online.pdf"&gt;KirkJackson-WDCNZ-GetAHeader-online.pdf
(1.35 MB)&lt;/a&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=51bfff43-2cd1-49c9-a63a-5a6a95c8b7ce" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,51bfff43-2cd1-49c9-a63a-5a6a95c8b7ce.aspx</comments>
      <category>Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=4c768f4f-f09b-4037-b8e7-38f05758f2b6</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,4c768f4f-f09b-4037-b8e7-38f05758f2b6.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,4c768f4f-f09b-4037-b8e7-38f05758f2b6.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=4c768f4f-f09b-4037-b8e7-38f05758f2b6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Andy and I presented at the first <a href="http://www.nzalm.co.nz">NZ
ALM conference</a> today -- a conference covering all aspects of the application lifecycle,
and use of the Visual Studio ALM suite of tools.<br /><br />
Our talk covered the Security Development Lifecycle, and gave some 'motivating examples'
of different recent hacks, exploits, or just plain quirks that demonstrated how thinking
about security at each stage of the lifecycle can help protect the security and privacy
of your users, businesses and their data.<br /><br />
Here's the presentation, including links to useful web references:<br /><br /><a href="http://pageofwords.com/blog/content/binary/2011-04-06-NZALM-KirkJackson-AndyProw.pdf">2011-04-06-NZALM-KirkJackson-AndyProw.pdf</a> (4.4mb)<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=4c768f4f-f09b-4037-b8e7-38f05758f2b6" /></body>
      <title>New Zealand ALM Conference - Thinking Securely from life to cycle</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,4c768f4f-f09b-4037-b8e7-38f05758f2b6.aspx</guid>
      <link>http://pageofwords.com/blog/2011/04/06/NewZealandALMConferenceThinkingSecurelyFromLifeToCycle.aspx</link>
      <pubDate>Wed, 06 Apr 2011 10:40:13 GMT</pubDate>
      <description>Andy and I presented at the first &lt;a href="http://www.nzalm.co.nz"&gt;NZ ALM conference&lt;/a&gt; today
-- a conference covering all aspects of the application lifecycle, and use of the
Visual Studio ALM suite of tools.&lt;br&gt;
&lt;br&gt;
Our talk covered the Security Development Lifecycle, and gave some 'motivating examples'
of different recent hacks, exploits, or just plain quirks that demonstrated how thinking
about security at each stage of the lifecycle can help protect the security and privacy
of your users, businesses and their data.&lt;br&gt;
&lt;br&gt;
Here's the presentation, including links to useful web references:&lt;br&gt;
&lt;br&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/2011-04-06-NZALM-KirkJackson-AndyProw.pdf"&gt;2011-04-06-NZALM-KirkJackson-AndyProw.pdf&lt;/a&gt; (4.4mb)&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=4c768f4f-f09b-4037-b8e7-38f05758f2b6" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,4c768f4f-f09b-4037-b8e7-38f05758f2b6.aspx</comments>
      <category>Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=71a380b8-fcef-4f01-afa5-5ea542948c18</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,71a380b8-fcef-4f01-afa5-5ea542948c18.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,71a380b8-fcef-4f01-afa5-5ea542948c18.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=71a380b8-fcef-4f01-afa5-5ea542948c18</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I presented at the <a href="http://www.sharepointconference.co.nz/nz2011/">NZ
SharePoint conference</a> yesterday. It was a pretty impressive event - kudos to Debbie
and the organising team.<br /><br />
My talk was split into two parts: what are some of the risks in running a SharePoint
site; and how can you protect against them.<br /><br />
The risks I covered were cross-site scripting and malicious file uploads - MIME sniffing
in IE, the recent MHTML attack and the ever-present risk of malicious PDF documents.
The key takeaway is that any file uploaded could be malicious, and to think of how
to mitigate those risks.<br /><br />
In the 'protection' section, I covered some SharePoint development best practices
and stepped through SharePoint specifics on how to protect against XSS and CSRF. SharePoint
has some pretty good protections built in the box, but if we're building our own web-parts
we need to be vigilant.<br /><br />
The presentation should shortly be available from the conference website, with a video
in a month or so. If you've got any questions please feel free to email me or get
in touch.<br /><p></p><a href="http://pageofwords.com/blog/content/binary/2011-03-17-NZSPC-KirkJackson.pdf">2011-03-17-NZSPC-KirkJackson.pdf
(2.9 MB)</a><br /><br />
Cheers,<br /><br />
Kirk<br /><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=71a380b8-fcef-4f01-afa5-5ea542948c18" /></body>
      <title>SharePoint Conference NZ - Is your SharePoint under threat?</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,71a380b8-fcef-4f01-afa5-5ea542948c18.aspx</guid>
      <link>http://pageofwords.com/blog/2011/03/17/SharePointConferenceNZIsYourSharePointUnderThreat.aspx</link>
      <pubDate>Thu, 17 Mar 2011 22:42:33 GMT</pubDate>
      <description>I presented at the &lt;a href="http://www.sharepointconference.co.nz/nz2011/"&gt;NZ SharePoint
conference&lt;/a&gt; yesterday. It was a pretty impressive event - kudos to Debbie and the
organising team.&lt;br&gt;
&lt;br&gt;
My talk was split into two parts: what are some of the risks in running a SharePoint
site; and how can you protect against them.&lt;br&gt;
&lt;br&gt;
The risks I covered were cross-site scripting and malicious file uploads - MIME sniffing
in IE, the recent MHTML attack and the ever-present risk of malicious PDF documents.
The key takeaway is that any file uploaded could be malicious, and to think of how
to mitigate those risks.&lt;br&gt;
&lt;br&gt;
In the 'protection' section, I covered some SharePoint development best practices
and stepped through SharePoint specifics on how to protect against XSS and CSRF. SharePoint
has some pretty good protections built in the box, but if we're building our own web-parts
we need to be vigilant.&lt;br&gt;
&lt;br&gt;
The presentation should shortly be available from the conference website, with a video
in a month or so. If you've got any questions please feel free to email me or get
in touch.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/2011-03-17-NZSPC-KirkJackson.pdf"&gt;2011-03-17-NZSPC-KirkJackson.pdf
(2.9 MB)&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
Cheers,&lt;br&gt;
&lt;br&gt;
Kirk&lt;br&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=71a380b8-fcef-4f01-afa5-5ea542948c18" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,71a380b8-fcef-4f01-afa5-5ea542948c18.aspx</comments>
      <category>Security;SharePoint</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=b0f679e5-80bd-4186-a11e-7f32648766ff</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,b0f679e5-80bd-4186-a11e-7f32648766ff.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,b0f679e5-80bd-4186-a11e-7f32648766ff.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b0f679e5-80bd-4186-a11e-7f32648766ff</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">This month I gave a similar talk to two
user groups. The <a href="http://www.owasp.org/index.php/New_Zealand">OWASP Wellington</a> (and
Auckland over video conference), and the <a href="http://www.dot.net.nz/UserGroupPages/WellingtonNET.aspx">Wellington
.NET user group</a> both invited me to speak on: "I know what you did last summer;
The latest from the world of web hacks".<br /><br />
This was a fun talk to deliver. The focus was on recent web 'hacks' that had occurred
in the past few months (I used a pretty general definition of 'hack'), but the main
discussion was around the lessons that we could learn from these issues and what we
could draw back into our own projects.<br /><br />
I think this talk had the most amount of interaction out of any of my previous talks.
There was lively discussion about what the root cause of the problem was, whether
it was even fixable at all, and we lamented the effects of 'users' :)<br /><br />
Since the .NET talk was a superset of the OWASP one (it was longer), I've included
those slides below:<br /><p></p><a href="http://pageofwords.com/blog/content/binary/2011-03-09-WellingtonNet.pdf">2011-03-09-WellingtonNet.pdf
(2.07 MB)</a><br /><br />
Thanks for coming!<br /><br />
Kirk<br /><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=b0f679e5-80bd-4186-a11e-7f32648766ff" /></body>
      <title>Recent talks - I know what you did last summer</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,b0f679e5-80bd-4186-a11e-7f32648766ff.aspx</guid>
      <link>http://pageofwords.com/blog/2011/03/09/RecentTalksIKnowWhatYouDidLastSummer.aspx</link>
      <pubDate>Wed, 09 Mar 2011 08:17:00 GMT</pubDate>
      <description>This month I gave a similar talk to two user groups. The &lt;a href="http://www.owasp.org/index.php/New_Zealand"&gt;OWASP
Wellington&lt;/a&gt; (and Auckland over video conference), and the &lt;a href="http://www.dot.net.nz/UserGroupPages/WellingtonNET.aspx"&gt;Wellington
.NET user group&lt;/a&gt; both invited me to speak on: "I know what you did last summer;
The latest from the world of web hacks".&lt;br&gt;
&lt;br&gt;
This was a fun talk to deliver. The focus was on recent web 'hacks' that had occurred
in the past few months (I used a pretty general definition of 'hack'), but the main
discussion was around the lessons that we could learn from these issues and what we
could draw back into our own projects.&lt;br&gt;
&lt;br&gt;
I think this talk had the most amount of interaction out of any of my previous talks.
There was lively discussion about what the root cause of the problem was, whether
it was even fixable at all, and we lamented the effects of 'users' :)&lt;br&gt;
&lt;br&gt;
Since the .NET talk was a superset of the OWASP one (it was longer), I've included
those slides below:&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/2011-03-09-WellingtonNet.pdf"&gt;2011-03-09-WellingtonNet.pdf
(2.07 MB)&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
Thanks for coming!&lt;br&gt;
&lt;br&gt;
Kirk&lt;br&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=b0f679e5-80bd-4186-a11e-7f32648766ff" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,b0f679e5-80bd-4186-a11e-7f32648766ff.aspx</comments>
      <category>.NET;OWASP;Security;UserGroup;Web</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=47180a1e-aa67-416a-9e0e-ab0b0584c010</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,47180a1e-aa67-416a-9e0e-ab0b0584c010.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,47180a1e-aa67-416a-9e0e-ab0b0584c010.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=47180a1e-aa67-416a-9e0e-ab0b0584c010</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Thanks to those user group members and Xero partners that came along to our talk today.
</p>
        <p>
We covered the two vulnerabilities released last week, the workarounds, and the patches
that were released this morning.
</p>
        <p>
Here are the slides: <a href="http://pageofwords.com/blog/content/binary/KirkJackson-PaddingOracle.pdf">KirkJackson-PaddingOracle.pdf
(641.14 KB)</a></p>
        <p>
All ASP.NET applications are affected. The best thing to do is <a href="http://blogs.technet.com/b/msrc/archive/2010/09/28/ms10-070-released-out-of-band-today.aspx">install
the patches released this morning</a>. 
</p>
        <p>
          <b>
            <br />
          </b>
        </p>
        <p>
          <b>Problem &amp; bulletins:</b>
        </p>
        <p>
          <a href="http://www.microsoft.com/technet/security/bulletin/ms10-070.mspx">Security
bulletin MS10-070</a>
        </p>
        <p>
          <a href="http://weblogs.asp.net/scottgu/archive/tags/Security/default.aspx"> Useful
info on ScottGu's blog<br /></a>
        </p>
        <p>
          <a href="http://forums.asp.net/1233.aspx">Forum about the security vulnerability</a>
        </p>
        <p>
          <a href="http://www.youtube.com/watch?v=mP6mKLh1FBw">Video of a site exploit</a>,
even with the workarounds applied 
</p>
        <p>
          <b> Patch: </b>
        </p>
        <p>
          <a href="http://weblogs.asp.net/scottgu/archive/2010/09/28/asp-net-security-update-now-available.aspx">Scott
Gu's writeup of the patch</a>
        </p>
        <p>
          <a href="http://musingmarc.blogspot.com/2010/09/ms10-070-post-mortem-analysis-of-patch.html">Post-mortem
of the patch - Marc Brooks</a>
        </p>
        <p>
How to <a href="http://support.microsoft.com/kb/2425938"> configure the new patched
features</a></p>
        <p>
          <b>Research:</b>
        </p>
        <p>
          <a href="http://twitter.com/julianor">Juliano Rizzo</a> and <a href="http://twitter.com/thaidn">Thai
Duong</a> and their <a href="http://netifera.com/research/">POET tool</a></p>
        <p>
          <a href="http://www.gdssecurity.com/l/b/2010/09/28/new-version-of-padbuster-available-for-download/"> Padbuster
tool</a> (including a <a href="http://www.gdssecurity.com/l/b/2010/09/14/automated-padding-oracle-attacks-with-padbuster/">great
writeup of Padding Oracles)</a></p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=47180a1e-aa67-416a-9e0e-ab0b0584c010" />
      </body>
      <title>ASP.NET Vulnerability - Slides</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,47180a1e-aa67-416a-9e0e-ab0b0584c010.aspx</guid>
      <link>http://pageofwords.com/blog/2010/09/29/ASPNETVulnerabilitySlides.aspx</link>
      <pubDate>Wed, 29 Sep 2010 08:25:39 GMT</pubDate>
      <description>&lt;p&gt;
Thanks to those user group members and Xero partners that came along to our talk today.
&lt;/p&gt;
&lt;p&gt;
We covered the two vulnerabilities released last week, the workarounds, and the patches
that were released this morning.
&lt;/p&gt;
&lt;p&gt;
Here are the slides: &lt;a href="http://pageofwords.com/blog/content/binary/KirkJackson-PaddingOracle.pdf"&gt;KirkJackson-PaddingOracle.pdf
(641.14 KB)&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
All ASP.NET applications are affected. The best thing to do is &lt;a href="http://blogs.technet.com/b/msrc/archive/2010/09/28/ms10-070-released-out-of-band-today.aspx"&gt;install
the patches released this morning&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt; 
&lt;br&gt;
&lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Problem &amp;amp; bulletins:&lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/technet/security/bulletin/ms10-070.mspx"&gt;Security
bulletin MS10-070&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/tags/Security/default.aspx"&gt; Useful
info on ScottGu's blog&lt;br&gt;
&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://forums.asp.net/1233.aspx"&gt;Forum about the security vulnerability&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.youtube.com/watch?v=mP6mKLh1FBw"&gt;Video of a site exploit&lt;/a&gt;,
even with the workarounds applied 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt; Patch: &lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2010/09/28/asp-net-security-update-now-available.aspx"&gt;Scott
Gu's writeup of the patch&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://musingmarc.blogspot.com/2010/09/ms10-070-post-mortem-analysis-of-patch.html"&gt;Post-mortem
of the patch - Marc Brooks&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
How to &lt;a href="http://support.microsoft.com/kb/2425938"&gt; configure the new patched
features&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Research:&lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/julianor"&gt;Juliano Rizzo&lt;/a&gt; and &lt;a href="http://twitter.com/thaidn"&gt;Thai
Duong&lt;/a&gt; and their &lt;a href="http://netifera.com/research/"&gt;POET tool&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.gdssecurity.com/l/b/2010/09/28/new-version-of-padbuster-available-for-download/"&gt; Padbuster
tool&lt;/a&gt; (including a &lt;a href="http://www.gdssecurity.com/l/b/2010/09/14/automated-padding-oracle-attacks-with-padbuster/"&gt;great
writeup of Padding Oracles)&lt;/a&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=47180a1e-aa67-416a-9e0e-ab0b0584c010" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,47180a1e-aa67-416a-9e0e-ab0b0584c010.aspx</comments>
      <category>.NET;Security;Xero</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=54b58629-7704-4ddb-b39a-8e12e283631e</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,54b58629-7704-4ddb-b39a-8e12e283631e.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,54b58629-7704-4ddb-b39a-8e12e283631e.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=54b58629-7704-4ddb-b39a-8e12e283631e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">If you're in Wellington this Wednesday
and you develop, maintain, manage or host ASP.NET or SharePoint websites, please do
come along to hear about the security vulnerability disclosed a week ago:<br /><br /><a href="http://www.dot.net.nz/Lists/Events%20Calendar/DispForm.aspx?ID=321">http://www.dot.net.nz/Lists/Events%20Calendar/DispForm.aspx?ID=321</a><br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=54b58629-7704-4ddb-b39a-8e12e283631e" /></body>
      <title>ASP.NET vulnerability - briefing in Wellington this Wednesday</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,54b58629-7704-4ddb-b39a-8e12e283631e.aspx</guid>
      <link>http://pageofwords.com/blog/2010/09/27/ASPNETVulnerabilityBriefingInWellingtonThisWednesday.aspx</link>
      <pubDate>Mon, 27 Sep 2010 09:08:47 GMT</pubDate>
      <description>If you're in Wellington this Wednesday and you develop, maintain, manage or host ASP.NET or SharePoint websites, please do come along to hear about the security vulnerability disclosed a week ago:&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.dot.net.nz/Lists/Events%20Calendar/DispForm.aspx?ID=321"&gt;http://www.dot.net.nz/Lists/Events%20Calendar/DispForm.aspx?ID=321&lt;/a&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=54b58629-7704-4ddb-b39a-8e12e283631e" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,54b58629-7704-4ddb-b39a-8e12e283631e.aspx</comments>
      <category>.NET;Security;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=611df22f-c847-4422-9ecb-131982b93a14</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,611df22f-c847-4422-9ecb-131982b93a14.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,611df22f-c847-4422-9ecb-131982b93a14.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=611df22f-c847-4422-9ecb-131982b93a14</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here's the presentation I delivered at the Auckland Code Camp 2010. It covers 10 things
that I found when surveying attendees websites :)
</p>
        <div class="prezi-player">
          <style type="text/css" media="screen">.prezi-player { width: 550px; } .prezi-player-links { text-align: center; }</style>
          <object id="prezi_g6qwyes_oik_" name="prezi_g6qwyes_oik_" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" height="400" width="550">
            <param name="movie" value="http://prezi.com/bin/preziloader.swf" />
            <param name="allowfullscreen" value="true" />
            <param name="allowscriptaccess" value="always" />
            <param name="bgcolor" value="#ffffff" />
            <param name="flashvars" value="prezi_id=g6qwyes_oik_&amp;lock_to_path=0&amp;color=ffffff&amp;autoplay=no&amp;autohide_ctrls=0" />
            <embed id="preziEmbed_g6qwyes_oik_" name="preziEmbed_g6qwyes_oik_" src="http://prezi.com/bin/preziloader.swf" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" bgcolor="#ffffff" flashvars="prezi_id=g6qwyes_oik_&amp;lock_to_path=0&amp;color=ffffff&amp;autoplay=no&amp;autohide_ctrls=0" height="400" width="550">
            </embed>
          </object>
          <div class="prezi-player-links">
            <p>
              <a title="Presentation to the Code Camp 2010 in Auckland, New Zealand. &#xD;&#xA;&#xD;&#xA;Presented by Kirk Jackson" href="http://prezi.com/g6qwyes_oik_/10-things-you-are-doing-wrong/">10
things YOU are doing wrong!</a> on <a href="http://prezi.com">Prezi</a></p>
          </div>
        </div>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=611df22f-c847-4422-9ecb-131982b93a14" />
      </body>
      <title>10 things YOU are doing wrong!</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,611df22f-c847-4422-9ecb-131982b93a14.aspx</guid>
      <link>http://pageofwords.com/blog/2010/09/01/10ThingsYOUAreDoingWrong.aspx</link>
      <pubDate>Wed, 01 Sep 2010 04:18:01 GMT</pubDate>
      <description>&lt;p&gt;
Here's the presentation I delivered at the Auckland Code Camp 2010. It covers 10 things
that I found when surveying attendees websites :)
&lt;/p&gt;
&lt;div class="prezi-player"&gt;&lt;style type="text/css" media="screen"&gt;.prezi-player { width: 550px; } .prezi-player-links { text-align: center; }&lt;/style&gt;
&lt;object id="prezi_g6qwyes_oik_" name="prezi_g6qwyes_oik_" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" height="400" width="550"&gt;
&lt;param name="movie" value="http://prezi.com/bin/preziloader.swf"&gt;
&lt;param name="allowfullscreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;param name="bgcolor" value="#ffffff"&gt;
&lt;param name="flashvars" value="prezi_id=g6qwyes_oik_&amp;amp;lock_to_path=0&amp;amp;color=ffffff&amp;amp;autoplay=no&amp;amp;autohide_ctrls=0"&gt;&lt;embed id="preziEmbed_g6qwyes_oik_" name="preziEmbed_g6qwyes_oik_" src="http://prezi.com/bin/preziloader.swf" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" bgcolor="#ffffff" flashvars="prezi_id=g6qwyes_oik_&amp;amp;lock_to_path=0&amp;amp;color=ffffff&amp;amp;autoplay=no&amp;amp;autohide_ctrls=0" height="400" width="550"&gt;
&lt;/object&gt;
&lt;div class="prezi-player-links"&gt;
&lt;p&gt;
&lt;a title="Presentation to the Code Camp 2010 in Auckland, New Zealand. 

Presented by Kirk Jackson" href="http://prezi.com/g6qwyes_oik_/10-things-you-are-doing-wrong/"&gt;10
things YOU are doing wrong!&lt;/a&gt; on &lt;a href="http://prezi.com"&gt;Prezi&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=611df22f-c847-4422-9ecb-131982b93a14" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,611df22f-c847-4422-9ecb-131982b93a14.aspx</comments>
      <category>CodeCamp;Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=9aad5abd-b8eb-43ea-89b0-8d9c36ca5df0</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,9aad5abd-b8eb-43ea-89b0-8d9c36ca5df0.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,9aad5abd-b8eb-43ea-89b0-8d9c36ca5df0.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9aad5abd-b8eb-43ea-89b0-8d9c36ca5df0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img src="http://pageofwords.com/blog/images/dean.jpg" alt="dean.jpg" align="right" border="0" height="334" width="200" />Used
to be a QSA (Qualified Security Assessor). There are now 8 in NZ.<br /><br />
The QSA wears the risk and signs you off for PCI compliance.<br /><br />
There are no silver bullets for PCI stuff.<br /><br />
"It's a hell of a roller-coaster ride"<br /><br />
He has seen 2.5 million credit card numbers in NZ, in the clear, in many website databases.<br /><br />
One guy Albert Gonzalez compromised 170 million credit cards across many large corporations.<br /><br /><b>PCI requirements:</b><br /><br />
"Protect stored data": 79% of orgs fail on this.<br /><br />
PAN (account data) must be unreadable when stored.<br /><br />
You can never store mag stripe data.<br /><br />
"Track and monitor all access to network resources and cardholder data"<br /><br />
"Develop and maintain secure systems and applications" - 56% of organisations fail
on this<br /><br /><b>Rant:</b><br /><br />
1. Card holder data gets everywhere<br /><br />
2. Keep test and development environments out of scope. Don't use real live data in
them.<br /><br />
3. The good: payment gateways and companies that handle cards - they do a good job.
They outsource to experts.<br /><br />
The bad: small merchants with a few transactions. Cheap website with cheap hosting.
Easily compromised.<br /><br />
The ugly: corporates. Great staff but don't make any progress.<br /><br />
If you're a merchant: find a compliant service provider.<br /><br />
4. If your a service provider: code well, make a noise about it. Make your solutions
easy to assess for compliance. Keep in touch with your acquiring bank.<br /><br />
5. You need to evolve your security to address risks. You are allowed to exceed PCI
standards.<br /><br /><br />
6. New VISA best practices: you don't need to store the PAN any more, rely on your
service provider to do it.<br /><br /><br />
7. Do it properly, or don't use credit cards. Support your developers and give them
training.<br /><br />
8. Storage of card data: Challenge it - why does the business need it? Get rid of
old cards if you don't need them.<br /><br />
9. Checkbox security - don't just check the boxes. Exceed them.<br /><br />
10. OWASP top 10 - adopted by PCI DSS.<br /><br />
Two most useful links:<br /><br /><a href="https://www.pcisecuritystandards.org/">www.pcisecuritystandards.org</a><br /><br />
www.owasp.org<br /><br /><b>Parting thoughts:</b><br /><br />
- Use OWASP as a tool<br /><br />
- Don't confuse compliance and standards with security<br /><br />
- Chop up your credit cards!<br /><br /><b>Questions:</b><br /><br />
Why did you give up being a QSA?<br /><br />
It was really stressful<br /><br />
When collecting info and passing it on to a payment gateway, do you require an audit?<br /><br />
Different QSAs treat it differently. He believes the webserver is in scope if it's
taking the card data. New version of standard coming out in October that may address
in-memory stuff.<br /><br />
Why stop using credit cards? At least you get protection, unlike if you use debit
cards?<br /><br />
Dean uses a low-value debit card.<br /><br />
How does PCI deal with it if you're using third-party libraries?<br /><br />
Payment application DSS will kick in if you're using it to resell.<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=9aad5abd-b8eb-43ea-89b0-8d9c36ca5df0" /></body>
      <title>Dean Carter: Ramblings of an ex-QSA</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,9aad5abd-b8eb-43ea-89b0-8d9c36ca5df0.aspx</guid>
      <link>http://pageofwords.com/blog/2010/07/15/DeanCarterRamblingsOfAnExQSA.aspx</link>
      <pubDate>Thu, 15 Jul 2010 04:47:41 GMT</pubDate>
      <description>&lt;img src="http://pageofwords.com/blog/images/dean.jpg" alt="dean.jpg" align="right" border="0" height="334" width="200"&gt;Used
to be a QSA (Qualified Security Assessor). There are now 8 in NZ.&lt;br&gt;
&lt;br&gt;
The QSA wears the risk and signs you off for PCI compliance.&lt;br&gt;
&lt;br&gt;
There are no silver bullets for PCI stuff.&lt;br&gt;
&lt;br&gt;
"It's a hell of a roller-coaster ride"&lt;br&gt;
&lt;br&gt;
He has seen 2.5 million credit card numbers in NZ, in the clear, in many website databases.&lt;br&gt;
&lt;br&gt;
One guy Albert Gonzalez compromised 170 million credit cards across many large corporations.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;PCI requirements:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
"Protect stored data": 79% of orgs fail on this.&lt;br&gt;
&lt;br&gt;
PAN (account data) must be unreadable when stored.&lt;br&gt;
&lt;br&gt;
You can never store mag stripe data.&lt;br&gt;
&lt;br&gt;
"Track and monitor all access to network resources and cardholder data"&lt;br&gt;
&lt;br&gt;
"Develop and maintain secure systems and applications" - 56% of organisations fail
on this&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Rant:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
1. Card holder data gets everywhere&lt;br&gt;
&lt;br&gt;
2. Keep test and development environments out of scope. Don't use real live data in
them.&lt;br&gt;
&lt;br&gt;
3. The good: payment gateways and companies that handle cards - they do a good job.
They outsource to experts.&lt;br&gt;
&lt;br&gt;
The bad: small merchants with a few transactions. Cheap website with cheap hosting.
Easily compromised.&lt;br&gt;
&lt;br&gt;
The ugly: corporates. Great staff but don't make any progress.&lt;br&gt;
&lt;br&gt;
If you're a merchant: find a compliant service provider.&lt;br&gt;
&lt;br&gt;
4. If your a service provider: code well, make a noise about it. Make your solutions
easy to assess for compliance. Keep in touch with your acquiring bank.&lt;br&gt;
&lt;br&gt;
5. You need to evolve your security to address risks. You are allowed to exceed PCI
standards.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
6. New VISA best practices: you don't need to store the PAN any more, rely on your
service provider to do it.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
7. Do it properly, or don't use credit cards. Support your developers and give them
training.&lt;br&gt;
&lt;br&gt;
8. Storage of card data: Challenge it - why does the business need it? Get rid of
old cards if you don't need them.&lt;br&gt;
&lt;br&gt;
9. Checkbox security - don't just check the boxes. Exceed them.&lt;br&gt;
&lt;br&gt;
10. OWASP top 10 - adopted by PCI DSS.&lt;br&gt;
&lt;br&gt;
Two most useful links:&lt;br&gt;
&lt;br&gt;
&lt;a href="https://www.pcisecuritystandards.org/"&gt;www.pcisecuritystandards.org&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
www.owasp.org&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Parting thoughts:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
- Use OWASP as a tool&lt;br&gt;
&lt;br&gt;
- Don't confuse compliance and standards with security&lt;br&gt;
&lt;br&gt;
- Chop up your credit cards!&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Questions:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Why did you give up being a QSA?&lt;br&gt;
&lt;br&gt;
It was really stressful&lt;br&gt;
&lt;br&gt;
When collecting info and passing it on to a payment gateway, do you require an audit?&lt;br&gt;
&lt;br&gt;
Different QSAs treat it differently. He believes the webserver is in scope if it's
taking the card data. New version of standard coming out in October that may address
in-memory stuff.&lt;br&gt;
&lt;br&gt;
Why stop using credit cards? At least you get protection, unlike if you use debit
cards?&lt;br&gt;
&lt;br&gt;
Dean uses a low-value debit card.&lt;br&gt;
&lt;br&gt;
How does PCI deal with it if you're using third-party libraries?&lt;br&gt;
&lt;br&gt;
Payment application DSS will kick in if you're using it to resell.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=9aad5abd-b8eb-43ea-89b0-8d9c36ca5df0" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,9aad5abd-b8eb-43ea-89b0-8d9c36ca5df0.aspx</comments>
      <category>OWASP;Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=a25db50d-cf87-4743-a32e-277d70acebfb</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,a25db50d-cf87-4743-a32e-277d70acebfb.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,a25db50d-cf87-4743-a32e-277d70acebfb.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a25db50d-cf87-4743-a32e-277d70acebfb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img src="http://pageofwords.com/blog/images/hosting.jpg" alt="hosting.jpg" align="right" border="0" height="286" width="200" />Hosting
and Web Apps<br />
The Obscurity of Security<br /><br />
Quintin from SiteHost and Mike from Web Drive cover horror stories they've uncovered
in website code when they've been rung up to fix something.<br /><br /><br />
Security used to be the domain of systems admins and hosters, but developers have
added more fancy features.<br /><br />
Website owners and developer blame their hosters when their sites are defaced.<br /><br /><b>What if security isn't part of the spec?</b><br /><br />
Make it part of the spec.<br /><br />
(Shift jobs if management won't let you make it part of the spec.)<br /><br />
Security starts early: Planning and design phase<br /><br />
- Research, talk to security people<br />
- Get your team some security experience<br />
- Reduce the attack surface<br />
- Keep it simple: Don't build a CMS for a 5 page site<br />
- Don't have an admin area, or use defense in depth to protect it<br /><br /><b>Not all apps are equal:</b><br /><br />
- Sometimes buying is better than building<br />
- Everything has security holes<br />
- Pick something good<br />
 - How does vendor approach security?<br />
 - Check the apps security history:<br />
   - If there are no holes, beware. If there are silly problems, beware.<br /><br /><b>RTFM:</b><br /><br />
- Read the OWASP top 10<br />
- Read the OWASP books<br />
- Read the install documentation and follow the "After installation" docs.<br />
- e.g. Think about what you do when you unserialise stuff; don't trust untrusted user
data<br /><br /><b>Development:</b><br /><br />
- Attack surface reduction<br />
- Validate all your input<br />
- Use source control, and know how it works.<br />
- Watch out for rolling .svn, .git, .cvs directories: might show directory lists,
source code, usernames<br />
- svn checkout is an invalid installation method<br />
- Look at all the files that are there! Especially free / open source apps you download<br /><br /><b>Data management:</b><br /><br />
- If you don't need it, don't store it<br />
- If you need to keep it, how do you need to access it?<br />
- Hash (with a salt), don't encrypt<br />
- Keep production and development seperate<br />
- Keep tabs on your data - size, growth rates, is data used by the code? Get rid of
it.<br /><br /><b>Password strategy:</b><br /><br />
- Don't reuse credentials<br />
- Weak usernames and passwords for db - common to see dbname = username = password<br />
- Watch out for old staff members and old passwords<br /><br /><b>Filesystem security:</b><br /><br />
- Watch out for apps that use /tmp and friends, or require special directory permissions<br />
- Learn how to chmod correctly. x is good enough for directory traversal.<br />
- Watch out for log files in web root<br />
- Beware test files eg phpinfo<br />
- Don't leave old crap on your filesystem: Session files, template caches, zip files<br /><br /><b>Deployment:</b><br /><br />
- Automate as much as possible<br />
- Don't blindly follow installation instructions<br />
  - Read them when you select the software, and understand what it's doing<br />
- Don't use hosting control panels if you don't need them - they have high level access
to the underlying system, and greatly increase your attack surface<br />
- Use SSL for the content not just for the login pages<br />
- Keep your websites separate - different trust level = different credentials<br /><br /><b>Backups:</b><br /><br />
- Keep your own backups - don't trust the providers ones. They protect from a catastrophic
failure, and you could lose 12-24 hours of data<br />
- Test them before you need to use them<br /><br /><b>Clouds:</b><br /><br />
- Don't ever use remote includes - including some third party code in your app!<br />
- Minimise remote resource usage:<br />
  - How does your site react if the remote resource is gone?<br />
  - Take your own copy of AJAX libraries<br />
- Do you need third party analytics for everything?<br />
- Outsourcing data storage: What data are you uploading? Where is it hosted? Is it
safe? Who has access to it? How are backups stored, and how long are they retained?<br /><br /><b>Software lifecycle management:</b><br /><br />
- Have a process for decommissioning, make sure you delete data and files that aren't
used<br />
- Make sure software is up to date<br />
- Who monitors upstream releases? How quickly do you make patches? Who makes the call?<br /><br /><b>Monitoring:</b><br /><br />
- Monitor changes to your website content and uptime<br />
- Check external access. Has your whitelist stopped working?<br />
- DNS: Remember that DNS is an external dependancy. Has your domain been hijacked?<br /><br /><b>Politics:</b><br /><br />
- Make security a part of job description - managers and developers need to make security
a priority and make it part of KPIs<br />
- Get buy-in from non-technical staff<br /><br /><b>Talk to your hosting providers:</b><br /><br />
Talk to their security guys well in advance. Make sure your specific requirements
are getting through to the technician who is doing the work (don't trust the salesperson).<br /><br />
Remember: It's your job to make sure it's working<br /><br /><b>Questions:</b><br /><br />
Including KPIs is a good thing, but you need to give developers the time to learn.<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=a25db50d-cf87-4743-a32e-277d70acebfb" /></body>
      <title>Quintin Russ / Mike Jager - Hosting and Security</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,a25db50d-cf87-4743-a32e-277d70acebfb.aspx</guid>
      <link>http://pageofwords.com/blog/2010/07/15/QuintinRussMikeJagerHostingAndSecurity.aspx</link>
      <pubDate>Thu, 15 Jul 2010 04:24:29 GMT</pubDate>
      <description>&lt;img src="http://pageofwords.com/blog/images/hosting.jpg" alt="hosting.jpg" align="right" border="0" height="286" width="200"&gt;Hosting
and Web Apps&lt;br&gt;
The Obscurity of Security&lt;br&gt;
&lt;br&gt;
Quintin from SiteHost and Mike from Web Drive cover horror stories they've uncovered
in website code when they've been rung up to fix something.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Security used to be the domain of systems admins and hosters, but developers have
added more fancy features.&lt;br&gt;
&lt;br&gt;
Website owners and developer blame their hosters when their sites are defaced.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;What if security isn't part of the spec?&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Make it part of the spec.&lt;br&gt;
&lt;br&gt;
(Shift jobs if management won't let you make it part of the spec.)&lt;br&gt;
&lt;br&gt;
Security starts early: Planning and design phase&lt;br&gt;
&lt;br&gt;
- Research, talk to security people&lt;br&gt;
- Get your team some security experience&lt;br&gt;
- Reduce the attack surface&lt;br&gt;
- Keep it simple: Don't build a CMS for a 5 page site&lt;br&gt;
- Don't have an admin area, or use defense in depth to protect it&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Not all apps are equal:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
- Sometimes buying is better than building&lt;br&gt;
- Everything has security holes&lt;br&gt;
- Pick something good&lt;br&gt;
&amp;nbsp;- How does vendor approach security?&lt;br&gt;
&amp;nbsp;- Check the apps security history:&lt;br&gt;
&amp;nbsp;&amp;nbsp; - If there are no holes, beware. If there are silly problems, beware.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;RTFM:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
- Read the OWASP top 10&lt;br&gt;
- Read the OWASP books&lt;br&gt;
- Read the install documentation and follow the "After installation" docs.&lt;br&gt;
- e.g. Think about what you do when you unserialise stuff; don't trust untrusted user
data&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Development:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
- Attack surface reduction&lt;br&gt;
- Validate all your input&lt;br&gt;
- Use source control, and know how it works.&lt;br&gt;
- Watch out for rolling .svn, .git, .cvs directories: might show directory lists,
source code, usernames&lt;br&gt;
- svn checkout is an invalid installation method&lt;br&gt;
- Look at all the files that are there! Especially free / open source apps you download&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Data management:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
- If you don't need it, don't store it&lt;br&gt;
- If you need to keep it, how do you need to access it?&lt;br&gt;
- Hash (with a salt), don't encrypt&lt;br&gt;
- Keep production and development seperate&lt;br&gt;
- Keep tabs on your data - size, growth rates, is data used by the code? Get rid of
it.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Password strategy:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
- Don't reuse credentials&lt;br&gt;
- Weak usernames and passwords for db - common to see dbname = username = password&lt;br&gt;
- Watch out for old staff members and old passwords&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Filesystem security:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
- Watch out for apps that use /tmp and friends, or require special directory permissions&lt;br&gt;
- Learn how to chmod correctly. x is good enough for directory traversal.&lt;br&gt;
- Watch out for log files in web root&lt;br&gt;
- Beware test files eg phpinfo&lt;br&gt;
- Don't leave old crap on your filesystem: Session files, template caches, zip files&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Deployment:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
- Automate as much as possible&lt;br&gt;
- Don't blindly follow installation instructions&lt;br&gt;
&amp;nbsp; - Read them when you select the software, and understand what it's doing&lt;br&gt;
- Don't use hosting control panels if you don't need them - they have high level access
to the underlying system, and greatly increase your attack surface&lt;br&gt;
- Use SSL for the content not just for the login pages&lt;br&gt;
- Keep your websites separate - different trust level = different credentials&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Backups:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
- Keep your own backups - don't trust the providers ones. They protect from a catastrophic
failure, and you could lose 12-24 hours of data&lt;br&gt;
- Test them before you need to use them&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Clouds:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
- Don't ever use remote includes - including some third party code in your app!&lt;br&gt;
- Minimise remote resource usage:&lt;br&gt;
&amp;nbsp; - How does your site react if the remote resource is gone?&lt;br&gt;
&amp;nbsp; - Take your own copy of AJAX libraries&lt;br&gt;
- Do you need third party analytics for everything?&lt;br&gt;
- Outsourcing data storage: What data are you uploading? Where is it hosted? Is it
safe? Who has access to it? How are backups stored, and how long are they retained?&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Software lifecycle management:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
- Have a process for decommissioning, make sure you delete data and files that aren't
used&lt;br&gt;
- Make sure software is up to date&lt;br&gt;
- Who monitors upstream releases? How quickly do you make patches? Who makes the call?&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Monitoring:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
- Monitor changes to your website content and uptime&lt;br&gt;
- Check external access. Has your whitelist stopped working?&lt;br&gt;
- DNS: Remember that DNS is an external dependancy. Has your domain been hijacked?&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Politics:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
- Make security a part of job description - managers and developers need to make security
a priority and make it part of KPIs&lt;br&gt;
- Get buy-in from non-technical staff&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Talk to your hosting providers:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Talk to their security guys well in advance. Make sure your specific requirements
are getting through to the technician who is doing the work (don't trust the salesperson).&lt;br&gt;
&lt;br&gt;
Remember: It's your job to make sure it's working&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Questions:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Including KPIs is a good thing, but you need to give developers the time to learn.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=a25db50d-cf87-4743-a32e-277d70acebfb" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,a25db50d-cf87-4743-a32e-277d70acebfb.aspx</comments>
      <category>OWASP;Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=74cac478-54fc-455b-b3b4-f73fe88a7816</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,74cac478-54fc-455b-b3b4-f73fe88a7816.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,74cac478-54fc-455b-b3b4-f73fe88a7816.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=74cac478-54fc-455b-b3b4-f73fe88a7816</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img src="http://pageofwords.com/blog/content/binary/tales.jpg" align="right" border="0" />
        <p>
Thanks to everyone who came along to our talk at <a href="http://www.owasp.org/index.php/OWASP_New_Zealand_Day_2010">OWASP
NZ Day 2010</a> today. 
<br /></p>
        <p>
Also, a big thanks to the <a href="http://www.dot.net.nz">Wellington .NET user group</a> crowd
that came last night to listen to our practice run -- you'll be pleased to know that
we dropped the discussion of hash extension attacks :)
</p>
Here are the slides for your downloading pleasure: <a href="http://pageofwords.com/blog/content/binary/tales-of-the-crypto.ppt">tales-of-the-crypto.ppt
(3.79 MB)</a><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=74cac478-54fc-455b-b3b4-f73fe88a7816" /></body>
      <title>Graeme Neilson / Kirk Jackson: Tales from the Crypt0</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,74cac478-54fc-455b-b3b4-f73fe88a7816.aspx</guid>
      <link>http://pageofwords.com/blog/2010/07/15/GraemeNeilsonKirkJacksonTalesFromTheCrypt0.aspx</link>
      <pubDate>Thu, 15 Jul 2010 03:25:18 GMT</pubDate>
      <description>&lt;img src="http://pageofwords.com/blog/content/binary/tales.jpg" align="right" border="0"&gt; 
&lt;p&gt;
Thanks to everyone who came along to our talk at &lt;a href="http://www.owasp.org/index.php/OWASP_New_Zealand_Day_2010"&gt;OWASP
NZ Day 2010&lt;/a&gt; today. 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Also, a big thanks to the &lt;a href="http://www.dot.net.nz"&gt;Wellington .NET user group&lt;/a&gt; crowd
that came last night to listen to our practice run -- you'll be pleased to know that
we dropped the discussion of hash extension attacks :)
&lt;/p&gt;
Here are the slides for your downloading pleasure: &lt;a href="http://pageofwords.com/blog/content/binary/tales-of-the-crypto.ppt"&gt;tales-of-the-crypto.ppt
(3.79 MB)&lt;/a&gt;&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=74cac478-54fc-455b-b3b4-f73fe88a7816" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,74cac478-54fc-455b-b3b4-f73fe88a7816.aspx</comments>
      <category>OWASP;Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=cefb12f7-1c1c-456d-a535-fdaea7c8e73d</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,cefb12f7-1c1c-456d-a535-fdaea7c8e73d.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,cefb12f7-1c1c-456d-a535-fdaea7c8e73d.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=cefb12f7-1c1c-456d-a535-fdaea7c8e73d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img src="http://pageofwords.com/blog/content/binary/metlstorm.jpg" align="right" border="0" /> Adam
is one of the organisers of <a href="https://kiwicon.org/">Kiwicon</a>, and has presented
on this topic in Singapore.<br /><br />
Using tools to capture / probe network traffic.<br /><br />
If you compare to app/data recon tools like Maltego, network recon tools aren't as
start of the art.<br /><br />
But... if you own the networks under this new fangled cloud stuff, then you own the
whole environment.<br /><br />
It's hard to map out, search and investigate &gt;= Class A<br /><br />
At the moment, only big countries can do that sort of investigation. Apparently countries
are gearing up for 'Cyber Wars'.<br /><br />
But, individuals and corporates can get involved in the same activities of cyber-war
or cyber-terrorism.<br /><br />
Scanning, pinging and trying exploits doesn't scale well - you have to do a lot of
work and get lots of false hits.<br /><br />
You might get owned randomly - it's cheap to own more targets, and then figure out
what to do with it later.<br /><br /><b>Targeting:</b><br /><br />
It's hard to target large numbers of IP addresses. The current tools can't scale to
those kinds of numbers (and the pay services will get really expensive).<br /><br /><b><a href="http://lowscuttlingchillicrab.com">lowscuttlingchillicrab.com</a></b><br /><br />
So he built a geo-targeted network recon data acquisition system with a web interface,
and scanned all of NZ and Singapore for conferences.<br /><br />
An interface to search over data.<br /><br />
"This is a highly secure router, stay away" - the open telnet port tells us so.<br /><br />
Cool things it does:<br /><ul><li>
Searches over certificates</li><li>
Screen captures remote desktop screens</li><li>
Good for targeting: finding particular applications / devices / protocols</li><li>
Good at finding other assets owned by a company outside of their own netblock</li><li>
Helps us understand how many vulnerable things are sitting out there</li></ul><b>The internals of the tool:</b><br /><br />
Version 1 was just to see how plausible it was to scan large chunks of the internet.
Used lots of glued together tools like nmap etc.<br /><br />
Version 2 is now a simple python script that has been optimised for acquiring the
data by scanning a whole country block over certain ports.<br /><br />
A few billion rows of data - use MongoDB to store data. Erlang, RabbitMQ, Python,
Celery MQ, Python / Django frontend, GridFS distributed filestore.<br /><br /><b>Target selection:</b><br /><br />
How do you define what a country is? Is it domain names ending in .nz? Netblocks announced
at peering exchanges? Address registry allocations? GeoIP?<br /><br />
He chose GeoIP as it simplified things - but misses out on .nz stuff hosted overseas.<br /><br /><b>Acquiring data:</b><br /><br />
Custom-tuned protocols to limit rates, fire up application to capture details for
different protocols.<br /><br />
About 1.4B rows per complete scan of NZ and Singapore.<br /><br />
Need to optimise for search / retrieval as that's the primary use once the data is
acquired.<br /><br /><b>Data mining:</b><br /><br />
Look for old boxes, boxes with self-signed certs, certain switches, domains etc.<br /><br />
Singapore: 377k boxes that talk HTTP - more than the number of live systems. 14k cisco
boxes. 12k open RDP (one with background of Commonwealth Bank of Australia :))<br /><br /><b>IDS Avoidance:</b><br /><br />
He's not actually carrying out any intrusions. Only collecting banners, and complying
with what they say.<br /><br />
IDSs don't necessarily detect them - only 7 complaints to ISP in NZ, and one funny
one in Singapore.<br /><br />
People <i>are </i>watching - DNS PTR backscatter gives an idea of people watching
and resolving domain names for IP address.<br /><br />
Portscans aren't very interesting these days. People notice, but don't do anything.<br /><br /><b>But not good for:</b><br /><br />
If you notice mis-configured systems, it's hard to do anything about it.<br /><br />
Giving it as public / bad guy access would be difficult and cause problems. 
<br /><br /><b>What about Shodan?</b><br /><br />
Scan whole world for 4 ports (21, 22, 23, 80), but not as many hosts or depth of coverage
in NZ.<br /><br />
Sells commercial access to exported data.<br /><br /><b>What does it mean?</b><br /><br />
A search engine over this data makes it very powerful.<br /><br />
It's not that hard to do this sort of thing. It's probably already being done by military
or crime industries. Cheap compared to a drug submarine :)<br /><br /><br /><b>Questions:</b><br /><br />
What did the abuse mails say?<br /><br />
One from a Uni, two or three from an ISP and they noticed scanning of the SIP voice
customers. A few of ZoneAlarm type people noticing.<br /><br />
Scanning boxes: Where were they hosted? Bandwidth out?<br /><br />
Domestically peered, gigabit to APE. It's not really bandwidth constrained, it's constrained
by politeness. Turned off state tracking for outbound connections. Could probably
do the whole country in 2 hours if you cranked it up, but would cause problems for
people.<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=cefb12f7-1c1c-456d-a535-fdaea7c8e73d" /></body>
      <title>Metlstorm: Low Scuttling Chillicrab</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,cefb12f7-1c1c-456d-a535-fdaea7c8e73d.aspx</guid>
      <link>http://pageofwords.com/blog/2010/07/15/MetlstormLowScuttlingChillicrab.aspx</link>
      <pubDate>Thu, 15 Jul 2010 01:48:11 GMT</pubDate>
      <description>&lt;img src="http://pageofwords.com/blog/content/binary/metlstorm.jpg" align="right" border="0"&gt; Adam
is one of the organisers of &lt;a href="https://kiwicon.org/"&gt;Kiwicon&lt;/a&gt;, and has presented
on this topic in Singapore.&lt;br&gt;
&lt;br&gt;
Using tools to capture / probe network traffic.&lt;br&gt;
&lt;br&gt;
If you compare to app/data recon tools like Maltego, network recon tools aren't as
start of the art.&lt;br&gt;
&lt;br&gt;
But... if you own the networks under this new fangled cloud stuff, then you own the
whole environment.&lt;br&gt;
&lt;br&gt;
It's hard to map out, search and investigate &amp;gt;= Class A&lt;br&gt;
&lt;br&gt;
At the moment, only big countries can do that sort of investigation. Apparently countries
are gearing up for 'Cyber Wars'.&lt;br&gt;
&lt;br&gt;
But, individuals and corporates can get involved in the same activities of cyber-war
or cyber-terrorism.&lt;br&gt;
&lt;br&gt;
Scanning, pinging and trying exploits doesn't scale well - you have to do a lot of
work and get lots of false hits.&lt;br&gt;
&lt;br&gt;
You might get owned randomly - it's cheap to own more targets, and then figure out
what to do with it later.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Targeting:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
It's hard to target large numbers of IP addresses. The current tools can't scale to
those kinds of numbers (and the pay services will get really expensive).&lt;br&gt;
&lt;br&gt;
&lt;b&gt;&lt;a href="http://lowscuttlingchillicrab.com"&gt;lowscuttlingchillicrab.com&lt;/a&gt;&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
So he built a geo-targeted network recon data acquisition system with a web interface,
and scanned all of NZ and Singapore for conferences.&lt;br&gt;
&lt;br&gt;
An interface to search over data.&lt;br&gt;
&lt;br&gt;
"This is a highly secure router, stay away" - the open telnet port tells us so.&lt;br&gt;
&lt;br&gt;
Cool things it does:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Searches over certificates&lt;/li&gt;
&lt;li&gt;
Screen captures remote desktop screens&lt;/li&gt;
&lt;li&gt;
Good for targeting: finding particular applications / devices / protocols&lt;/li&gt;
&lt;li&gt;
Good at finding other assets owned by a company outside of their own netblock&lt;/li&gt;
&lt;li&gt;
Helps us understand how many vulnerable things are sitting out there&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;The internals of the tool:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Version 1 was just to see how plausible it was to scan large chunks of the internet.
Used lots of glued together tools like nmap etc.&lt;br&gt;
&lt;br&gt;
Version 2 is now a simple python script that has been optimised for acquiring the
data by scanning a whole country block over certain ports.&lt;br&gt;
&lt;br&gt;
A few billion rows of data - use MongoDB to store data. Erlang, RabbitMQ, Python,
Celery MQ, Python / Django frontend, GridFS distributed filestore.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Target selection:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
How do you define what a country is? Is it domain names ending in .nz? Netblocks announced
at peering exchanges? Address registry allocations? GeoIP?&lt;br&gt;
&lt;br&gt;
He chose GeoIP as it simplified things - but misses out on .nz stuff hosted overseas.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Acquiring data:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Custom-tuned protocols to limit rates, fire up application to capture details for
different protocols.&lt;br&gt;
&lt;br&gt;
About 1.4B rows per complete scan of NZ and Singapore.&lt;br&gt;
&lt;br&gt;
Need to optimise for search / retrieval as that's the primary use once the data is
acquired.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Data mining:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Look for old boxes, boxes with self-signed certs, certain switches, domains etc.&lt;br&gt;
&lt;br&gt;
Singapore: 377k boxes that talk HTTP - more than the number of live systems. 14k cisco
boxes. 12k open RDP (one with background of Commonwealth Bank of Australia :))&lt;br&gt;
&lt;br&gt;
&lt;b&gt;IDS Avoidance:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
He's not actually carrying out any intrusions. Only collecting banners, and complying
with what they say.&lt;br&gt;
&lt;br&gt;
IDSs don't necessarily detect them - only 7 complaints to ISP in NZ, and one funny
one in Singapore.&lt;br&gt;
&lt;br&gt;
People &lt;i&gt;are &lt;/i&gt;watching - DNS PTR backscatter gives an idea of people watching
and resolving domain names for IP address.&lt;br&gt;
&lt;br&gt;
Portscans aren't very interesting these days. People notice, but don't do anything.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;But not good for:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
If you notice mis-configured systems, it's hard to do anything about it.&lt;br&gt;
&lt;br&gt;
Giving it as public / bad guy access would be difficult and cause problems. 
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;What about Shodan?&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Scan whole world for 4 ports (21, 22, 23, 80), but not as many hosts or depth of coverage
in NZ.&lt;br&gt;
&lt;br&gt;
Sells commercial access to exported data.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;What does it mean?&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
A search engine over this data makes it very powerful.&lt;br&gt;
&lt;br&gt;
It's not that hard to do this sort of thing. It's probably already being done by military
or crime industries. Cheap compared to a drug submarine :)&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Questions:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
What did the abuse mails say?&lt;br&gt;
&lt;br&gt;
One from a Uni, two or three from an ISP and they noticed scanning of the SIP voice
customers. A few of ZoneAlarm type people noticing.&lt;br&gt;
&lt;br&gt;
Scanning boxes: Where were they hosted? Bandwidth out?&lt;br&gt;
&lt;br&gt;
Domestically peered, gigabit to APE. It's not really bandwidth constrained, it's constrained
by politeness. Turned off state tracking for outbound connections. Could probably
do the whole country in 2 hours if you cranked it up, but would cause problems for
people.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=cefb12f7-1c1c-456d-a535-fdaea7c8e73d" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,cefb12f7-1c1c-456d-a535-fdaea7c8e73d.aspx</comments>
      <category>OWASP;Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=0428b4c3-fb5a-4368-8643-2d069a95aab2</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,0428b4c3-fb5a-4368-8643-2d069a95aab2.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,0428b4c3-fb5a-4368-8643-2d069a95aab2.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=0428b4c3-fb5a-4368-8643-2d069a95aab2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img src="http://pageofwords.com/blog/images/paul.jpg" alt="paul.jpg" align="right" border="0" height="370" width="200" />Paul
Craig works at security-assessment.com as a forensic investigator.<br /><br />
Forensic investigation: <i>Fact</i>-based investigation - must be reproducible and
not based on anything subjective.<br /><br />
If you're going to get hacked, it will start at your web app. Firewalls generally
stop all other traffic.<br /><br />
Treat all results as possible legal evidence - could be used for murder etc cases.
Evidence could be used to allow police to arrest a suspect.<br /><br />
Most computer crimes in NZ will be tried under property law with a judge and jury.<br /><br />
All evidence may need to be provided to defendant to cast doubt on the evidence. How
was it collected or analysed?<br /><br />
Common things customers say:<br /><br />
- Assumptions<br />
- They only compromised one server - assume it has happened more than once<br />
- We already dealt with it - probably destroyed all forensic evidence (could come
back to bite in the future)<br />
- It's too hard / not my problem<br /><br /><b>What to do when there's an incident:</b><br /><br />
How you act makes all the difference. Smooth engagements and do things as fast as
possible.<br /><br />
Need a single point of contact for all security incidents within an organisation.<br /><br />
Appoint an incident response team - includng someone with internal clout, legal support.<br /><br />
Find a forensics supplier in advance. Don't leave it till when there's an incident.<br /><br />
It's a specialised industry, and you shouldn't do it yourself.<br /><br /><b>Media:</b><br /><br />
Media love a hacking story. This makes things stressful.<br /><br />
You need a bottom draw letter pre-written that you can give to the media. Get it signed
by the CEO now.<br /><br /><b>Technical incident response:</b><br /><br />
Treat with urgency, gather incident team together in a secure location.<br /><br />
Get incident responder into the system as soon as possible to get current connections,
arp caches etc.<br /><br />
- Disable scheduled patches, updates, restarts<br />
- Unplug from internet / firewall it<br />
- Leave the server powered on<br />
- Put a big sign "Do not touch"<br /><br />
Within a day or less if possible.<br /><br /><b>Police reports:</b><br /><br />
If you have evidence that a crime has been committed, or something could be committed
(e.g. fraud), file an incident report with police. As much evidence as possible.<br /><br /><b>Will you catch them?</b><br /><br />
If NZ / AU - likely.<br /><br />
If UN / NATO, possible but involved IPTF task force.<br /><br />
Other country: very slim chance of catching them.<br /><br /><b>When don't you have to file a report:</b><br /><br />
No loss of finances, no increase in fraud risk, no chance of repurcussions / fines.<br /><br /><br /><b>How to do forensics:</b><br /><br />
Paul then talked about how security-assessment.com do forensics testing. Take-away:
it's hard, and in order to provide evidence in court you won't actually be able to
do it yourself.<br /><br /><b>Examples:</b><br /><br />
Paul gave examples of when they'd be engaged with customers. Problems encountered:<br /><br />
- They knew they had been hacked, but hadn't told each other<br />
- Meeting in insecure places<br />
- Taking too long to figure out what to do<br />
- Companies that don't know how to respond<br />
- Assuming evidence has been destroyed already<br /><br />
Without senior executive support, nothing will happen. Forensic and technical response
isn't a technical problem: it is an entire business problem.<br /><br /><b>Take-home:</b><br /><br />
Sooner or later, you'll get hacked. When it happens, take it seriously.<br /><br />
Prepare for that incident straight away. Figure out what you'd do?<br /><br />
Stay cool when it happens, follow the game plan.<br /><br />
Never assume anything!<br /><br /><b>Questions:</b><br /><br />
How do you deal with situations where the hacked website needs to be back up in 10
minutes? So you don't have time to do forensics?<br /><br />
- Bring up a DR server if you have a safe backup.<br />
- If it's compromised, you have to take it off immediately if someone is on that server
at that time<br /><br />
How do you deal with virtualisation? When you don't have physical access to a machine?<br /><br />
- Can get all active memory and disk onto a disk<br />
- Can take the entire VM snapshot and rebuild into a real computer again<br /><br />
What about if it's a cloud provider?<br /><br />
- Probably have no access to get an image. Comes down to whether we can get that access.<br /><br />
Does a live image impact the integrity of the evidence?<br /><br />
- Hash the evidence as soon as it is taken, so we can prove the image is unaltered.<br /><br />
If hacker uses anonymity services like tor / proxies?<br /><br />
- Often there's one request where they connect back directly.<br />
- Often there's still some fragments of evidence remaining.<br />
- Might be able to find out what they did, but not necessarily who did it.<br />
  - "Your credit cards have not been touched"<br /><br /><br /><br /><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=0428b4c3-fb5a-4368-8643-2d069a95aab2" /></body>
      <title>Paul Craig: What to do when you get pwned?</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,0428b4c3-fb5a-4368-8643-2d069a95aab2.aspx</guid>
      <link>http://pageofwords.com/blog/2010/07/15/PaulCraigWhatToDoWhenYouGetPwned.aspx</link>
      <pubDate>Thu, 15 Jul 2010 00:00:10 GMT</pubDate>
      <description>&lt;img src="http://pageofwords.com/blog/images/paul.jpg" alt="paul.jpg" align="right" border="0" height="370" width="200"&gt;Paul
Craig works at security-assessment.com as a forensic investigator.&lt;br&gt;
&lt;br&gt;
Forensic investigation: &lt;i&gt;Fact&lt;/i&gt;-based investigation - must be reproducible and
not based on anything subjective.&lt;br&gt;
&lt;br&gt;
If you're going to get hacked, it will start at your web app. Firewalls generally
stop all other traffic.&lt;br&gt;
&lt;br&gt;
Treat all results as possible legal evidence - could be used for murder etc cases.
Evidence could be used to allow police to arrest a suspect.&lt;br&gt;
&lt;br&gt;
Most computer crimes in NZ will be tried under property law with a judge and jury.&lt;br&gt;
&lt;br&gt;
All evidence may need to be provided to defendant to cast doubt on the evidence. How
was it collected or analysed?&lt;br&gt;
&lt;br&gt;
Common things customers say:&lt;br&gt;
&lt;br&gt;
- Assumptions&lt;br&gt;
- They only compromised one server - assume it has happened more than once&lt;br&gt;
- We already dealt with it - probably destroyed all forensic evidence (could come
back to bite in the future)&lt;br&gt;
- It's too hard / not my problem&lt;br&gt;
&lt;br&gt;
&lt;b&gt;What to do when there's an incident:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
How you act makes all the difference. Smooth engagements and do things as fast as
possible.&lt;br&gt;
&lt;br&gt;
Need a single point of contact for all security incidents within an organisation.&lt;br&gt;
&lt;br&gt;
Appoint an incident response team - includng someone with internal clout, legal support.&lt;br&gt;
&lt;br&gt;
Find a forensics supplier in advance. Don't leave it till when there's an incident.&lt;br&gt;
&lt;br&gt;
It's a specialised industry, and you shouldn't do it yourself.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Media:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Media love a hacking story. This makes things stressful.&lt;br&gt;
&lt;br&gt;
You need a bottom draw letter pre-written that you can give to the media. Get it signed
by the CEO now.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Technical incident response:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Treat with urgency, gather incident team together in a secure location.&lt;br&gt;
&lt;br&gt;
Get incident responder into the system as soon as possible to get current connections,
arp caches etc.&lt;br&gt;
&lt;br&gt;
- Disable scheduled patches, updates, restarts&lt;br&gt;
- Unplug from internet / firewall it&lt;br&gt;
- Leave the server powered on&lt;br&gt;
- Put a big sign "Do not touch"&lt;br&gt;
&lt;br&gt;
Within a day or less if possible.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Police reports:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
If you have evidence that a crime has been committed, or something could be committed
(e.g. fraud), file an incident report with police. As much evidence as possible.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Will you catch them?&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
If NZ / AU - likely.&lt;br&gt;
&lt;br&gt;
If UN / NATO, possible but involved IPTF task force.&lt;br&gt;
&lt;br&gt;
Other country: very slim chance of catching them.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;When don't you have to file a report:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
No loss of finances, no increase in fraud risk, no chance of repurcussions / fines.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;How to do forensics:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Paul then talked about how security-assessment.com do forensics testing. Take-away:
it's hard, and in order to provide evidence in court you won't actually be able to
do it yourself.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Examples:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Paul gave examples of when they'd be engaged with customers. Problems encountered:&lt;br&gt;
&lt;br&gt;
- They knew they had been hacked, but hadn't told each other&lt;br&gt;
- Meeting in insecure places&lt;br&gt;
- Taking too long to figure out what to do&lt;br&gt;
- Companies that don't know how to respond&lt;br&gt;
- Assuming evidence has been destroyed already&lt;br&gt;
&lt;br&gt;
Without senior executive support, nothing will happen. Forensic and technical response
isn't a technical problem: it is an entire business problem.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Take-home:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Sooner or later, you'll get hacked. When it happens, take it seriously.&lt;br&gt;
&lt;br&gt;
Prepare for that incident straight away. Figure out what you'd do?&lt;br&gt;
&lt;br&gt;
Stay cool when it happens, follow the game plan.&lt;br&gt;
&lt;br&gt;
Never assume anything!&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Questions:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
How do you deal with situations where the hacked website needs to be back up in 10
minutes? So you don't have time to do forensics?&lt;br&gt;
&lt;br&gt;
- Bring up a DR server if you have a safe backup.&lt;br&gt;
- If it's compromised, you have to take it off immediately if someone is on that server
at that time&lt;br&gt;
&lt;br&gt;
How do you deal with virtualisation? When you don't have physical access to a machine?&lt;br&gt;
&lt;br&gt;
- Can get all active memory and disk onto a disk&lt;br&gt;
- Can take the entire VM snapshot and rebuild into a real computer again&lt;br&gt;
&lt;br&gt;
What about if it's a cloud provider?&lt;br&gt;
&lt;br&gt;
- Probably have no access to get an image. Comes down to whether we can get that access.&lt;br&gt;
&lt;br&gt;
Does a live image impact the integrity of the evidence?&lt;br&gt;
&lt;br&gt;
- Hash the evidence as soon as it is taken, so we can prove the image is unaltered.&lt;br&gt;
&lt;br&gt;
If hacker uses anonymity services like tor / proxies?&lt;br&gt;
&lt;br&gt;
- Often there's one request where they connect back directly.&lt;br&gt;
- Often there's still some fragments of evidence remaining.&lt;br&gt;
- Might be able to find out what they did, but not necessarily who did it.&lt;br&gt;
&amp;nbsp; - "Your credit cards have not been touched"&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=0428b4c3-fb5a-4368-8643-2d069a95aab2" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,0428b4c3-fb5a-4368-8643-2d069a95aab2.aspx</comments>
      <category>OWASP;Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=04c4734b-4fb2-423e-b951-47d645fd352f</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,04c4734b-4fb2-423e-b951-47d645fd352f.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,04c4734b-4fb2-423e-b951-47d645fd352f.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=04c4734b-4fb2-423e-b951-47d645fd352f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img src="http://pageofwords.com/blog/images/roberto.jpg" alt="roberto.jpg" align="right" border="0" height="292" width="200" />Roberto's
talk covered application-level vulnerabilities, and gave some ideas on how to plan
for them, how to react when they happen, and how to recover from them.<br /><br />
Most denial of service attacks have traditionally covered the layer 3 or 4 (i.e. the
transport or network stack), but Roberto has seen attacks against applications and
web service layers.<br /><br />
Can lead to increased use of resources like CPU, network<br /><br />
Root causes:<br /><br />
- bug<br />
- application logic open to abuse<br />
- session level attacks<br /><br />
Examples:<br /><br />
PHP: Can create an unbounded size object in code<br /><br />
Failure to release resource: DB exception doesn't close connection. Attacker can cause
app to open up lots of DB connections and deny service.<br /><br />
Sesion related: storing lots of session objects that consume resources, so attacker
can target this to exhaust server resources.<br /><br />
User input as a loop counter: If the user can control how many times an expensive
operation is performed, it can cause the app to do lots of demanding work.<br /><br />
=&gt; Put in some limits, don't allow the user to set in their code.<br /><br />
Regular expressions: Certain input may cause lots of passes through a regular expression,
causing lots of CPU to be used.<br /><br />
Other web problems can amplify DOS effects (XSS, XSRF, SQL injection, large file input)<br /><br />
Recommendations:<br /><br />
- Input strict validation and filtering<br />
- Handle exceptions and properly release resources<br />
- Set limits for:<br />
  - Session related objects<br />
  - Token expiration<br />
  - Object allocation<br />
  - Loop counters<br />
  - User registration - captcha<br />
  - Concurrent session tokens per IP address<br /><br />
- Testing your web app<br />
  - Test Regex, database queries<br />
  - DoS and stress testing<br />
  - Security testing<br /><br /><b>XML attacks:</b><br /><br />
There are lots of attacks against XML or web services.<br /><br />
Recommendations: don't use customised XML parser, input validation, use an XML firewall,
limit the sizes of input messages, disable external DTDs.<br /><br /><b>Webserver attacks:</b><br /><br />
Attacks to use up all the threads on a webserver, or slow down the processing so the
server can't process other requests.<br /><br />
Recommendations: Apache and IS have modules or configuration settings. Make sure you
test the changes.<br /><br /><b>Database attacks:</b><br /><br />
Make the DB do more work than they should. E.g. cause a slow scan over a whole table,
or avoid caching layers.<br /><br />
Recommendations: Input validation, captcha or user limits, only let authenticated
users perform slow queries, use caching layers.<br /><br /><b>If you are under attack:</b><br /><br />
Be prepared, have a plan, simulate it often.<br /><br /><b>When under attack:</b><br /><br />
Is it real? What is the target? Is the target critical?<br /><br /><b>Reacting:</b><br /><br />
Several methods: slow down the attack, deflect it, drop connections, escalate to authorities
or other nefarious ways to stop botnets.<br /><br /><b>Recovering:</b><br /><br />
Meet up to debrief as soon as possible afterwards. What lessons were learnt? Update
incident plan.<br /><br />
What was the root cause? What if it happens again? Provide all data to law enforcement.<br /><br /><b>Conclusion:</b><br /><br />
No generic solution to DOS.<br /><br />
If offered a DOS solution product, look carefully before committing.<br /><br />
Start networking with people that can help you.<br /><br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=04c4734b-4fb2-423e-b951-47d645fd352f" /></body>
      <title>Roberto Suggi Liverani - Defending Against Application Level DoS Attacks</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,04c4734b-4fb2-423e-b951-47d645fd352f.aspx</guid>
      <link>http://pageofwords.com/blog/2010/07/14/RobertoSuggiLiveraniDefendingAgainstApplicationLevelDoSAttacks.aspx</link>
      <pubDate>Wed, 14 Jul 2010 23:37:58 GMT</pubDate>
      <description>&lt;img src="http://pageofwords.com/blog/images/roberto.jpg" alt="roberto.jpg" align="right" border="0" height="292" width="200"&gt;Roberto's
talk covered application-level vulnerabilities, and gave some ideas on how to plan
for them, how to react when they happen, and how to recover from them.&lt;br&gt;
&lt;br&gt;
Most denial of service attacks have traditionally covered the layer 3 or 4 (i.e. the
transport or network stack), but Roberto has seen attacks against applications and
web service layers.&lt;br&gt;
&lt;br&gt;
Can lead to increased use of resources like CPU, network&lt;br&gt;
&lt;br&gt;
Root causes:&lt;br&gt;
&lt;br&gt;
- bug&lt;br&gt;
- application logic open to abuse&lt;br&gt;
- session level attacks&lt;br&gt;
&lt;br&gt;
Examples:&lt;br&gt;
&lt;br&gt;
PHP: Can create an unbounded size object in code&lt;br&gt;
&lt;br&gt;
Failure to release resource: DB exception doesn't close connection. Attacker can cause
app to open up lots of DB connections and deny service.&lt;br&gt;
&lt;br&gt;
Sesion related: storing lots of session objects that consume resources, so attacker
can target this to exhaust server resources.&lt;br&gt;
&lt;br&gt;
User input as a loop counter: If the user can control how many times an expensive
operation is performed, it can cause the app to do lots of demanding work.&lt;br&gt;
&lt;br&gt;
=&amp;gt; Put in some limits, don't allow the user to set in their code.&lt;br&gt;
&lt;br&gt;
Regular expressions: Certain input may cause lots of passes through a regular expression,
causing lots of CPU to be used.&lt;br&gt;
&lt;br&gt;
Other web problems can amplify DOS effects (XSS, XSRF, SQL injection, large file input)&lt;br&gt;
&lt;br&gt;
Recommendations:&lt;br&gt;
&lt;br&gt;
- Input strict validation and filtering&lt;br&gt;
- Handle exceptions and properly release resources&lt;br&gt;
- Set limits for:&lt;br&gt;
&amp;nbsp; - Session related objects&lt;br&gt;
&amp;nbsp; - Token expiration&lt;br&gt;
&amp;nbsp; - Object allocation&lt;br&gt;
&amp;nbsp; - Loop counters&lt;br&gt;
&amp;nbsp; - User registration - captcha&lt;br&gt;
&amp;nbsp; - Concurrent session tokens per IP address&lt;br&gt;
&lt;br&gt;
- Testing your web app&lt;br&gt;
&amp;nbsp; - Test Regex, database queries&lt;br&gt;
&amp;nbsp; - DoS and stress testing&lt;br&gt;
&amp;nbsp; - Security testing&lt;br&gt;
&lt;br&gt;
&lt;b&gt;XML attacks:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
There are lots of attacks against XML or web services.&lt;br&gt;
&lt;br&gt;
Recommendations: don't use customised XML parser, input validation, use an XML firewall,
limit the sizes of input messages, disable external DTDs.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Webserver attacks:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Attacks to use up all the threads on a webserver, or slow down the processing so the
server can't process other requests.&lt;br&gt;
&lt;br&gt;
Recommendations: Apache and IS have modules or configuration settings. Make sure you
test the changes.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Database attacks:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Make the DB do more work than they should. E.g. cause a slow scan over a whole table,
or avoid caching layers.&lt;br&gt;
&lt;br&gt;
Recommendations: Input validation, captcha or user limits, only let authenticated
users perform slow queries, use caching layers.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;If you are under attack:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Be prepared, have a plan, simulate it often.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;When under attack:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Is it real? What is the target? Is the target critical?&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Reacting:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Several methods: slow down the attack, deflect it, drop connections, escalate to authorities
or other nefarious ways to stop botnets.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Recovering:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Meet up to debrief as soon as possible afterwards. What lessons were learnt? Update
incident plan.&lt;br&gt;
&lt;br&gt;
What was the root cause? What if it happens again? Provide all data to law enforcement.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Conclusion:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
No generic solution to DOS.&lt;br&gt;
&lt;br&gt;
If offered a DOS solution product, look carefully before committing.&lt;br&gt;
&lt;br&gt;
Start networking with people that can help you.&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=04c4734b-4fb2-423e-b951-47d645fd352f" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,04c4734b-4fb2-423e-b951-47d645fd352f.aspx</comments>
      <category>OWASP;Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=5e6df742-ff74-4a98-acc1-87e71eb694e2</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,5e6df742-ff74-4a98-acc1-87e71eb694e2.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,5e6df742-ff74-4a98-acc1-87e71eb694e2.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=5e6df742-ff74-4a98-acc1-87e71eb694e2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img src="http://pageofwords.com/blog/images/brett.jpg" alt="brett.jpg" align="right" border="0" height="415" width="300" />Brett
presented a talk on some of the "Not so common code vulnerabilities".<br /><br />
The theme of his talk was that we shouldn't trust user input.<br /><br />
My notes:<br /><br />
A security vulnerability in an app - a weakness that allows a user to perform an action
that was unintended.<br /><br />
AppTrends graph (<a href="http://www.cenzic.com/">cenzic.com</a>) - input validation
is the cause of everything (XSS, SQL injection, etc)<br /><br /><br />
Frameworks won't protect you (e.g. .NET, PHP, Java frameworks). 
<br /><br />
Frameworks can promote bad practices, or have bugs in them themselves.<br /><br />
- Spring Framework http://blog.o0o.nu/ - override class loaded<br />
- Struts2 - execute arbitrary java code<br /><br />
Examples of problems:<br /><br />
Trusting filenames / urls from the user<br /><br />
Using 302 Redirects as a security measure - returning secure 
<br /><br />
content below the redirect by mistake<br /><br />
Captchas: Tell whether it's a human or computer. Bad implementations where people
have rolled their own and make it easy for computer to answer<br /><br />
Online shopping: Response from DPS comes in a browser redirect, so you can intercept
it, and add extra stuff to the shopping cart after paying, but before the website
thinks the order is finished.<br /><br />
Flash: Parameters for a flash movie can be entered in the url as well. Movie hosted
on our site can end up displaying images or other content from our attack website.<br /><br />
Forgotten password: Stored proc truncates email address to 100 characters when looking
up the user, but application uses the whole string. This can lead to an attacker receiving
the forgotten password email.<br /><br />
Java object serialisation: Object is serialised into a cookie using Base64 encoding.
Ooops: It contains something sensitive like a password.<br /><br />
PHP app in a security appliance used by a .mil: Shell out to a system command using
a url parameter passed via an unauthenticated user.<br /><br />
Cookies: storing security data in a cookie - example of LoginAttempts - an attacker
can modify the cookie to their hearts content.<br /><br />
Cookie: remember me functionality - store random token in the database and send it
to the user as a cookie, so they can log in automatically. Vulnerability: flawed if
null was stored in both the db and the cookie.<br /><br /><br />
Lesson:<br /><br />
Never trust the users input<br /><br />
Input validation is the key. 
<br /><br /><br />
You can use hidden form fields or cookies, as long as the backend input validation
is secure. You can't trust that the frontend is doing things correctly.<br /><br />
Backend should:<br />
- Validate the data<br />
- Ensure the user is authorised to access the data<br /><br />
Data comes in many forms (upper / lower case, encoded etc)<br /><br />
- Decode the data, or reject it if a normal user wouldn't send it<br /><br />
Ensure data conforms to the correct format<br />
- Check length, type, min / max values<br />
- Alphanumeric / valid date only<br /><br />
Reject invalid data, rather than attempting to fix it up.<br /><br />
Beware writing your own data sanitisation functions - needs to be well tested and
document. Use OWASP or language features if possible.<br /><br />
- Easy to write bad sanitisation. Examples of bad url testing, 
<br /><br />
XSS works without script<br /><br /><br />
Takeaways:<br /><br />
- Review your code. Have "Code Review Parties"<br />
- Have peer reviews<br />
- Have standards, and stick to them<br /><br />
Questions to Brett:<br /><br />
Should we still trust CAPTCHA?<br /><br />
Still effective at the moment, but can be broken.<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=5e6df742-ff74-4a98-acc1-87e71eb694e2" /></body>
      <title>Brett Moore: Don't try this at home</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,5e6df742-ff74-4a98-acc1-87e71eb694e2.aspx</guid>
      <link>http://pageofwords.com/blog/2010/07/14/BrettMooreDontTryThisAtHome.aspx</link>
      <pubDate>Wed, 14 Jul 2010 21:59:45 GMT</pubDate>
      <description>&lt;img src="http://pageofwords.com/blog/images/brett.jpg" alt="brett.jpg" align="right" border="0" height="415" width="300"&gt;Brett
presented a talk on some of the "Not so common code vulnerabilities".&lt;br&gt;
&lt;br&gt;
The theme of his talk was that we shouldn't trust user input.&lt;br&gt;
&lt;br&gt;
My notes:&lt;br&gt;
&lt;br&gt;
A security vulnerability in an app - a weakness that allows a user to perform an action
that was unintended.&lt;br&gt;
&lt;br&gt;
AppTrends graph (&lt;a href="http://www.cenzic.com/"&gt;cenzic.com&lt;/a&gt;) - input validation
is the cause of everything (XSS, SQL injection, etc)&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Frameworks won't protect you (e.g. .NET, PHP, Java frameworks). 
&lt;br&gt;
&lt;br&gt;
Frameworks can promote bad practices, or have bugs in them themselves.&lt;br&gt;
&lt;br&gt;
- Spring Framework http://blog.o0o.nu/ - override class loaded&lt;br&gt;
- Struts2 - execute arbitrary java code&lt;br&gt;
&lt;br&gt;
Examples of problems:&lt;br&gt;
&lt;br&gt;
Trusting filenames / urls from the user&lt;br&gt;
&lt;br&gt;
Using 302 Redirects as a security measure - returning secure 
&lt;br&gt;
&lt;br&gt;
content below the redirect by mistake&lt;br&gt;
&lt;br&gt;
Captchas: Tell whether it's a human or computer. Bad implementations where people
have rolled their own and make it easy for computer to answer&lt;br&gt;
&lt;br&gt;
Online shopping: Response from DPS comes in a browser redirect, so you can intercept
it, and add extra stuff to the shopping cart after paying, but before the website
thinks the order is finished.&lt;br&gt;
&lt;br&gt;
Flash: Parameters for a flash movie can be entered in the url as well. Movie hosted
on our site can end up displaying images or other content from our attack website.&lt;br&gt;
&lt;br&gt;
Forgotten password: Stored proc truncates email address to 100 characters when looking
up the user, but application uses the whole string. This can lead to an attacker receiving
the forgotten password email.&lt;br&gt;
&lt;br&gt;
Java object serialisation: Object is serialised into a cookie using Base64 encoding.
Ooops: It contains something sensitive like a password.&lt;br&gt;
&lt;br&gt;
PHP app in a security appliance used by a .mil: Shell out to a system command using
a url parameter passed via an unauthenticated user.&lt;br&gt;
&lt;br&gt;
Cookies: storing security data in a cookie - example of LoginAttempts - an attacker
can modify the cookie to their hearts content.&lt;br&gt;
&lt;br&gt;
Cookie: remember me functionality - store random token in the database and send it
to the user as a cookie, so they can log in automatically. Vulnerability: flawed if
null was stored in both the db and the cookie.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Lesson:&lt;br&gt;
&lt;br&gt;
Never trust the users input&lt;br&gt;
&lt;br&gt;
Input validation is the key. 
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
You can use hidden form fields or cookies, as long as the backend input validation
is secure. You can't trust that the frontend is doing things correctly.&lt;br&gt;
&lt;br&gt;
Backend should:&lt;br&gt;
- Validate the data&lt;br&gt;
- Ensure the user is authorised to access the data&lt;br&gt;
&lt;br&gt;
Data comes in many forms (upper / lower case, encoded etc)&lt;br&gt;
&lt;br&gt;
- Decode the data, or reject it if a normal user wouldn't send it&lt;br&gt;
&lt;br&gt;
Ensure data conforms to the correct format&lt;br&gt;
- Check length, type, min / max values&lt;br&gt;
- Alphanumeric / valid date only&lt;br&gt;
&lt;br&gt;
Reject invalid data, rather than attempting to fix it up.&lt;br&gt;
&lt;br&gt;
Beware writing your own data sanitisation functions - needs to be well tested and
document. Use OWASP or language features if possible.&lt;br&gt;
&lt;br&gt;
- Easy to write bad sanitisation. Examples of bad url testing, 
&lt;br&gt;
&lt;br&gt;
XSS works without script&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Takeaways:&lt;br&gt;
&lt;br&gt;
- Review your code. Have "Code Review Parties"&lt;br&gt;
- Have peer reviews&lt;br&gt;
- Have standards, and stick to them&lt;br&gt;
&lt;br&gt;
Questions to Brett:&lt;br&gt;
&lt;br&gt;
Should we still trust CAPTCHA?&lt;br&gt;
&lt;br&gt;
Still effective at the moment, but can be broken.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=5e6df742-ff74-4a98-acc1-87e71eb694e2" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,5e6df742-ff74-4a98-acc1-87e71eb694e2.aspx</comments>
      <category>OWASP;Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=ec0e1324-3840-43c9-854f-d0d49822d4e9</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,ec0e1324-3840-43c9-854f-d0d49822d4e9.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,ec0e1324-3840-43c9-854f-d0d49822d4e9.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=ec0e1324-3840-43c9-854f-d0d49822d4e9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I had fun attending <a href="http://www.owasp.org/index.php/OWASP_New_Zealand_Day_2010">OWASP
NZ Day 2010</a>.<br /><br />
There were 6 great sessions - plus Graeme and I presented a talk on encryption, and
how to develop applications using encryption:<br /><br /><a class="TitleLinkStyle" rel="bookmark" href="2010/07/14/BrettMooreDontTryThisAtHome.aspx">Brett
Moore: Don't try this at home</a><br /><a class="TitleLinkStyle" rel="bookmark" href="2010/07/14/RobertoSuggiLiveraniDefendingAgainstApplicationLevelDoSAttacks.aspx">Roberto
Suggi Liverani - Defending Against Application Level DoS Attacks</a><br /><a class="TitleLinkStyle" rel="bookmark" href="2010/07/15/PaulCraigWhatToDoWhenYouGetPwned.aspx">Paul
Craig: What to do when you get pwned?</a><br /><a class="TitleLinkStyle" rel="bookmark" href="2010/07/15/MetlstormLowScuttlingChillicrab.aspx">Metlstorm:
Low Scuttling Chillicrab</a><br /><a class="TitleLinkStyle" rel="bookmark" href="2010/07/15/GraemeNeilsonKirkJacksonTalesFromTheCrypt0.aspx">Graeme
Neilson / Kirk Jackson: Tales from the Crypt0</a><br /><a class="TitleLinkStyle" rel="bookmark" href="2010/07/15/QuintinRussMikeJagerHostingAndSecurity.aspx">Quintin
Russ / Mike Jager - Hosting and Security</a><br /><a class="TitleLinkStyle" rel="bookmark" href="2010/07/15/DeanCarterRamblingsOfAnExQSA.aspx">Dean
Carter: Ramblings of an ex-QSA</a><br /><br />
I came away with that feeling of satisfaction where you know you've learnt lots, but
haven't had time to digest and process it all yet. Some of my immediate takeaways
are:<br /><br /><ul><li>
Input validation is still a big area of problems in most apps<br /></li><li>
Application bugs and inefficiencies can be vectors for denial of service attacks</li><li>
If you get pwned, hacked or DOS'd, you need to have a plan of what you're going to
do to recover, and if there's a chance that you need law enforcement involved, you
need to get a forensic analyst involved very early on (preferably in advance)</li><li>
There are lots of computers on the internet in NZ, and lots of them have obvious vulnerabilities.
No-one is doing anything about this (at least, no-one <i>good</i> is doing anything
about this!)</li><li>
Bad development practices lead to problems in the hosting environment. App and deployment
security problems live on</li><li>
Credit cards are the devil, and should be treated as such :)</li></ul>
Thanks Roberto and Lech for organising, I'm looking forward to next year!<br /><br />
Kirk<br /><br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=ec0e1324-3840-43c9-854f-d0d49822d4e9" /></body>
      <title>OWASP NZ Day 2010</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,ec0e1324-3840-43c9-854f-d0d49822d4e9.aspx</guid>
      <link>http://pageofwords.com/blog/2010/07/14/OWASPNZDay2010.aspx</link>
      <pubDate>Wed, 14 Jul 2010 21:54:01 GMT</pubDate>
      <description>I had fun attending &lt;a href="http://www.owasp.org/index.php/OWASP_New_Zealand_Day_2010"&gt;OWASP
NZ Day 2010&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
There were 6 great sessions - plus Graeme and I presented a talk on encryption, and
how to develop applications using encryption:&lt;br&gt;
&lt;br&gt;
&lt;a class="TitleLinkStyle" rel="bookmark" href="2010/07/14/BrettMooreDontTryThisAtHome.aspx"&gt;Brett
Moore: Don't try this at home&lt;/a&gt;
&lt;br&gt;
&lt;a class="TitleLinkStyle" rel="bookmark" href="2010/07/14/RobertoSuggiLiveraniDefendingAgainstApplicationLevelDoSAttacks.aspx"&gt;Roberto
Suggi Liverani - Defending Against Application Level DoS Attacks&lt;/a&gt;
&lt;br&gt;
&lt;a class="TitleLinkStyle" rel="bookmark" href="2010/07/15/PaulCraigWhatToDoWhenYouGetPwned.aspx"&gt;Paul
Craig: What to do when you get pwned?&lt;/a&gt;
&lt;br&gt;
&lt;a class="TitleLinkStyle" rel="bookmark" href="2010/07/15/MetlstormLowScuttlingChillicrab.aspx"&gt;Metlstorm:
Low Scuttling Chillicrab&lt;/a&gt;
&lt;br&gt;
&lt;a class="TitleLinkStyle" rel="bookmark" href="2010/07/15/GraemeNeilsonKirkJacksonTalesFromTheCrypt0.aspx"&gt;Graeme
Neilson / Kirk Jackson: Tales from the Crypt0&lt;/a&gt;
&lt;br&gt;
&lt;a class="TitleLinkStyle" rel="bookmark" href="2010/07/15/QuintinRussMikeJagerHostingAndSecurity.aspx"&gt;Quintin
Russ / Mike Jager - Hosting and Security&lt;/a&gt;
&lt;br&gt;
&lt;a class="TitleLinkStyle" rel="bookmark" href="2010/07/15/DeanCarterRamblingsOfAnExQSA.aspx"&gt;Dean
Carter: Ramblings of an ex-QSA&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
I came away with that feeling of satisfaction where you know you've learnt lots, but
haven't had time to digest and process it all yet. Some of my immediate takeaways
are:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Input validation is still a big area of problems in most apps&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Application bugs and inefficiencies can be vectors for denial of service attacks&lt;/li&gt;
&lt;li&gt;
If you get pwned, hacked or DOS'd, you need to have a plan of what you're going to
do to recover, and if there's a chance that you need law enforcement involved, you
need to get a forensic analyst involved very early on (preferably in advance)&lt;/li&gt;
&lt;li&gt;
There are lots of computers on the internet in NZ, and lots of them have obvious vulnerabilities.
No-one is doing anything about this (at least, no-one &lt;i&gt;good&lt;/i&gt; is doing anything
about this!)&lt;/li&gt;
&lt;li&gt;
Bad development practices lead to problems in the hosting environment. App and deployment
security problems live on&lt;/li&gt;
&lt;li&gt;
Credit cards are the devil, and should be treated as such :)&lt;/li&gt;
&lt;/ul&gt;
Thanks Roberto and Lech for organising, I'm looking forward to next year!&lt;br&gt;
&lt;br&gt;
Kirk&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=ec0e1324-3840-43c9-854f-d0d49822d4e9" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,ec0e1324-3840-43c9-854f-d0d49822d4e9.aspx</comments>
      <category>Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=e8f31c63-4081-4e58-8d7e-accb2315d8bb</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,e8f31c63-4081-4e58-8d7e-accb2315d8bb.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,e8f31c63-4081-4e58-8d7e-accb2315d8bb.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e8f31c63-4081-4e58-8d7e-accb2315d8bb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
To prevent cross-site scripting, it's important to encode data before outputting it.
</p>
        <p>
Up until now, it has been quite hard to ensure you're encoding everywhere throughout
your app.
</p>
        <p>
It's great to see the new syntax in ASP.NET 4 to automatically encode:
</p>
        <blockquote>
          <pre class="csharpcode">First Name: <span class="asp">&lt;%</span><span class="kwrd">:</span> Model.FirstName <span class="asp">%&gt;</span> Last
Name: <span class="asp">&lt;%</span><span class="kwrd">:</span> Model.FirstName <span class="asp">%&gt;</span><span class="kwrd">&lt;</span><span class="html">form</span><span class="attr">method</span><span class="kwrd">="post"</span><span class="kwrd">&gt;</span><span class="asp">&lt;%</span><span class="kwrd">:</span> Html.TextBox(<span class="str">"FirstName"</span>) <span class="asp">%&gt;</span><span class="asp">&lt;%</span><span class="kwrd">:</span> Html.TextBox(<span class="str">"LastName"</span>) <span class="asp">%&gt;</span><span class="kwrd">&lt;/</span><span class="html">form</span><span class="kwrd">&gt;</span></pre>
        </blockquote>
        <p>
(From <a href="http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx">Phil
Haack's blog</a>)
</p>
        <p>
This means that for all new web applications, you can build using &lt;%: %&gt; instead
of &lt;%= %&gt;, which is great for ASP.NET MVC applications where that syntax is
common. 
</p>
        <p>
For older applications you will be able to opt in to the new encoding syntax, but
your old code will keep working exactly as it already does (perhaps insecurely, if
you're not encoding!)
</p>
        <p>
Here's hoping that we'll be able to replace the standard HtmlEncode with the <a href="http://www.codeplex.com/AntiXSS">AntiXSS</a> goodness
I described here:
</p>
        <ul>
          <li>
            <a href="http://pageofwords.com/blog/2009/02/25/WhatIsEncodingCrossSiteScriptingAndTheAntiXSSEncodingMethods.aspx">What
is encoding? Cross site scripting and the AntiXSS encoding methods</a>
          </li>
        </ul>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e8f31c63-4081-4e58-8d7e-accb2315d8bb" />
      </body>
      <title>Syntax support for HTML Encoding in ASP.NET 4</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,e8f31c63-4081-4e58-8d7e-accb2315d8bb.aspx</guid>
      <link>http://pageofwords.com/blog/2009/10/09/SyntaxSupportForHTMLEncodingInASPNET4.aspx</link>
      <pubDate>Fri, 09 Oct 2009 09:00:18 GMT</pubDate>
      <description>&lt;p&gt;
To prevent cross-site scripting, it's important to encode data before outputting it.
&lt;/p&gt;
&lt;p&gt;
Up until now, it has been quite hard to ensure you're encoding everywhere throughout
your app.
&lt;/p&gt;
&lt;p&gt;
It's great to see the new syntax in ASP.NET 4 to automatically encode:
&lt;/p&gt;
&lt;blockquote&gt; &lt;pre class="csharpcode"&gt;First Name: &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="kwrd"&gt;:&lt;/span&gt; Model.FirstName &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt; Last
Name: &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="kwrd"&gt;:&lt;/span&gt; Model.FirstName &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt; &lt;span class="attr"&gt;method&lt;/span&gt;&lt;span class="kwrd"&gt;="post"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="kwrd"&gt;:&lt;/span&gt; Html.TextBox(&lt;span class="str"&gt;"FirstName"&lt;/span&gt;) &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt; &lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="kwrd"&gt;:&lt;/span&gt; Html.TextBox(&lt;span class="str"&gt;"LastName"&lt;/span&gt;) &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
(From &lt;a href="http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx"&gt;Phil
Haack's blog&lt;/a&gt;)
&lt;/p&gt;
&lt;p&gt;
This means that for all new web applications, you can build using &amp;lt;%: %&amp;gt; instead
of &amp;lt;%= %&amp;gt;, which is great for ASP.NET MVC applications where that syntax is
common. 
&lt;/p&gt;
&lt;p&gt;
For older applications you will be able to opt in to the new encoding syntax, but
your old code will keep working exactly as it already does (perhaps insecurely, if
you're not encoding!)
&lt;/p&gt;
&lt;p&gt;
Here's hoping that we'll be able to replace the standard HtmlEncode with the &lt;a href="http://www.codeplex.com/AntiXSS"&gt;AntiXSS&lt;/a&gt; goodness
I described here:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2009/02/25/WhatIsEncodingCrossSiteScriptingAndTheAntiXSSEncodingMethods.aspx"&gt;What
is encoding? Cross site scripting and the AntiXSS encoding methods&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e8f31c63-4081-4e58-8d7e-accb2315d8bb" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,e8f31c63-4081-4e58-8d7e-accb2315d8bb.aspx</comments>
      <category>AntiXSS;Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=9a15a145-d4fe-45e1-991f-4eb872b3f6e1</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,9a15a145-d4fe-45e1-991f-4eb872b3f6e1.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,9a15a145-d4fe-45e1-991f-4eb872b3f6e1.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9a15a145-d4fe-45e1-991f-4eb872b3f6e1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Code Camp is less than two weeks away!
</p>
        <p>
If you want to catch some <i>free</i> sessions on the state-of-the-art in .NET development,
SQL Server and developer security then sign up for <a href="http://www.dot.net.nz/GeneralPages/CodeCampAuckland2009.aspx">Code
Camp Auckland 2009</a> now.
</p>
        <p>
Code Camps are non-profit, and organised by members of the <a href="http://www.dot.net.nz">local
developer community</a>. This year the Auckland Code Camp is the day before <a href="http://www.microsoft.co.nz/teched">TechEd</a> (Sunday
13 September), so we've managed to nab a few great speakers on their day off to present
to us.
</p>
        <p>
It's the biggest Code Camp ever - over 14 hours of sessions across 3 streams from
10am till 5pm:
</p>
        <p>
          <b>Development...</b>
        </p>
        <ul>
          <li>
What's Happening in .NET Languages and Why Should You Care? 
</li>
          <li>
.NET on the iPhone and Beyond</li>
          <li>
Behaviour Driven Development 
</li>
          <li>
Domain Specific Languages 
</li>
          <li>
C# 4.0 new features</li>
          <li>
Silverlight with Prism</li>
          <li>
Becoming Certified</li>
          <li>
Lightning Talks 
</li>
          <li>
and more! 
</li>
        </ul>
        <p>
The latest and greatest in development topics, by the people that know!
</p>
        <p>
          <b>SQL Server?</b>
        </p>
        <ul>
          <li>
SQL Server Virtualisation Best Practices and Recommendations 
</li>
          <li>
SQL Server Analysis Services and Gemini 
</li>
          <li>
Query Optimization and Query Tuning 
</li>
          <li>
Understanding SQL Server Indexing 
</li>
          <li>
SQL Server Maintenance 
</li>
        </ul>
        <p>
Training and guidance from the best SQL trainers in the industry!
</p>
        <p>
          <b>Security!</b>
        </p>
        <ul>
          <li>
Secure Development Lifecycle and Threat Modelling workshop 
</li>
          <li>
Secure Coding Practices 
</li>
        </ul>
        <p>
We are lucky to have <a href="http://blogs.msdn.com/michael_howard">Michael Howard</a>,
author of <a href="http://www.fishpond.co.nz/Books/Computers/Networking/Security/product_info/984332/">Writing
Secure Code</a> and <a href="http://www.fishpond.co.nz/Books/Computers/Networking/Security/product_info/15172892">24
Deadly Sins of Software Security</a> giving a <i>free</i> workshop for developers,
architects and team leads on Threat Modelling and the Secure Development Lifecycle.
This will be followed by a session on how to write secure .NET code.
</p>
        <p>
Auckland has never seen such an awesome <i>free </i>event!
</p>
        <p>
Presenters that are offering their time include <a href="http://sqlblog.com/blogs/greg_low/">Greg
Low</a>, <a href="http://sqlcat.com/members/Nicholas-Dritsas.aspx">Nicholas Dritsas</a> and
Auckland's <a href="http://blog.bittercoder.com/">Alex Henderson</a> of <a href="http://blog.bittercoder.com/CategoryView,category,architectureChat.aspx">Architecture
Chat</a> fame.
</p>
        <p>
To cover the costs of the event, we have the help of our generous sponsors: <a href="http://www.microsoft.co.nz">Microsoft</a>, <a href="http://www.datacom.co.nz">Datacom</a>, <a href="http://www.intergen.co.nz">Intergen</a>, <a href="http://apac.ineta.org">INETA</a> and <a href="http://www.xero.com">Xero</a>.
</p>
        <p>
All that's left for you to do is to <a href="http://www.dot.net.nz/GeneralPages/CodeCampAuckland2009.aspx">visit
the website</a> for more details, and <a href="http://www.codecamp.net.nz/">sign up
now</a>!
</p>
        <p>
See you there on Sunday 13 September,
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=9a15a145-d4fe-45e1-991f-4eb872b3f6e1" />
      </body>
      <title>Code Camp Auckland 2009 - Development | SQL | Security</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,9a15a145-d4fe-45e1-991f-4eb872b3f6e1.aspx</guid>
      <link>http://pageofwords.com/blog/2009/08/30/CodeCampAuckland2009DevelopmentSQLSecurity.aspx</link>
      <pubDate>Sun, 30 Aug 2009 11:17:02 GMT</pubDate>
      <description>&lt;p&gt;
Code Camp is less than two weeks away!
&lt;/p&gt;
&lt;p&gt;
If you want to catch some &lt;i&gt;free&lt;/i&gt; sessions on the state-of-the-art in .NET development,
SQL Server and developer security then sign up for &lt;a href="http://www.dot.net.nz/GeneralPages/CodeCampAuckland2009.aspx"&gt;Code
Camp Auckland 2009&lt;/a&gt; now.
&lt;/p&gt;
&lt;p&gt;
Code Camps are non-profit, and organised by members of the &lt;a href="http://www.dot.net.nz"&gt;local
developer community&lt;/a&gt;. This year the Auckland Code Camp is the day before &lt;a href="http://www.microsoft.co.nz/teched"&gt;TechEd&lt;/a&gt; (Sunday
13 September), so we've managed to nab a few great speakers on their day off to present
to us.
&lt;/p&gt;
&lt;p&gt;
It's the biggest Code Camp ever - over 14 hours of sessions across 3 streams from
10am till 5pm:
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Development...&lt;/b&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
What's Happening in .NET Languages and Why Should You Care? 
&lt;/li&gt;
&lt;li&gt;
.NET on the iPhone and Beyond&lt;/li&gt;
&lt;li&gt;
Behaviour Driven Development 
&lt;/li&gt;
&lt;li&gt;
Domain Specific Languages 
&lt;/li&gt;
&lt;li&gt;
C# 4.0 new features&lt;/li&gt;
&lt;li&gt;
Silverlight with Prism&lt;/li&gt;
&lt;li&gt;
Becoming Certified&lt;/li&gt;
&lt;li&gt;
Lightning Talks 
&lt;/li&gt;
&lt;li&gt;
and more! 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The latest and greatest in development topics, by the people that know!
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;SQL Server?&lt;/b&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
SQL Server Virtualisation Best Practices and Recommendations 
&lt;/li&gt;
&lt;li&gt;
SQL Server Analysis Services and Gemini 
&lt;/li&gt;
&lt;li&gt;
Query Optimization and Query Tuning 
&lt;/li&gt;
&lt;li&gt;
Understanding SQL Server Indexing 
&lt;/li&gt;
&lt;li&gt;
SQL Server Maintenance 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Training and guidance from the best SQL trainers in the industry!
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Security!&lt;/b&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Secure Development Lifecycle and Threat Modelling workshop 
&lt;/li&gt;
&lt;li&gt;
Secure Coding Practices 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
We are lucky to have &lt;a href="http://blogs.msdn.com/michael_howard"&gt;Michael Howard&lt;/a&gt;,
author of &lt;a href="http://www.fishpond.co.nz/Books/Computers/Networking/Security/product_info/984332/"&gt;Writing
Secure Code&lt;/a&gt; and &lt;a href="http://www.fishpond.co.nz/Books/Computers/Networking/Security/product_info/15172892"&gt;24
Deadly Sins of Software Security&lt;/a&gt; giving a &lt;i&gt;free&lt;/i&gt; workshop for developers,
architects and team leads on Threat Modelling and the Secure Development Lifecycle.
This will be followed by a session on how to write secure .NET code.
&lt;/p&gt;
&lt;p&gt;
Auckland has never seen such an awesome &lt;i&gt;free &lt;/i&gt;event!
&lt;/p&gt;
&lt;p&gt;
Presenters that are offering their time include &lt;a href="http://sqlblog.com/blogs/greg_low/"&gt;Greg
Low&lt;/a&gt;, &lt;a href="http://sqlcat.com/members/Nicholas-Dritsas.aspx"&gt;Nicholas Dritsas&lt;/a&gt; and
Auckland's &lt;a href="http://blog.bittercoder.com/"&gt;Alex Henderson&lt;/a&gt; of &lt;a href="http://blog.bittercoder.com/CategoryView,category,architectureChat.aspx"&gt;Architecture
Chat&lt;/a&gt; fame.
&lt;/p&gt;
&lt;p&gt;
To cover the costs of the event, we have the help of our generous sponsors: &lt;a href="http://www.microsoft.co.nz"&gt;Microsoft&lt;/a&gt;, &lt;a href="http://www.datacom.co.nz"&gt;Datacom&lt;/a&gt;, &lt;a href="http://www.intergen.co.nz"&gt;Intergen&lt;/a&gt;, &lt;a href="http://apac.ineta.org"&gt;INETA&lt;/a&gt; and &lt;a href="http://www.xero.com"&gt;Xero&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
All that's left for you to do is to &lt;a href="http://www.dot.net.nz/GeneralPages/CodeCampAuckland2009.aspx"&gt;visit
the website&lt;/a&gt; for more details, and &lt;a href="http://www.codecamp.net.nz/"&gt;sign up
now&lt;/a&gt;!
&lt;/p&gt;
&lt;p&gt;
See you there on Sunday 13 September,
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=9a15a145-d4fe-45e1-991f-4eb872b3f6e1" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,9a15a145-d4fe-45e1-991f-4eb872b3f6e1.aspx</comments>
      <category>.NET;CodeCamp;Security;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=f1045b20-3987-4fe6-bd24-dcffcdbbd9d7</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,f1045b20-3987-4fe6-bd24-dcffcdbbd9d7.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,f1045b20-3987-4fe6-bd24-dcffcdbbd9d7.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=f1045b20-3987-4fe6-bd24-dcffcdbbd9d7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you store, transmit or process credit card data, PCI applies.
</p>
        <p>
How can OWASP help you with PCI compliance?
</p>
        <p>
Credit card data:
</p>
        <ul>
          <li>
Primary Account Number (PAN): Can store it, but protection required.</li>
          <li>
Can never store the CVD 3 digit number or mag stripe</li>
        </ul>
        <p>
Card data attacks have been increasing in sophistication.
</p>
        <p>
PCI-DSS affects anyone who transmits, processes or stores payment card data. E.g.
merchants, service providers (e.g. Paymark, DPS).
</p>
        <p>
Look at <a href="https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml">12
requirements of PCI-DSS</a> (firewalls, storage etc)
</p>
        <p>
          <strong>Protecting stored data:</strong>
        </p>
        <p>
You must not store sensitive authentication data. Principle: if you don't need it,
don't store it. Consider outsourcing, truncation, tokenisation.
</p>
        <p>
Tokenisation: Replace PAN with a unique identifier "token"
</p>
        <p>
Truncation: don't store all the data (e.g. first 4, last 4 digits)
</p>
        <p>
Encryption: Encrypt at point of capture, only decrypt when required, use industry
standard encryption, protect your keys.
</p>
        <p>
          <strong>Developing secure applications / Test app was built securely / <strong>Use
secure coding guidelines</strong>:</strong>
        </p>
        <p>
Standard OWASP guidelines
</p>
        <p>
          <strong>Annual risk assessment:</strong>
        </p>
        <p>
Every year, new threats will affect your site. Go and re-assess against the new threats.
</p>
        <p>
 
</p>
        <p>
Fixing legacy systems: make sure no old data is lying around.
</p>
        <p>
Real life example: it's very easy to mess up (example of reverting to old code)
</p>
        <p>
Parting thoughts: achieve, maintain and validate compliance. Secure development is
a key activity. OWASP is a good source. Reduce storage of PAN data.
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=f1045b20-3987-4fe6-bd24-dcffcdbbd9d7" />
      </body>
      <title>OWASP NZ: PCI-DSS for OWASP Practitioners: Dean Carter, security-assessment.com</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,f1045b20-3987-4fe6-bd24-dcffcdbbd9d7.aspx</guid>
      <link>http://pageofwords.com/blog/2009/07/13/OWASPNZPCIDSSForOWASPPractitionersDeanCarterSecurityassessmentcom.aspx</link>
      <pubDate>Mon, 13 Jul 2009 03:46:55 GMT</pubDate>
      <description>&lt;p&gt;
If you store, transmit or process credit card data, PCI applies.
&lt;/p&gt;
&lt;p&gt;
How can OWASP help you with PCI compliance?
&lt;/p&gt;
&lt;p&gt;
Credit card data:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Primary Account Number (PAN): Can store it, but protection required.&lt;/li&gt;
&lt;li&gt;
Can never store the CVD 3 digit number or mag stripe&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Card data attacks have been increasing in sophistication.
&lt;/p&gt;
&lt;p&gt;
PCI-DSS affects anyone who transmits, processes or stores payment card data. E.g.
merchants, service providers (e.g. Paymark, DPS).
&lt;/p&gt;
&lt;p&gt;
Look at &lt;a href="https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml"&gt;12
requirements of PCI-DSS&lt;/a&gt; (firewalls, storage etc)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Protecting stored data:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
You must not store sensitive authentication data. Principle: if you don't need it,
don't store it. Consider outsourcing, truncation, tokenisation.
&lt;/p&gt;
&lt;p&gt;
Tokenisation: Replace PAN with a unique identifier "token"
&lt;/p&gt;
&lt;p&gt;
Truncation: don't store all the data (e.g. first 4, last 4 digits)
&lt;/p&gt;
&lt;p&gt;
Encryption: Encrypt at point of capture, only decrypt when required, use industry
standard encryption, protect your keys.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Developing secure applications / Test app was built securely / &lt;strong&gt;Use
secure coding guidelines&lt;/strong&gt;:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Standard OWASP guidelines
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Annual risk assessment:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Every year, new threats will affect your site. Go and re-assess against the new threats.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Fixing legacy systems: make sure no old data is lying around.
&lt;/p&gt;
&lt;p&gt;
Real life example: it's very easy to mess up (example of reverting to old code)
&lt;/p&gt;
&lt;p&gt;
Parting thoughts: achieve, maintain and validate compliance. Secure development is
a key activity. OWASP is a good source. Reduce storage of PAN data.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=f1045b20-3987-4fe6-bd24-dcffcdbbd9d7" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,f1045b20-3987-4fe6-bd24-dcffcdbbd9d7.aspx</comments>
      <category>OWASP;Security;Web</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=3f86c7a5-c70e-403b-a37e-4738592e3fe1</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,3f86c7a5-c70e-403b-a37e-4738592e3fe1.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,3f86c7a5-c70e-403b-a37e-4738592e3fe1.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=3f86c7a5-c70e-403b-a37e-4738592e3fe1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Bug chaining - an idea that hasn't really propagated yet.
</p>
        <p>
How do we rate how severe a bug is? Consider how easy it is to exploit, where it is
accessible from (client-side, server-side, internet, local, mass exploitable, targeted
exploit, etc).
</p>
        <p>
Audience attempted to rate the severity of a couple of bugs:
</p>
        <ul>
          <li>
SQL injection on authenticated site -&gt; medium/high 
</li>
          <li>
File upload php files on authenticated site -&gt; high/critical 
</li>
          <li>
Local file disclosure -&gt; medium/high 
</li>
          <li>
XSS - reflective, authenticated -&gt; low/medium 
</li>
        </ul>
        <p>
Is attacker considered 'authenticated' once there is an XSS attack? Any subsequent
attacks can be treated as authenticated.
</p>
        <p>
When you join together the XSS bug with the file upload bug, then it's critical!
</p>
        <p>
Bug chaining: taking multiple bugs and chaining them together to create exploitable
vulnerabilities. Instead of looking at each individual bug, look at how they can be
combined together.
</p>
        <p>
There are now frameworks to help chain together exploits - and this is how a lot of
worms now work.
</p>
        <p>
Recent examples of chaining exploits: PHPMyAdmin &lt;= 3.1.3; SugarCRM &lt;= 5.2.0e
- compromise server through 3 bugs together.
</p>
        <p>
How to deal with this? CVSSv2:
</p>
        <ul>
          <li>
Common Vulnerability Scoring System v2.0 
</li>
          <li>
Scoring system for assessing bugs 
</li>
          <li>
Considers exploit complexity, application location, authentication, target likelihood
etc 
</li>
          <li>
Can be very complex, time consuming, difficult to follow 
</li>
        </ul>
        <p>
"You can explain this stuff all day, but when network admins actually see you do it,
that's when they understand" Brett Moore
</p>
        <p>
VtigerCRM - large open-source CRM system which fixed problems with a security patch,
but don't link to the fix (and haven't installed it themselves!).
</p>
        <p>
He wrote a BeEf module for VtigerCRM that can run as an auto-run module (took less
than 2 hours to write):
</p>
        <ul>
          <li>
Chains file upload and XSS bug to upload a malicious PHP script to start a command
shell</li>
          <li>
Connection is from <em>server</em> to the attackers machine, so user doesn't need
to stay connected</li>
        </ul>
        <p>
          <strong>Summary:</strong>
        </p>
        <p>
Don't look at severity of individual bugs - need to look at how bugs can be joined
together.
</p>
        <p>
          <em>Understand </em>the bugs.
</p>
        <p>
Follow the OWASP coding and testing guidelines.
</p>
        <p>
Tools:
</p>
        <ul>
          <li>
            <a href="http://www.bindshell.net/tools/beef/">BeEf</a> - command console for an attacker
to run script on the client computer. Modular list of exploits, and control multiple
victims. Autorun modules to automatically execute modules within 1.5-2 seconds.</li>
        </ul>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=3f86c7a5-c70e-403b-a37e-4738592e3fe1" />
      </body>
      <title>OWASP NZ: Application Bug Chaining: Mark Piper, Catalyst IT</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,3f86c7a5-c70e-403b-a37e-4738592e3fe1.aspx</guid>
      <link>http://pageofwords.com/blog/2009/07/13/OWASPNZApplicationBugChainingMarkPiperCatalystIT.aspx</link>
      <pubDate>Mon, 13 Jul 2009 02:57:28 GMT</pubDate>
      <description>&lt;p&gt;
Bug chaining - an idea that hasn't really propagated yet.
&lt;/p&gt;
&lt;p&gt;
How do we rate how severe a bug is? Consider how easy it is to exploit, where it is
accessible from (client-side, server-side, internet, local, mass exploitable, targeted
exploit, etc).
&lt;/p&gt;
&lt;p&gt;
Audience attempted to rate the severity of a couple of bugs:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
SQL injection on authenticated site -&amp;gt; medium/high 
&lt;/li&gt;
&lt;li&gt;
File upload php files on authenticated site -&amp;gt; high/critical 
&lt;/li&gt;
&lt;li&gt;
Local file disclosure -&amp;gt; medium/high 
&lt;/li&gt;
&lt;li&gt;
XSS - reflective, authenticated -&amp;gt; low/medium 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Is attacker considered 'authenticated' once there is an XSS attack? Any subsequent
attacks can be treated as authenticated.
&lt;/p&gt;
&lt;p&gt;
When you join together the XSS bug with the file upload bug, then it's critical!
&lt;/p&gt;
&lt;p&gt;
Bug chaining: taking multiple bugs and chaining them together to create exploitable
vulnerabilities. Instead of looking at each individual bug, look at how they can be
combined together.
&lt;/p&gt;
&lt;p&gt;
There are now frameworks to help chain together exploits - and this is how a lot of
worms now work.
&lt;/p&gt;
&lt;p&gt;
Recent examples of chaining exploits: PHPMyAdmin &amp;lt;= 3.1.3; SugarCRM &amp;lt;= 5.2.0e
- compromise server through 3 bugs together.
&lt;/p&gt;
&lt;p&gt;
How to deal with this? CVSSv2:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Common Vulnerability Scoring System v2.0 
&lt;/li&gt;
&lt;li&gt;
Scoring system for assessing bugs 
&lt;/li&gt;
&lt;li&gt;
Considers exploit complexity, application location, authentication, target likelihood
etc 
&lt;/li&gt;
&lt;li&gt;
Can be very complex, time consuming, difficult to follow 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
"You can explain this stuff all day, but when network admins actually see you do it,
that's when they understand" Brett Moore
&lt;/p&gt;
&lt;p&gt;
VtigerCRM - large open-source CRM system which fixed problems with a security patch,
but don't link to the fix (and haven't installed it themselves!).
&lt;/p&gt;
&lt;p&gt;
He wrote a BeEf module for VtigerCRM that can run as an auto-run module (took less
than 2 hours to write):
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Chains file upload and XSS bug to upload a malicious PHP script to start a command
shell&lt;/li&gt;
&lt;li&gt;
Connection is from &lt;em&gt;server&lt;/em&gt; to the attackers machine, so user doesn't need
to stay connected&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Summary:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Don't look at severity of individual bugs - need to look at how bugs can be joined
together.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Understand &lt;/em&gt;the bugs.
&lt;/p&gt;
&lt;p&gt;
Follow the OWASP coding and testing guidelines.
&lt;/p&gt;
&lt;p&gt;
Tools:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.bindshell.net/tools/beef/"&gt;BeEf&lt;/a&gt; - command console for an attacker
to run script on the client computer. Modular list of exploits, and control multiple
victims. Autorun modules to automatically execute modules within 1.5-2 seconds.&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=3f86c7a5-c70e-403b-a37e-4738592e3fe1" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,3f86c7a5-c70e-403b-a37e-4738592e3fe1.aspx</comments>
      <category>OWASP;Security;Web</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=d1f49c3b-5881-4efa-b142-652a5de9592e</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,d1f49c3b-5881-4efa-b142-652a5de9592e.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,d1f49c3b-5881-4efa-b142-652a5de9592e.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d1f49c3b-5881-4efa-b142-652a5de9592e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Firefox extensions: They're just software, like ActiveX. Extend, modify and control
the browser.
</p>
        <p>
Firefox extension points:
</p>
        <ul>
          <li>
XUL: XML user interface language</li>
          <li>
XBL: XML Binding Language - logical behaviour of widgets</li>
          <li>
XPCOM: Reusable components, interface to file system etc.</li>
          <li>
XPConnect: Allows Javascript to connect to XPCOM</li>
          <li>
Chrome: Special browser zone that is fully trusted by firefox - code is fully trusted,
has access to filesystem, user passwords etc.</li>
        </ul>
        <p>
Mozilla security extension model is non-existent. All extensions are fully trusted
by Firefox - no boundaries between extensions, they can modify each other without
the user knowing. Can be coded in C++ and subject to memory corruption etc.
</p>
        <p>
Extensions are very popular (billion downloads) and can be found everywhere - social
networks, search engines, software packages (skype, anti-virus), anti-phishing toolbars.
</p>
        <p>
Biggest problem is the human side of things - Addins.mozilla.org recommend extensions
and add a 'recommended' icon next to them. Extension source code isn't read by third
parties (<em>"It's not the linux kernel"</em>).
</p>
        <p>
There's no protection from an extension with a security problem, it will bypass any
other phishing / malware protection extensions.
</p>
        <p>
Extensions aren't signed (even the Mozilla ones), so we can't rely on people checking
signatures.
</p>
        <p>
If an extension is originally trusted, then subsequent updates won't go through the
same review process.
</p>
        <p>
No current guidelines for testing a Firefox extension, so security-assessement.com
havce come up with their own methodology (whitepaper to be released this year, early
next year):
</p>
        <ul>
          <li>
Isolated testing: Only test one extension at a time, on different OSes with different
Firefox versions.</li>
          <li>
Information gathering: How does the extension work, how is it installed? Look inside
the extension package (a zip file) and look for malicious files (e.g. .exe, .msi etc)</li>
          <li>
Look for XPInstall API functions that are dangerous (e.g. executing code on install)</li>
          <li>
Look for suspicious files in the extension folder (e.g. softlinks to other directories)</li>
          <li>
Look inside install.rdf - some tags can hide extensions so they don't appear in the
addon manager</li>
          <li>
Extensions can have the same description as other installed extensions, so two appear
in addon manager</li>
          <li>
Does the extension try to trick the user into thinking it's verified?</li>
          <li>
Look for pointers outside the extension, or flags that expose the extension object
or content to untrusted code (e.g. contentaccessible=yes or xpcnativewrappers=no)</li>
          <li>
Extensions can be merged into the firefox UI - e.g. top toolbar, bottom status bar.
They can also modify existing buttons e.g. Reload, Back, Forward or Home button.</li>
          <li>
Use the extension. Check the DOM of a test page with the extension loaded (they used
mozreply to do this)</li>
          <li>
Debugging: can set breakpoints using Javascript debugger.</li>
          <li>
Sandbox: can be sidestepped by replacing code inside the sandbox or evaluating it
from outside</li>
          <li>
XPCOM components: .dll or .so - compiled code that the extension may ship with, or
may use existing components on the machine. May need to review source code or decompile.
A bunch of components to watch out for.</li>
          <li>
wrappedJSObject: removes the protection of the XPComComponent, so they are avoiding
the firefox protection.</li>
          <li>
Watch out for callback functions, which may be replaced / modified</li>
          <li>
window.OpenDialog: Opens any URI with elevated chrome privileges</li>
          <li>
Auth: Some expose credentials in plain text, e.g. GET or basic auth</li>
          <li>
Auth: Some expose functionality via javascript that can side-step normal process</li>
          <li>
Skype extension - a javascript call that any web page can use to start dialing your
skype to any 
</li>
          <li>
XSS: Watch out for XSS issues - can execute in the chrome zone from DOM events, embedded
XSS, recursive iframes</li>
          <li>
XSS: Extensions loading external scripts</li>
        </ul>
        <p>
They have applied their methodology to different extensions, and some responses have
been slow or non-existent!
</p>
        <p>
Here are some extensions that were demoed and had problems. They are all common or
Mozilla recommended (all these have been fixed):
</p>
        <ul>
          <li>
FireFTP: Could include malicious code in the welcome method of an FTP server, and
the browser would execute it. Showed a proof of concept sending the contents of win.ini
to a different server, and using BeEf to control client.</li>
          <li>
CoolPreviews: Susceptible to XSS if a data:// URI is used. Showed a remote code execution
when right-clicking on a link and previewing it with CoolPreviews.</li>
          <li>
WizzRSS: HTML and Javascript in the &lt;description&gt; tag of RSS feeds is executed
in the chrome zone. Showed a reverse shell onto the Windows machine from a malicious
users machine.</li>
        </ul>
        <p>
Extension developers and vendors haven't got a security disclosure process yet - they
don't know how to deal with the issues yet. Some extensions don't even publish an
email address for the author.
</p>
        <p>
Tools:
</p>
        <ul>
          <li>
Firebug</li>
          <li>
MozRepl</li>
          <li>
            <a href="http://www.bindshell.net/tools/beef/">BeEf</a> - command console for an attacker
to run script on the client computer.</li>
        </ul>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=d1f49c3b-5881-4efa-b142-652a5de9592e" />
      </body>
      <title>OWASP NZ: Exploiting Firefox Extensions: Roberto Suggi Liverani &amp;amp; Nick Freeman, Security-Assessment.com</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,d1f49c3b-5881-4efa-b142-652a5de9592e.aspx</guid>
      <link>http://pageofwords.com/blog/2009/07/13/OWASPNZExploitingFirefoxExtensionsRobertoSuggiLiveraniAmpNickFreemanSecurityAssessmentcom.aspx</link>
      <pubDate>Mon, 13 Jul 2009 02:19:53 GMT</pubDate>
      <description>&lt;p&gt;
Firefox extensions: They're just software, like ActiveX. Extend, modify and control
the browser.
&lt;/p&gt;
&lt;p&gt;
Firefox extension points:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
XUL: XML user interface language&lt;/li&gt;
&lt;li&gt;
XBL: XML Binding Language - logical behaviour of widgets&lt;/li&gt;
&lt;li&gt;
XPCOM: Reusable components, interface to file system etc.&lt;/li&gt;
&lt;li&gt;
XPConnect: Allows Javascript to connect to XPCOM&lt;/li&gt;
&lt;li&gt;
Chrome: Special browser zone that is fully trusted by firefox - code is fully trusted,
has access to filesystem, user passwords etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Mozilla security extension model is non-existent. All extensions are fully trusted
by Firefox - no boundaries between extensions, they can modify each other without
the user knowing. Can be coded in C++ and subject to memory corruption etc.
&lt;/p&gt;
&lt;p&gt;
Extensions are very popular (billion downloads) and can be found everywhere - social
networks, search engines, software packages (skype, anti-virus), anti-phishing toolbars.
&lt;/p&gt;
&lt;p&gt;
Biggest problem is the human side of things - Addins.mozilla.org recommend extensions
and add a 'recommended' icon next to them. Extension source code isn't read by third
parties (&lt;em&gt;"It's not the linux kernel"&lt;/em&gt;).
&lt;/p&gt;
&lt;p&gt;
There's no protection from an extension with a security problem, it will bypass any
other phishing / malware protection extensions.
&lt;/p&gt;
&lt;p&gt;
Extensions aren't signed (even the Mozilla ones), so we can't rely on people checking
signatures.
&lt;/p&gt;
&lt;p&gt;
If an extension is originally trusted, then subsequent updates won't go through the
same review process.
&lt;/p&gt;
&lt;p&gt;
No current guidelines for testing a Firefox extension, so security-assessement.com
havce come up with their own methodology (whitepaper to be released this year, early
next year):
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Isolated testing: Only test one extension at a time, on different OSes with different
Firefox versions.&lt;/li&gt;
&lt;li&gt;
Information gathering: How does the extension work, how is it installed? Look inside
the extension package (a zip file) and look for malicious files (e.g. .exe, .msi etc)&lt;/li&gt;
&lt;li&gt;
Look for XPInstall API functions that are dangerous (e.g. executing code on install)&lt;/li&gt;
&lt;li&gt;
Look for suspicious files in the extension folder (e.g. softlinks to other directories)&lt;/li&gt;
&lt;li&gt;
Look inside install.rdf - some tags can hide extensions so they don't appear in the
addon manager&lt;/li&gt;
&lt;li&gt;
Extensions can have the same description as other installed extensions, so two appear
in addon manager&lt;/li&gt;
&lt;li&gt;
Does the extension try to trick the user into thinking it's verified?&lt;/li&gt;
&lt;li&gt;
Look for pointers outside the extension, or flags that expose the extension object
or content to untrusted code (e.g. contentaccessible=yes or xpcnativewrappers=no)&lt;/li&gt;
&lt;li&gt;
Extensions can be merged into the firefox UI - e.g. top toolbar, bottom status bar.
They can also modify existing buttons e.g. Reload, Back, Forward or Home button.&lt;/li&gt;
&lt;li&gt;
Use the extension. Check the DOM of a test page with the extension loaded (they used
mozreply to do this)&lt;/li&gt;
&lt;li&gt;
Debugging: can set breakpoints using Javascript debugger.&lt;/li&gt;
&lt;li&gt;
Sandbox: can be sidestepped by replacing code inside the sandbox or evaluating it
from outside&lt;/li&gt;
&lt;li&gt;
XPCOM components: .dll or .so - compiled code that the extension may ship with, or
may use existing components on the machine. May need to review source code or decompile.
A bunch of components to watch out for.&lt;/li&gt;
&lt;li&gt;
wrappedJSObject: removes the protection of the XPComComponent, so they are avoiding
the firefox protection.&lt;/li&gt;
&lt;li&gt;
Watch out for callback functions, which may be replaced / modified&lt;/li&gt;
&lt;li&gt;
window.OpenDialog: Opens any URI with elevated chrome privileges&lt;/li&gt;
&lt;li&gt;
Auth: Some expose credentials in plain text, e.g. GET or basic auth&lt;/li&gt;
&lt;li&gt;
Auth: Some expose functionality via javascript that can side-step normal process&lt;/li&gt;
&lt;li&gt;
Skype extension - a javascript call that any web page can use to start dialing your
skype to any 
&lt;/li&gt;
&lt;li&gt;
XSS: Watch out for XSS issues - can execute in the chrome zone from DOM events, embedded
XSS, recursive iframes&lt;/li&gt;
&lt;li&gt;
XSS: Extensions loading external scripts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
They have applied their methodology to different extensions, and some responses have
been slow or non-existent!
&lt;/p&gt;
&lt;p&gt;
Here are some extensions that were demoed and had problems. They are all common or
Mozilla recommended (all these have been fixed):
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
FireFTP: Could include malicious code in the welcome method of an FTP server, and
the browser would execute it. Showed a proof of concept sending the contents of win.ini
to a different server, and using BeEf to control client.&lt;/li&gt;
&lt;li&gt;
CoolPreviews: Susceptible to XSS if a data:// URI is used. Showed a remote code execution
when right-clicking on a link and previewing it with CoolPreviews.&lt;/li&gt;
&lt;li&gt;
WizzRSS: HTML and Javascript in the &amp;lt;description&amp;gt; tag of RSS feeds is executed
in the chrome zone. Showed a reverse shell onto the Windows machine from a malicious
users machine.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Extension developers and vendors haven't got a security disclosure process yet - they
don't know how to deal with the issues yet. Some extensions don't even publish an
email address for the author.
&lt;/p&gt;
&lt;p&gt;
Tools:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Firebug&lt;/li&gt;
&lt;li&gt;
MozRepl&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.bindshell.net/tools/beef/"&gt;BeEf&lt;/a&gt; - command console for an attacker
to run script on the client computer.&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=d1f49c3b-5881-4efa-b142-652a5de9592e" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,d1f49c3b-5881-4efa-b142-652a5de9592e.aspx</comments>
      <category>OWASP;Security;Web</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=e186d726-c16e-4399-b503-9321a8a0a515</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,e186d726-c16e-4399-b503-9321a8a0a515.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,e186d726-c16e-4399-b503-9321a8a0a515.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e186d726-c16e-4399-b503-9321a8a0a515</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
With shift to web services, where we are relying on client to secure stuff, we have
to remember not to trust the client.
</p>
        <p>
Gave a methodology for testing web services:
</p>
        <ul>
          <li>
Service discovery:</li>
          <ul>
            <li>
Look for WSDL or similar files that contain service info, using search engines, site
spidering or looking at app behaviour</li>
          </ul>
          <li>
Method discovery:</li>
          <ul>
            <li>
Look inside the WSDL to see what methods are available, or if there isn't one, you
can brute force the webservice with common method names to find ones that exist.</li>
          </ul>
          <li>
OWASP top 10. These still all apply to web service calls, including:</li>
          <ul>
            <li>
Malicious file execution, insecure direct object reference, 
</li>
            <li>
CSRF with AJAX clients</li>
            <li>
Information leakage</li>
            <li>
Broken auth and session mgmt</li>
            <li>
Insecure crypto storage</li>
            <li>
Insecure communications - SSL is important</li>
            <li>
Failure to restrict URL access - protect admin etc web services from anonymous access</li>
          </ul>
          <li>
Web service specific tests:</li>
          <ul>
            <li>
XML issues (external entities, malformed XML, recursive XML, XML entity expansion,
XML attribute blowup, overlarge XML and CDATA injection)</li>
            <ul>
              <li>
Can find out details inside the secure network, and CSRF etc machines in there.</li>
            </ul>
            <li>
WS-Routing issues</li>
          </ul>
          <li>
WS-Security is not a panacea - secures the method integrity and confidentiality, but
doesn't stop bad stuff coming through.</li>
        </ul>
        <p>
Tools shown:
</p>
        <ul>
          <li>
            <a href="http://www.sift.com.au/73/171/sift-web-method-search-tool.htm">SIFT web method
search tool</a> - brute force the web service to find out which methods are supported.</li>
          <li>
            <a href="http://www.foundstone.com/us/resources/proddesc/wsdigger.htm">Foundstone
WS Digger</a> - automate attacks against web services (XSS, SQL, Xpath etc)</li>
          <li>
            <a href="http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project">Webscarab</a> -
to modify XML posted to web services and try connecting to external entities</li>
        </ul>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e186d726-c16e-4399-b503-9321a8a0a515" />
      </body>
      <title>OWASP NZ: Testing Web Services: Nick van Dadelszen, Lateral Security</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,e186d726-c16e-4399-b503-9321a8a0a515.aspx</guid>
      <link>http://pageofwords.com/blog/2009/07/12/OWASPNZTestingWebServicesNickVanDadelszenLateralSecurity.aspx</link>
      <pubDate>Sun, 12 Jul 2009 23:47:27 GMT</pubDate>
      <description>&lt;p&gt;
With shift to web services, where we are relying on client to secure stuff, we have
to remember not to trust the client.
&lt;/p&gt;
&lt;p&gt;
Gave a methodology for testing web services:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Service discovery:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Look for WSDL or similar files that contain service info, using search engines, site
spidering or looking at app behaviour&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Method discovery:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Look inside the WSDL to see what methods are available, or if there isn't one, you
can brute force the webservice with common method names to find ones that exist.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
OWASP top 10. These still all apply to web service calls, including:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Malicious file execution, insecure direct object reference, 
&lt;/li&gt;
&lt;li&gt;
CSRF with AJAX clients&lt;/li&gt;
&lt;li&gt;
Information leakage&lt;/li&gt;
&lt;li&gt;
Broken auth and session mgmt&lt;/li&gt;
&lt;li&gt;
Insecure crypto storage&lt;/li&gt;
&lt;li&gt;
Insecure communications - SSL is important&lt;/li&gt;
&lt;li&gt;
Failure to restrict URL access - protect admin etc web services from anonymous access&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Web service specific tests:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
XML issues (external entities, malformed XML, recursive XML, XML entity expansion,
XML attribute blowup, overlarge XML and CDATA injection)&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Can find out details inside the secure network, and CSRF etc machines in there.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
WS-Routing issues&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
WS-Security is not a panacea - secures the method integrity and confidentiality, but
doesn't stop bad stuff coming through.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Tools shown:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.sift.com.au/73/171/sift-web-method-search-tool.htm"&gt;SIFT web method
search tool&lt;/a&gt; - brute force the web service to find out which methods are supported.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.foundstone.com/us/resources/proddesc/wsdigger.htm"&gt;Foundstone
WS Digger&lt;/a&gt; - automate attacks against web services (XSS, SQL, Xpath etc)&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project"&gt;Webscarab&lt;/a&gt; -
to modify XML posted to web services and try connecting to external entities&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e186d726-c16e-4399-b503-9321a8a0a515" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,e186d726-c16e-4399-b503-9321a8a0a515.aspx</comments>
      <category>OWASP;Security;Web</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=a86714d8-ff21-48c4-8ab8-6ddaf0929b4e</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,a86714d8-ff21-48c4-8ab8-6ddaf0929b4e.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,a86714d8-ff21-48c4-8ab8-6ddaf0929b4e.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a86714d8-ff21-48c4-8ab8-6ddaf0929b4e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>If you don't own the 3 OWASP books, you've failed.</em>
        </p>
        <p>
We're still facing the same vulnerabilities we already have, because we are doing
something wrong. Maybe it's security professionals that are doing something wrong,
by not educating developers properly.
</p>
        <p>
Big security companies still having problems with their websites.
</p>
        <p>
Most vulnerabilities are well known.
</p>
        <p>
Security people don't write code. developers do. They don't "get" security:
</p>
        <ul>
          <li>
Don't fix the root cause 
</li>
          <li>
Don't understand the threat 
</li>
          <li>
Most have never seen a vulnerability exploited 
</li>
        </ul>
        <p>
Sitting down with developers and stepping them through a vulnerability helps show
them the light and they understand and think about vulnerabilities.
</p>
        <p>
Talk today designed to show developers exploits in action.
</p>
        <p>
Tools showed:
</p>
        <ul>
          <li>
            <a href="http://portswigger.net/proxy/">Burp</a> - proxy tool for intercepting requests 
</li>
          <li>
A custom sitemap tool that Insomnia uses 
</li>
          <li>
An MS-SQL Enumeration tool that takes a vulnerable url and pulls out all the DB info
using the master db to enumerate tables</li>
          <li>
            <a href="http://aspxspy.codeplex.com/">ASPX Spy</a> - if you can get this ASP.NET
file up on to a server and run, it provides a UI for playing around with the OS.</li>
          <li>
            <a href="http://sqlmap.sourceforge.net/">SQL Map</a> - an automatic SQL injection
tool - can enumerate the DB, even if the data is not displayed by inferring the state
of the db based on the page output. 
</li>
        </ul>
        <p>
Problems shown:
</p>
        <ul>
          <li>
Robots.txt is not a place to list parts of your site that you don't want people to
know about :) 
</li>
          <li>
Buying -1 quantity of a $1000 book leads to the users credit on the shopping site
increasing by $1000 :) 
</li>
          <li>
XML parsing vulnerability that allows external entities to be referenced in the XML
provided to a web service - which can pull the contents of a file off the server. 
</li>
          <li>
Query string parameters passed to the command interpreter, and used for file names. 
</li>
          <li>
PHP include let's you include PHP source from another web server (looks like you need
to <a href="http://us3.php.net/manual/en/function.include.php">disable URL fopen wrappers</a>). 
</li>
          <li>
Only securing GET requests to an admin directory. 
</li>
          <li>
Showed a fake version of the CCIP website with multiple problems.</li>
          <li>
Admin interface for a website is exposed to the internet. 
</li>
        </ul>
        <p>
Open questions:
</p>
        <ul>
          <li>
Who owns server configuration? Architects, developers, system administrators? If server
or framework config changes, then we're insecure.</li>
          <li>
Is it security professionals job to make sure problems are corrected?</li>
        </ul>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=a86714d8-ff21-48c4-8ab8-6ddaf0929b4e" />
      </body>
      <title>OWASP NZ: Vulnerabilities in Action: Brett Moore, Insomnia Security</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,a86714d8-ff21-48c4-8ab8-6ddaf0929b4e.aspx</guid>
      <link>http://pageofwords.com/blog/2009/07/12/OWASPNZVulnerabilitiesInActionBrettMooreInsomniaSecurity.aspx</link>
      <pubDate>Sun, 12 Jul 2009 22:37:46 GMT</pubDate>
      <description>&lt;p&gt;
&lt;em&gt;If you don't own the 3 OWASP books, you've failed.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
We're still facing the same vulnerabilities we already have, because we are doing
something wrong. Maybe it's security professionals that are doing something wrong,
by not educating developers properly.
&lt;/p&gt;
&lt;p&gt;
Big security companies still having problems with their websites.
&lt;/p&gt;
&lt;p&gt;
Most vulnerabilities are well known.
&lt;/p&gt;
&lt;p&gt;
Security people don't write code. developers do. They don't "get" security:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Don't fix the root cause 
&lt;/li&gt;
&lt;li&gt;
Don't understand the threat 
&lt;/li&gt;
&lt;li&gt;
Most have never seen a vulnerability exploited 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Sitting down with developers and stepping them through a vulnerability helps show
them the light and they understand and think about vulnerabilities.
&lt;/p&gt;
&lt;p&gt;
Talk today designed to show developers exploits in action.
&lt;/p&gt;
&lt;p&gt;
Tools showed:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://portswigger.net/proxy/"&gt;Burp&lt;/a&gt; - proxy tool for intercepting requests 
&lt;/li&gt;
&lt;li&gt;
A custom sitemap tool that Insomnia uses 
&lt;/li&gt;
&lt;li&gt;
An MS-SQL Enumeration tool that takes a vulnerable url and pulls out all the DB info
using the master db to enumerate tables&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://aspxspy.codeplex.com/"&gt;ASPX Spy&lt;/a&gt; - if you can get this ASP.NET
file up on to a server and run, it provides a UI for playing around with the OS.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://sqlmap.sourceforge.net/"&gt;SQL Map&lt;/a&gt; - an automatic SQL injection
tool - can enumerate the DB, even if the data is not displayed by inferring the state
of the db based on the page output. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Problems shown:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Robots.txt is not a place to list parts of your site that you don't want people to
know about :) 
&lt;/li&gt;
&lt;li&gt;
Buying -1 quantity of a $1000 book leads to the users credit on the shopping site
increasing by $1000 :) 
&lt;/li&gt;
&lt;li&gt;
XML parsing vulnerability that allows external entities to be referenced in the XML
provided to a web service - which can pull the contents of a file off the server. 
&lt;/li&gt;
&lt;li&gt;
Query string parameters passed to the command interpreter, and used for file names. 
&lt;/li&gt;
&lt;li&gt;
PHP include let's you include PHP source from another web server (looks like you need
to &lt;a href="http://us3.php.net/manual/en/function.include.php"&gt;disable URL fopen wrappers&lt;/a&gt;). 
&lt;/li&gt;
&lt;li&gt;
Only securing GET requests to an admin directory. 
&lt;/li&gt;
&lt;li&gt;
Showed a fake version of the CCIP website with multiple problems.&lt;/li&gt;
&lt;li&gt;
Admin interface for a website is exposed to the internet. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Open questions:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Who owns server configuration? Architects, developers, system administrators? If server
or framework config changes, then we're insecure.&lt;/li&gt;
&lt;li&gt;
Is it security professionals job to make sure problems are corrected?&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=a86714d8-ff21-48c4-8ab8-6ddaf0929b4e" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,a86714d8-ff21-48c4-8ab8-6ddaf0929b4e.aspx</comments>
      <category>OWASP;Security;Web</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=d09742c2-7e46-463c-9712-a5118698f486</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,d09742c2-7e46-463c-9712-a5118698f486.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,d09742c2-7e46-463c-9712-a5118698f486.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d09742c2-7e46-463c-9712-a5118698f486</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Paul raised the question: "Is internet security getting better or worse?"
</p>
        <p>
By 2004 we had bought lots of security products, and now only port 80 is the only
open port (default DENY). Hackers started hacking web apps instead.
</p>
        <p>
Classic ASP was easy to hack. until in 2005 when vendors started releasing safer technology
frameworks (2005? We were using it in 2002)
</p>
        <p>
Note: ASP.NET doesn't have XSS protection built in, unless you leave ValidateRequest
on (which no-one does), as controls only sporadically escape their output.
</p>
        <p>
Paul looked at Security-Assessment's old pen-test projects and compared their vulnerabilities
to those run recently.
</p>
        <p>
          <em>"In 2003-2005, web application developers were F$%^&amp;* bad"</em>
        </p>
        <p>
"<em>Developers fail at anything to do with files"</em></p>
        <p>
But the situations hasn't got much better lately. Admin sections are still accessible,
SQL injection still found, but less common, file uploads allowing directory traversal.
</p>
        <p>
When developers use framework security controls, they're okay. If they use custom
security code, they mess it up.
</p>
        <p>
          <em>"Less vulnerabilities in 2009 resulted in a shell"</em>
        </p>
        <p>
          <em>"Security only works flawlessly when it's already implemented in the framework"</em> -
when developers build their own code, they normally mess it up.
</p>
        <p>
          <strong>Summary: The internet is getting more secure, but we're not there yet! Only
need one bug to get in to a system.</strong>
        </p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=d09742c2-7e46-463c-9712-a5118698f486" />
      </body>
      <title>OWASP NZ: Insecurity and the Internet: Paul Craig &amp;ndash; Security-Assessment.com</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,d09742c2-7e46-463c-9712-a5118698f486.aspx</guid>
      <link>http://pageofwords.com/blog/2009/07/12/OWASPNZInsecurityAndTheInternetPaulCraigNdashSecurityAssessmentcom.aspx</link>
      <pubDate>Sun, 12 Jul 2009 21:44:40 GMT</pubDate>
      <description>&lt;p&gt;
Paul raised the question: "Is internet security getting better or worse?"
&lt;/p&gt;
&lt;p&gt;
By 2004 we had bought lots of security products, and now only port 80 is the only
open port (default DENY). Hackers started hacking web apps instead.
&lt;/p&gt;
&lt;p&gt;
Classic ASP was easy to hack. until in 2005 when vendors started releasing safer technology
frameworks (2005? We were using it in 2002)
&lt;/p&gt;
&lt;p&gt;
Note: ASP.NET doesn't have XSS protection built in, unless you leave ValidateRequest
on (which no-one does), as controls only sporadically escape their output.
&lt;/p&gt;
&lt;p&gt;
Paul looked at Security-Assessment's old pen-test projects and compared their vulnerabilities
to those run recently.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;"In 2003-2005, web application developers were F$%^&amp;amp;* bad"&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
"&lt;em&gt;Developers fail at anything to do with files"&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
But the situations hasn't got much better lately. Admin sections are still accessible,
SQL injection still found, but less common, file uploads allowing directory traversal.
&lt;/p&gt;
&lt;p&gt;
When developers use framework security controls, they're okay. If they use custom
security code, they mess it up.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;"Less vulnerabilities in 2009 resulted in a shell"&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;"Security only works flawlessly when it's already implemented in the framework"&lt;/em&gt; -
when developers build their own code, they normally mess it up.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Summary: The internet is getting more secure, but we're not there yet! Only
need one bug to get in to a system.&lt;/strong&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=d09742c2-7e46-463c-9712-a5118698f486" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,d09742c2-7e46-463c-9712-a5118698f486.aspx</comments>
      <category>OWASP;Security;Web</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=7875350e-5add-4c5f-be0e-027c3c3772d8</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,7875350e-5add-4c5f-be0e-027c3c3772d8.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,7875350e-5add-4c5f-be0e-027c3c3772d8.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=7875350e-5add-4c5f-be0e-027c3c3772d8</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I visited Napier at lunchtime today to present at the Hawkes Bay .NET User Group.
</p>
        <p>
The presentation was a mixture of my earlier <a href="http://pageofwords.com/blog/2008/12/17/EllerslieUserGroupOvercomingYourWebInsecurity.aspx">web
security talk</a> and the talk I gave recently on the Anti-XSS library which helps
when you need to <a href="http://pageofwords.com/blog/2009/02/25/WhatIsEncodingCrossSiteScriptingAndTheAntiXSSEncodingMethods.aspx">encode
untrusted data.</a></p>
        <p>
        </p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:FF7EC618-8FBE-49a5-B908-2339AF2ABCDF:acf88951-71d2-4835-93d5-c7eada3ef5d7" class="wlWriterEditableSmartContent">
          <div>Download File - <a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WebSecurityNapier_14276/tmpB8E0.zip" target="_self">Presentation</a></div>
        </div>
        <ul>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=051ee83c-5ccf-48ed-8463-02f56a6bfc09">The
Microsoft Anti-XSS Library</a> (use instead of HttpUtility.Encode) 
</li>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=051ee83c-5ccf-48ed-8463-02f56a6bfc09">Security
Runtime Engine</a> - automatically encode ASP.NET control properties</li>
          <li>
            <a href="http://www.asp.net/downloads/starter-kits/classifieds/">The Classifieds web
site starter kit</a>
          </li>
          <li>
            <a href="http://blogs.msdn.com/sfaust/archive/2008/09/02/which-asp-net-controls-automatically-encodes.aspx">Which
ASP.NET Controls Automatically Encode?</a>
          </li>
          <li>
            <a href="http://blog.guya.net/2008/10/07/malicious-camera-spying-using-clickjacking/">Clickjacking
video</a>
          </li>
          <li>
Framebusting: 
<br /><a href="http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx">http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx</a></li>
          <li>
OWASP - The Open Web Application Security Project - <a href="http://www.owasp.org">http://www.owasp.org</a></li>
        </ul>
        <p>
        </p>
        <p>
Subscribe to my blog: <a href="http://pageofwords.com">http://pageofwords.com</a></p>
        <p>
Cheers!
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=7875350e-5add-4c5f-be0e-027c3c3772d8" />
      </body>
      <title>Web Security &amp;ndash; Napier</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,7875350e-5add-4c5f-be0e-027c3c3772d8.aspx</guid>
      <link>http://pageofwords.com/blog/2009/05/28/WebSecurityNdashNapier.aspx</link>
      <pubDate>Thu, 28 May 2009 10:56:37 GMT</pubDate>
      <description>&lt;p&gt;
I visited Napier at lunchtime today to present at the Hawkes Bay .NET User Group.
&lt;/p&gt;
&lt;p&gt;
The presentation was a mixture of my earlier &lt;a href="http://pageofwords.com/blog/2008/12/17/EllerslieUserGroupOvercomingYourWebInsecurity.aspx"&gt;web
security talk&lt;/a&gt; and the talk I gave recently on the Anti-XSS library which helps
when you need to &lt;a href="http://pageofwords.com/blog/2009/02/25/WhatIsEncodingCrossSiteScriptingAndTheAntiXSSEncodingMethods.aspx"&gt;encode
untrusted data.&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:FF7EC618-8FBE-49a5-B908-2339AF2ABCDF:acf88951-71d2-4835-93d5-c7eada3ef5d7" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;Download File - &lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WebSecurityNapier_14276/tmpB8E0.zip" target="_self"&gt;Presentation&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=051ee83c-5ccf-48ed-8463-02f56a6bfc09"&gt;The
Microsoft Anti-XSS Library&lt;/a&gt; (use instead of HttpUtility.Encode) 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=051ee83c-5ccf-48ed-8463-02f56a6bfc09"&gt;Security
Runtime Engine&lt;/a&gt; - automatically encode ASP.NET control properties&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.asp.net/downloads/starter-kits/classifieds/"&gt;The Classifieds web
site starter kit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blogs.msdn.com/sfaust/archive/2008/09/02/which-asp-net-controls-automatically-encodes.aspx"&gt;Which
ASP.NET Controls Automatically Encode?&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blog.guya.net/2008/10/07/malicious-camera-spying-using-clickjacking/"&gt;Clickjacking
video&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
Framebusting: 
&lt;br /&gt;
&lt;a href="http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx"&gt;http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
OWASP - The Open Web Application Security Project - &lt;a href="http://www.owasp.org"&gt;http://www.owasp.org&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Subscribe to my blog: &lt;a href="http://pageofwords.com"&gt;http://pageofwords.com&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Cheers!
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=7875350e-5add-4c5f-be0e-027c3c3772d8" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,7875350e-5add-4c5f-be0e-027c3c3772d8.aspx</comments>
      <category>Security;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=e52a839d-b80c-4044-aa4a-a44e966f3f79</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,e52a839d-b80c-4044-aa4a-a44e966f3f79.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,e52a839d-b80c-4044-aa4a-a44e966f3f79.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e52a839d-b80c-4044-aa4a-a44e966f3f79</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
When is it not safe to load an XML file into an XmlDocument object?
</p>
        <p>
Any time the source is untrusted, it turns out:
</p>
        <p>
          <a href="http://blogs.msdn.com/tomholl/archive/2009/05/21/protecting-against-xml-entity-expansion-attacks.aspx">Tom
Hollander: Protecting against XML Entity Expansion attacks</a>
        </p>
        <p>
That's one I haven't heard of before, and shows why every input from an untrusted
source should be treated with care.
</p>
        <p>
It reminds me of the zip expansion attacks that used to break mail servers 8 or so
years ago:
</p>
        <blockquote>
          <p>
            <em>Zip expansion attack. A large uniform file (for example 1 Gbyte of Zeros) is zipped
and e-mail. AV or content filtering products attempt to unzip the attachment for checking,
but are unable to do so because of lack of disc space. </em>[<a href="http://www.ecommnet.co.uk/products/mxtreme/emailsecurityThreats.asp">ecommnet</a>]
</p>
        </blockquote>
        <p>
The old expanding file trick. What will they think of next?
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e52a839d-b80c-4044-aa4a-a44e966f3f79" />
      </body>
      <title>Unsafe XmlDocument?</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,e52a839d-b80c-4044-aa4a-a44e966f3f79.aspx</guid>
      <link>http://pageofwords.com/blog/2009/05/22/UnsafeXmlDocument.aspx</link>
      <pubDate>Fri, 22 May 2009 08:54:43 GMT</pubDate>
      <description>&lt;p&gt;
When is it not safe to load an XML file into an XmlDocument object?
&lt;/p&gt;
&lt;p&gt;
Any time the source is untrusted, it turns out:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/tomholl/archive/2009/05/21/protecting-against-xml-entity-expansion-attacks.aspx"&gt;Tom
Hollander: Protecting against XML Entity Expansion attacks&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
That's one I haven't heard of before, and shows why every input from an untrusted
source should be treated with care.
&lt;/p&gt;
&lt;p&gt;
It reminds me of the zip expansion attacks that used to break mail servers 8 or so
years ago:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;Zip expansion attack. A large uniform file (for example 1 Gbyte of Zeros) is zipped
and e-mail. AV or content filtering products attempt to unzip the attachment for checking,
but are unable to do so because of lack of disc space. &lt;/em&gt;[&lt;a href="http://www.ecommnet.co.uk/products/mxtreme/emailsecurityThreats.asp"&gt;ecommnet&lt;/a&gt;]
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
The old expanding file trick. What will they think of next?
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e52a839d-b80c-4044-aa4a-a44e966f3f79" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,e52a839d-b80c-4044-aa4a-a44e966f3f79.aspx</comments>
      <category>.NET;Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=4dd3d79c-7169-401e-8ecd-71f75c4dd2db</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,4dd3d79c-7169-401e-8ecd-71f75c4dd2db.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,4dd3d79c-7169-401e-8ecd-71f75c4dd2db.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=4dd3d79c-7169-401e-8ecd-71f75c4dd2db</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <title>What is encoding? Cross site scripting and the AntiXSS encoding methods</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,4dd3d79c-7169-401e-8ecd-71f75c4dd2db.aspx</guid>
      <link>http://pageofwords.com/blog/2009/02/25/WhatIsEncodingCrossSiteScriptingAndTheAntiXSSEncodingMethods.aspx</link>
      <pubDate>Wed, 25 Feb 2009 03:57:16 GMT</pubDate>
      <description>&lt;p&gt;
Encoding is &amp;quot;the process of transforming information from one format into another&amp;quot;
[&lt;a href="http://en.wikipedia.org/w/index.php?title=Encoding&amp;amp;oldid=272528119"&gt;Wikipedia&lt;/a&gt;]
&lt;/p&gt;
&lt;p&gt;
In the web development world, when we talk about encoding text, we are normally talking
about taking some input text and making it &lt;em&gt;appropriate to use&lt;/em&gt; in a &lt;em&gt;given
context&lt;/em&gt;. For example, taking the user's first name and last name, and making
it safe to put in a &amp;lt;b&amp;gt; tag within an html page.
&lt;/p&gt;
&lt;p&gt;
We care about encoding most when we take input that we don't trust from our users
- if we ever display that input we have to be careful to remove any characters that
may interfere with the display of our web pages, cause javascript to run, or allow
other malicious actions.
&lt;/p&gt;
&lt;p&gt;
This article will help you understand what encoding is, why you need to do it and
how that helps prevent cross-site scripting, and give a little introduction to the &lt;a href="http://www.codeplex.com/AntiXSS"&gt;AntiXSS&lt;/a&gt; library.
&lt;/p&gt;
&lt;h2&gt;A bold example
&lt;/h2&gt;
&lt;p&gt;
As a running example, let's say we are letting the user enter anything they want for
their name - in an input box like this on our website:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="58" alt="Text box to collect name from the user" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_thumb.png" width="289" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
We then take the text they enter and store it in our database. Later on when we display
it on the web page, we wrap the text in bold tags so that it stands out:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="51" alt="Welcome to the website, Kirk!" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_thumb_1.png" width="225" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
In ASP.NET one way of doing this would be to put an ASP.NET label between &amp;lt;b&amp;gt;
tags:
&lt;/p&gt;
&lt;pre class="code"&gt;Welcome to the website, &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;b&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Label &lt;/span&gt;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;NameLabel&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;b&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;!&lt;/pre&gt;
&lt;p&gt;
...and then in the code behind, take the name from our database and assign it to the
Text property:
&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;User &lt;/span&gt;user = GetFromDatabase();
NameLabel.Text = user.Name;&lt;/pre&gt;
&lt;h2&gt;Trust no-one
&lt;/h2&gt;
&lt;p&gt;
The problem is, we've received this name directly from your user (who of course, you
shouldn't trust), and we've stored it in a column in our database (which we now can't
trust), and now we can't safely display it on our website without sanitising it or
making it trust-worthy.
&lt;/p&gt;
&lt;p&gt;
The number one lesson I try to give in my presentations on web security is &lt;em&gt;&amp;quot;Don't
trust...&amp;quot;&lt;/em&gt;. You can't trust your user, you can't trust your employees, your
students, or even your mother. There is no such thing as &amp;quot;safe input&amp;quot; that
you receive over the Internet, everything you receive is suspect. 
&lt;/p&gt;
&lt;p&gt;
(Even people who are otherwise trustworthy might not be in control of their faculties
if they have spyware or are virus-infected)
&lt;/p&gt;
&lt;p&gt;
Everything is fine if the user enters only ascii characters:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="115" alt="User enters " src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_thumb_2.png" width="287" border="0" safe?="safe?" is="is" output="output" jackson?,="jackson?," kirk="kirk" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
But what happens if the user enters some html into the input box?
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="110" alt="The user enters html, the page layout changes." src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_thumb_3.png" width="286" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The user is now able to change how our page looks! Indeed, they can inject HTML, script
or other content directly into pages on our website!
&lt;/p&gt;
&lt;p&gt;
This is known as Cross-site scripting, or XSS, and is the bane of our existence as
web developers.
&lt;/p&gt;
&lt;h2&gt;What went wrong?
&lt;/h2&gt;
&lt;p&gt;
The ASP.NET label outputs the Text &lt;em&gt;directly&lt;/em&gt; into the HTML output of the page:
&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;p&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &lt;/span&gt;Welcome
to the website, &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;b&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;span &lt;/span&gt;&lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;NameLabel&amp;quot;&amp;gt;&lt;/span&gt;Kirk &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;b&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;i&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Jackson&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;i&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;span&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;b&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;! &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;p&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
The problem here is that the ASP.NET label is not encoding the text before outputting
it. The text is not &lt;em&gt;appropriate&lt;/em&gt; to use in an &lt;em&gt;HTML context&lt;/em&gt;, as it
contains characters that have meaning in HTML (namely the characters making the &amp;lt;/b&amp;gt;
and &amp;lt;i&amp;gt; tags).
&lt;/p&gt;
&lt;p&gt;
To make the user's name safe to use in an HTML context, we need to encode the inappropriate
text to be safe in an HTML context:
&lt;/p&gt;
&lt;pre class="code"&gt;Kirk &lt;span style="color: red"&gt;&amp;amp;lt;&lt;/span&gt;/b&amp;gt;&lt;span style="color: red"&gt;&amp;amp;lt;&lt;/span&gt;i&amp;gt;Jackson&lt;span style="color: red"&gt;&amp;amp;lt;&lt;/span&gt;/i&amp;gt;&lt;/pre&gt;
&lt;h2&gt;HTML Encoding
&lt;/h2&gt;
&lt;p&gt;
HTML encoding is turning a string into a safe block of text for insertion in an HTML
web page. 
&lt;/p&gt;
&lt;p&gt;
This means it should not use any of the special characters that are used to mark the
beginning or end of tags (&amp;lt; and &amp;gt;), attribute values (&amp;quot;) or the ampersand
character on it's own (&amp;amp;). If those characters are left in the string, then they
could be used to start or stop HTML tags and change the behaviour of our page.
&lt;/p&gt;
&lt;p&gt;
To remove these characters, HTML encoding requires them to be turned into character
entity references, or numeric entity references. This stops them from being treated
as special characters for formatting an HTML page, and just treats them as a character
to be displayed.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;table cellspacing="0" cellpadding="2" border="1"&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th valign="top"&gt;
Original character&lt;/th&gt;
&lt;th valign="top"&gt;
Character Entity Reference&lt;/th&gt;
&lt;th valign="top"&gt;
Numeric Entity Reference&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&amp;lt; (less-than sign)&lt;/td&gt;
&lt;td valign="top"&gt;
&amp;amp;lt;&lt;/td&gt;
&lt;td valign="top"&gt;
&amp;amp;#60;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&amp;gt; (greater-than sign)&lt;/td&gt;
&lt;td valign="top"&gt;
&amp;amp;gt;&lt;/td&gt;
&lt;td valign="top"&gt;
&amp;amp;#62;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&amp;quot; (double quote)&lt;/td&gt;
&lt;td valign="top"&gt;
&amp;amp;quot;&lt;/td&gt;
&lt;td valign="top"&gt;
&amp;amp;#34;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&amp;amp; (ampersand)&lt;/td&gt;
&lt;td valign="top"&gt;
&amp;amp;amp;&lt;/td&gt;
&lt;td valign="top"&gt;
&amp;amp;#38;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
The above table shows a few examples of how to encode special characters. For a more
complete reference, see &lt;a href="http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references"&gt;Wikipedia&lt;/a&gt; or &lt;a href="http://www.w3.org/TR/html4/sgml/entities.html"&gt;W3C&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Note that since the ampersand character is used to start an encoded character sequence,
it can't be used on it's own as a regular character. This is why ampersands should
be encoded as &amp;amp;amp; in HTML.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Once the users name is encoded, it will then be in the HTML as &lt;span style="color: red"&gt;&amp;amp;lt;&lt;/span&gt;i&amp;gt;
instead of &amp;lt;i&amp;gt;, which means that in the above example, italic mode won't turn
on:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="113" alt="The users text is now encoded correctly." src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_thumb_4.png" width="358" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The screenshot above looks a little weird, but the page now displays the text exactly
as the user typed it in, without treating the users input as special HTML markup.
&lt;/p&gt;
&lt;h2&gt;Attribute Encoding
&lt;/h2&gt;
&lt;p&gt;
Attribute encoding is turning a string into a safe block of text for use within an
attribute of an HTML tag.
&lt;/p&gt;
&lt;p&gt;
Attributes are the name/value pairs on a tag node in HTML (or SGML and XML, for that
matter). For example, in the following HTML, the &lt;em&gt;a&lt;/em&gt; tag has a &lt;em&gt;title &lt;/em&gt;attribute:
&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;a &lt;/span&gt;&lt;span style="color: red"&gt;href&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;foo.html&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;test&amp;quot;&amp;gt;&lt;/span&gt;thing&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;a&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_20.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="81" alt="The title tag is displayed as a tooltip" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_thumb_9.png" width="89" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The text inside the title attribute is used to create a tool tip when the mouse pointer
hovers over the hyperlink.
&lt;/p&gt;
&lt;p&gt;
This HTML contains an &lt;em&gt;a&lt;/em&gt; tag (an anchor tag), which has two attributes set: &lt;em&gt;href &lt;/em&gt;and &lt;em&gt;title&lt;/em&gt;.
The &lt;em&gt;a&lt;/em&gt; tag also contains some HTML within it: the text 'thing'. The contained
text must be HTML encoded if you only want text within the &lt;em&gt;a &lt;/em&gt;tag, and the
two attributes must be attribute encoded.
&lt;/p&gt;
&lt;p&gt;
At a simplistic level, text is valid inside an attribute as long as it doesn't contain
double quotes (&amp;quot;), ampersands (&amp;amp;) or less-than symbols (&amp;lt;), as the double
quote would prematurely end the attribute, and the other two characters must be encoded
anywhere they are used within an HTML document (except when creating tags).
&lt;/p&gt;
&lt;p&gt;
To extend our earlier example, imagine the users name is used as the tooltip of a
link, to pop up before they follow the link. If we naively output the users name as
a title attribute without encoding it, the user could inject some additional behaviour
into our page. e.g.
&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;a &lt;/span&gt;&lt;span style="color: red"&gt;href&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;foo.html&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255,238,98); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"&gt;&amp;lt;%&lt;/span&gt;=
User.Name &lt;span style="background: rgb(255,238,98); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;&amp;gt;&lt;/span&gt;thing&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;a&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
If the user enters something malicious, for example by entering a double-quote followed
by some javascript, then they have managed to inject extra HTML or javascript behaviour
into our site:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_24.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="155" alt="User enters script into Name field" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_thumb_11.png" width="309" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The hover for the hyperlink looks okay, but when the user clicks the link, malicious
javacript can run:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_26.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="189" alt="Malicious javascript running" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_thumb_12.png" width="213" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
This is because the HTML that we have sent to the clients browser actually contains
an onclick attribute that we didn't intend:
&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;a &lt;/span&gt;&lt;span style="color: red"&gt;href&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;foo.html&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Kirk&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;onclick&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;alert('Hi')&amp;quot;&amp;gt;&lt;/span&gt;thing&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;a&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Encoding the users data before sending it to the browser would have protected us from
this, and then the HTML sent would look like this:
&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;a &lt;/span&gt;&lt;span style="color: red"&gt;href&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;foo.html&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Kirk&amp;amp;quot;
onclick=&amp;amp;quot;alert('Hi')&amp;quot;&amp;gt;&lt;/span&gt;thing&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;a&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Which correctly displays exactly what the user entered:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_22.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="83" alt="Tooltip now shows complete text entered" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_thumb_10.png" width="191" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;h2&gt;URL Encoding
&lt;/h2&gt;
&lt;p&gt;
URL encoding is turning a string into a safe block of text for appending on the query
string of a URL.
&lt;/p&gt;
&lt;p&gt;
The original specification for HTTP URL's (&lt;a href="http://www.rfc-editor.org/rfc/rfc1738.txt"&gt;RFC
1738&lt;/a&gt;) specifies that URLs should only include certain characters, and all others
must be encoded. This is similar to the case of HTML encoding, but there is a much
smaller set of characters allowed, and the way you encode them is different.
&lt;/p&gt;
&lt;p&gt;
To encode characters to append to a URL, you use a percentage symbol, followed by
the two-digit hex number representing that character. For example:
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;table cellspacing="0" cellpadding="2" width="324" border="1"&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th valign="top"&gt;
Original character&lt;/th&gt;
&lt;th valign="top"&gt;
Character Entity Reference&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
space&lt;/td&gt;
&lt;td valign="top"&gt;
%20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
/ (forward slash)&lt;/td&gt;
&lt;td valign="top"&gt;
%2F&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&amp;quot; (double quote)&lt;/td&gt;
&lt;td valign="top"&gt;
%22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
? (question mark)&lt;/td&gt;
&lt;td valign="top"&gt;
%3F&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
The above table shows a few examples of how to URL encode special characters. For
a more complete reference, see Brian Wilson's &lt;a href="http://www.blooberry.com/indexdot/html/topics/urlencoding.htm"&gt;URL
Encoding&lt;/a&gt; page.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
We need to encode strings before appending them to a URL, to make sure that untrusted
input is not able to change the URL.
&lt;/p&gt;
&lt;p&gt;
For example, if our page above constructed a URL to search Google for the name of
the user entered into the website, it could look like this:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="96" alt="Construct a search url by joining two strings together" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_thumb_6.png" width="452" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
When the user clicks the link, they will search Google for their name.
&lt;/p&gt;
&lt;p&gt;
Here the naive code is just constructing a url by joining the two strings together:
&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;User &lt;/span&gt;user = GetFromDatabase(); &lt;span style="color: blue"&gt;string &lt;/span&gt;url
= &lt;span style="color: rgb(163,21,21)"&gt;&amp;quot;http://www.google.com/search?q=&amp;quot; &lt;/span&gt;+
user.Name;&lt;/pre&gt;
&lt;p&gt;
But if a name with spaces is entered, then we're generating an invalid URL:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_16.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="91" alt="Create a url with spaces in it" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_thumb_7.png" width="505" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The URL is invalid because it contains an illegal character - a space that should
be encoded as %20.
&lt;/p&gt;
&lt;p&gt;
We could also be opening our users up to cross-site scripting bugs, because we are
effectively letting them create any url they want. For example:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_18.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="91" alt="Create a url with ampersands in it" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/WhatisencodingCrosssitescriptingandtheAn_128B5/image_thumb_8.png" width="505" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Here we are appending the ampersand (&amp;amp;) that the user entered directly to the
end of the url, so rather than their text being passed to the server as the &amp;quot;q&amp;quot;
parameter, we're letting them add other query string parameters (in this case, the
&amp;quot;I'm feeling lucky!&amp;quot; button). The solution in this case is to encode the
ampersand as %26.
&lt;/p&gt;
&lt;h2&gt;The AntiXSS library
&lt;/h2&gt;
&lt;p&gt;
The &lt;a href="http://www.codeplex.com/AntiXSS"&gt;AntiXSS library&lt;/a&gt; (currently at version
3.0 beta) has been built by the &lt;a href="http://blogs.msdn.com/ace_team/"&gt;&lt;strike&gt;Microsoft
ACE Security and Performance Team&lt;/strike&gt;&lt;/a&gt; [ooops! By the &lt;a href="http://blogs.msdn.com/cisg/"&gt;Connected
Information Security Group&lt;/a&gt;, sorry!]
&lt;/p&gt;
&lt;p&gt;
The library provides two related functions:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Encoding methods to make text safe for a variety of contexts 
&lt;/li&gt;
&lt;li&gt;
An HttpHandler to automatically encode your ASP.NET controls 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I'll cover the Security Runtime Engine HttpHandler in another post.
&lt;/p&gt;
&lt;p&gt;
The encoding methods have been built using more robust and secure coding practices
than the existing methods in the HttpUtility class of the .NET framework, so you should
use them in preference when encoding your data.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: rgb(43,145,175)"&gt;AntiXss 
&lt;br /&gt;
&lt;/span&gt;{ 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public static string &lt;/span&gt;HtmlAttributeEncode(&lt;span style="color: blue"&gt;string &lt;/span&gt;input); 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public static string &lt;/span&gt;HtmlEncode(&lt;span style="color: blue"&gt;string &lt;/span&gt;input); 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public static string &lt;/span&gt;JavaScriptEncode(&lt;span style="color: blue"&gt;string &lt;/span&gt;input); 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public static string &lt;/span&gt;UrlEncode(&lt;span style="color: blue"&gt;string &lt;/span&gt;input); 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public static string &lt;/span&gt;VisualBasicScriptEncode(&lt;span style="color: blue"&gt;string &lt;/span&gt;input); 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public static string &lt;/span&gt;XmlAttributeEncode(&lt;span style="color: blue"&gt;string &lt;/span&gt;input); 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public static string &lt;/span&gt;XmlEncode(&lt;span style="color: blue"&gt;string &lt;/span&gt;input); 
&lt;br /&gt;
}
&lt;/p&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
You need to decide which &lt;em&gt;context &lt;/em&gt;you're outputting text, and then choose
the appropriate method to encode the text.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HtmlEncode &lt;/strong&gt;- use for all HTML output, except for when you're adding
text inside an attribute of a tag (e.g. use for &amp;lt;b&amp;gt;...&amp;lt;/b&amp;gt;) 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HtmlAttributeEncode &lt;/strong&gt;- use for text that will appear inside attributes
of tags (e.g. &amp;lt;a title=&amp;quot;...&amp;quot;&amp;gt;) 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UrlEncode &lt;/strong&gt;- use for text that you are appending as a value in a url
query string (e.g. &lt;a href="http://google.com/search?q"&gt;http://google.com/search?q&lt;/a&gt;=...) 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JavascriptEncode &lt;/strong&gt;- use when you want to put the string into a javascript
variable (e.g. var foo = '...'). This method will also create the surrounding quotes. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VisualBasicScriptEncode &lt;/strong&gt;- use if you're unlucky enough to be creating
pages with VBScript on them 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;XmlEncode, XmlAttributeEncode&lt;/strong&gt; - the XML equivalents of the above
HTML methods 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
To use inline in your ASPX page, you can call the library methods directly:
&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;a &lt;/span&gt;&lt;span style="color: red"&gt;href&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;foo.html&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255,238,98); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"&gt;&amp;lt;%&lt;/span&gt;=
HttpUtility.HtmlAttributeEncode(User.Name) &lt;span style="background: rgb(255,238,98); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;&amp;gt;&lt;/span&gt;thing&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;a&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
To use from your code-behind, decide whether your control outputs it's content as
an attribute or in an html context, and then call the appropriate method:
&lt;/p&gt;
&lt;pre class="code"&gt;Label1.Text = &lt;span style="color: rgb(43,145,175)"&gt;AntiXss&lt;/span&gt;.HtmlEncode(User.Name);&lt;/pre&gt;
&lt;p&gt;
Deciding which context you're in and which encoding method to use is a major annoyance,
so be sure to look at the Security Runtime Engine which does it for you. I'll write
more about that in a future blog post, so please &lt;a href="http://feeds2.feedburner.com/pageofwords"&gt;subscribe
to my RSS&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Hopefully this article has helped you understand what encoding is; why you need to
encode untrusted input and how that helps prevent cross-site scripting; and has given
a little intro to the AntiXSS library.
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=4dd3d79c-7169-401e-8ecd-71f75c4dd2db" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,4dd3d79c-7169-401e-8ecd-71f75c4dd2db.aspx</comments>
      <category>AntiXSS;Security;Web</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=9c6955e2-5513-4d52-81b6-505340468b15</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,9c6955e2-5513-4d52-81b6-505340468b15.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,9c6955e2-5513-4d52-81b6-505340468b15.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9c6955e2-5513-4d52-81b6-505340468b15</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'll post the slides from my AntiXSS talk later, once I've cleaned them up. In the
meantime, here's a couple of links:
</p>
        <ul>
          <li>
            <a href="http://www.codeplex.com/AntiXSS">AntiXSS</a> library (including the Security
Runtime Engine)</li>
          <li>
            <a href="http://www.codeplex.com/AntiXSS/WorkItem/View.aspx?WorkItemId=9023 ">MarkAntiXSSOutput</a> flag
for the SRE</li>
          <li>
            <a href="http://ha.ckers.org/xss.html">XSS (Cross Site Scripting) Cheat Sheet</a> -
here's some examples of places you can inject script into HTML to get around filters
that people write</li>
          <li>
List of <a href="http://blogs.msdn.com/sfaust/archive/2008/09/02/which-asp-net-controls-automatically-encodes.aspx">ASP.NET
controls that need encoding</a></li>
        </ul>
        <p>
I will post the slides later.
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=9c6955e2-5513-4d52-81b6-505340468b15" />
      </body>
      <title>XSS Cheat Sheet and AntiXSS links</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,9c6955e2-5513-4d52-81b6-505340468b15.aspx</guid>
      <link>http://pageofwords.com/blog/2009/02/18/XSSCheatSheetAndAntiXSSLinks.aspx</link>
      <pubDate>Wed, 18 Feb 2009 09:20:27 GMT</pubDate>
      <description>&lt;p&gt;
I'll post the slides from my AntiXSS talk later, once I've cleaned them up. In the
meantime, here's a couple of links:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.codeplex.com/AntiXSS"&gt;AntiXSS&lt;/a&gt; library (including the Security
Runtime Engine)&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.codeplex.com/AntiXSS/WorkItem/View.aspx?WorkItemId=9023 "&gt;MarkAntiXSSOutput&lt;/a&gt; flag
for the SRE&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://ha.ckers.org/xss.html"&gt;XSS (Cross Site Scripting) Cheat Sheet&lt;/a&gt; -
here's some examples of places you can inject script into HTML to get around filters
that people write&lt;/li&gt;
&lt;li&gt;
List of &lt;a href="http://blogs.msdn.com/sfaust/archive/2008/09/02/which-asp-net-controls-automatically-encodes.aspx"&gt;ASP.NET
controls that need encoding&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I will post the slides later.
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=9c6955e2-5513-4d52-81b6-505340468b15" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,9c6955e2-5513-4d52-81b6-505340468b15.aspx</comments>
      <category>Security;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=08a9c737-79ed-43f7-b4b8-33a5ae30ebe8</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,08a9c737-79ed-43f7-b4b8-33a5ae30ebe8.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,08a9c737-79ed-43f7-b4b8-33a5ae30ebe8.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=08a9c737-79ed-43f7-b4b8-33a5ae30ebe8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The twitter "don't click" messages are spreading like wildfire. It's a relatively
benign form of clickjacking (analysis <a href="http://harrybailey.com/2009/02/twitter-spoil-the-dont-click-fun-with-one-line-of-code/">here</a>)
that tricks you into click a button when actually you're click on a hidden button
on the twitter site that posts a tweet.
</p>
        <p>
I've talked about clickjacking in <a href="http://pageofwords.com/blog/2008/12/03/WellingtonNETOvercomingYourWebInsecurity.aspx">Wellington</a>, <a href="http://pageofwords.com/blog/2008/12/17/EllerslieUserGroupOvercomingYourWebInsecurity.aspx">Auckland</a>, <a href="http://pageofwords.com/blog/2008/11/01/ChristchurchCodeCampOvercomingYourWebInsecurity.aspx">Christchurch</a> and <a href="http://pageofwords.com/blog/2009/02/05/NelsonThisWednesdayOvercomingYourWebInsecurity.aspx">Nelson</a>,
and while I don't know of a fool-proof way to protect yourself against click-jacking,
you should do what twitter have done (and what I suggested at those talks) and include
some frame-busting javascript at the top of every page in your site. Details are here: <a href="http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx">Framebusting
in Javascript</a></p>
        <p>
Frame-busting works by unwrapping your site from being hosted inside an iframe. It
won't stop all click-jacking attacks, and it won't protect all users, but like many
security mitigations it's about layering several 90% solutions on top of each other
to protect your users and your websites.
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=08a9c737-79ed-43f7-b4b8-33a5ae30ebe8" />
      </body>
      <title>Twitter &amp;quot;don't click&amp;quot; clickjacking</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,08a9c737-79ed-43f7-b4b8-33a5ae30ebe8.aspx</guid>
      <link>http://pageofwords.com/blog/2009/02/12/TwitterQuotdontClickquotClickjacking.aspx</link>
      <pubDate>Thu, 12 Feb 2009 21:02:39 GMT</pubDate>
      <description>&lt;p&gt;
The twitter &amp;quot;don't click&amp;quot; messages are spreading like wildfire. It's a relatively
benign form of clickjacking (analysis &lt;a href="http://harrybailey.com/2009/02/twitter-spoil-the-dont-click-fun-with-one-line-of-code/"&gt;here&lt;/a&gt;)
that tricks you into click a button when actually you're click on a hidden button
on the twitter site that posts a tweet.
&lt;/p&gt;
&lt;p&gt;
I've talked about clickjacking in &lt;a href="http://pageofwords.com/blog/2008/12/03/WellingtonNETOvercomingYourWebInsecurity.aspx"&gt;Wellington&lt;/a&gt;, &lt;a href="http://pageofwords.com/blog/2008/12/17/EllerslieUserGroupOvercomingYourWebInsecurity.aspx"&gt;Auckland&lt;/a&gt;, &lt;a href="http://pageofwords.com/blog/2008/11/01/ChristchurchCodeCampOvercomingYourWebInsecurity.aspx"&gt;Christchurch&lt;/a&gt; and &lt;a href="http://pageofwords.com/blog/2009/02/05/NelsonThisWednesdayOvercomingYourWebInsecurity.aspx"&gt;Nelson&lt;/a&gt;,
and while I don't know of a fool-proof way to protect yourself against click-jacking,
you should do what twitter have done (and what I suggested at those talks) and include
some frame-busting javascript at the top of every page in your site. Details are here: &lt;a href="http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx"&gt;Framebusting
in Javascript&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Frame-busting works by unwrapping your site from being hosted inside an iframe. It
won't stop all click-jacking attacks, and it won't protect all users, but like many
security mitigations it's about layering several 90% solutions on top of each other
to protect your users and your websites.
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=08a9c737-79ed-43f7-b4b8-33a5ae30ebe8" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,08a9c737-79ed-43f7-b4b8-33a5ae30ebe8.aspx</comments>
      <category>Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=cbf72013-7cd9-4606-b67a-c57a88f396bd</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,cbf72013-7cd9-4606-b67a-c57a88f396bd.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,cbf72013-7cd9-4606-b67a-c57a88f396bd.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=cbf72013-7cd9-4606-b67a-c57a88f396bd</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It was a nice sunny day in Nelson yesterday, and it was nice to have a little look
at the scenery afterwards (thanks, Daniel!).
</p>
        <p>
I presented a similar "Overcoming your web insecurity" talk that I gave
in Auckland recently [<a href="http://pageofwords.com/blog/2008/12/17/EllerslieUserGroupOvercomingYourWebInsecurity.aspx">slides</a>],
and it was good fun diving in to some depth in the extra time we had... hopefully
I managed to scare some people!
</p>
        <p>
 
</p>
        <p>
Next Wednesday at the <a href="http://www.dot.net.nz/wellington">Wellington .NET Users
Group</a>, <a href="http://bgeek.net/">Owen Evans</a> (who also works at Xero) and
I will be presenting two sessions. 
</p>
        <p>
Owen will be doing a LINQ Refresher to get us up to speed with the LINQ syntax for
selecting, grouping, where-ing and more.
</p>
        <p>
I will be talking about the <a href="http://www.codeplex.com/AntiXSS">Anti-XSS</a> library,
which is now in beta. The library is pretty cool and helps a lot with encoding data
before it ends up on your website :)
</p>
        <p>
More details of the event are here: <a href="http://www.dot.net.nz/Default.aspx?tabid=30&amp;mid=418&amp;ctl=Detail&amp;xmid=4404&amp;xmfid=2">LINQ
Refresher, Anti-XSS and SDE Libraries</a></p>
        <p>
 
</p>
        <p>
Hope to see you on Wednesday!
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=cbf72013-7cd9-4606-b67a-c57a88f396bd" />
      </body>
      <title>Nelson, Wellington and cross site scripting</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,cbf72013-7cd9-4606-b67a-c57a88f396bd.aspx</guid>
      <link>http://pageofwords.com/blog/2009/02/12/NelsonWellingtonAndCrossSiteScripting.aspx</link>
      <pubDate>Thu, 12 Feb 2009 10:09:55 GMT</pubDate>
      <description>&lt;p&gt;
It was a nice sunny day in Nelson yesterday, and it was nice to have a little look
at the scenery afterwards (thanks, Daniel!).
&lt;/p&gt;
&lt;p&gt;
I presented a similar &amp;quot;Overcoming your web insecurity&amp;quot; talk that I gave
in Auckland recently [&lt;a href="http://pageofwords.com/blog/2008/12/17/EllerslieUserGroupOvercomingYourWebInsecurity.aspx"&gt;slides&lt;/a&gt;],
and it was good fun diving in to some depth in the extra time we had... hopefully
I managed to scare some people!
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Next Wednesday at the &lt;a href="http://www.dot.net.nz/wellington"&gt;Wellington .NET Users
Group&lt;/a&gt;, &lt;a href="http://bgeek.net/"&gt;Owen Evans&lt;/a&gt; (who also works at Xero) and
I will be presenting two sessions. 
&lt;/p&gt;
&lt;p&gt;
Owen will be doing a LINQ Refresher to get us up to speed with the LINQ syntax for
selecting, grouping, where-ing and more.
&lt;/p&gt;
&lt;p&gt;
I will be talking about the &lt;a href="http://www.codeplex.com/AntiXSS"&gt;Anti-XSS&lt;/a&gt; library,
which is now in beta. The library is pretty cool and helps a lot with encoding data
before it ends up on your website :)
&lt;/p&gt;
&lt;p&gt;
More details of the event are here: &lt;a href="http://www.dot.net.nz/Default.aspx?tabid=30&amp;amp;mid=418&amp;amp;ctl=Detail&amp;amp;xmid=4404&amp;amp;xmfid=2"&gt;LINQ
Refresher, Anti-XSS and SDE Libraries&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Hope to see you on Wednesday!
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=cbf72013-7cd9-4606-b67a-c57a88f396bd" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,cbf72013-7cd9-4606-b67a-c57a88f396bd.aspx</comments>
      <category>Security;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've got the afternoon off work this Wednesday 11 Feb, and am popping over to Nelson
to present on web security (details below).
</p>
        <p>
I hope to see you there!
</p>
        <p>
Kirk
</p>
        <p>
Daniel Ballinger wrote: 
<br />
&gt; Hi All, 
<br />
&gt; 
<br />
&gt; Kirk Jackson from the Wellington .NET user group will be in town on 
<br />
&gt; Wednesday the 11th of February and is giving a presentation. 
<br />
&gt; 
<br />
&gt; Title: 
<br />
&gt; Overcoming your web insecurity 
<br />
&gt; 
<br />
&gt; Abstract: 
</p>
        <p>
&gt; As an <a href="http://ASP.NET">ASP.NET</a> developer, there are many things to
think about while 
<br />
&gt; developing your web application. Come along to understand the 
<br />
&gt; fundamentals of developing a secure web application, and learn how to 
<br />
&gt; protect your site against the dangers of cross-site scripting, cross 
<br />
&gt; domain request forging and click-jacking. 
<br />
&gt; 
<br />
&gt; This session will be suitable for all levels of experience, and 
<br />
&gt; developers who use other web development platforms such as PHP or Java. 
<br />
&gt;
</p>
        <p>
&gt; Presenter: 
<br />
&gt; Kirk Jackson 
<br />
&gt; 
<br />
&gt; Useful links: 
<br />
&gt; <a href="http://pageofwords.com">http://pageofwords.com</a> - Kirk's blog 
<br />
&gt; 
<br />
&gt; <a href="http://mscommunities.net.nz/">http://mscommunities.net.nz/</a> - The
home of Microsoft communities in New Zealand 
<br />
&gt; 
<br />
&gt; When: 
<br />
&gt; Wednesday 11th February 2009 
<br />
&gt; Gather at 2:50 pm, starting at 3:00 pm. 
<br />
&gt; 
<br />
&gt; Approximately 1 hour 15 minutes plus pizza afterward. 
<br />
&gt; 
<br />
&gt; Where: 
<br />
&gt; FuseIT Ltd, 
<br />
&gt; Ground Floor, 
<br />
&gt; 7 Forests Rd, 
<br />
&gt; Stoke, 
<br />
&gt; Nelson 
<br />
&gt; 
<br />
&gt; (Off Nayland Rd and behind Carters) 
<br />
&gt; <a href="http://local.live.com/default.aspx?v=2&amp;cp=-41.299774%7E173.236231&amp;style=r&amp;lvl=16&amp;alt=-1000">http://local.live.com/default.aspx?v=2&amp;cp=-41.299774~173.236231&amp;style=r&amp;lvl=16&amp;alt=-1000</a><br />
&gt; or 
<br />
&gt; <a href="http://maps.google.com/?ie=UTF8&amp;om=1&amp;z=17&amp;ll=-41.299774,173.236231&amp;spn=0.005239,0.010042&amp;t=h">http://maps.google.com/?ie=UTF8&amp;om=1&amp;z=17&amp;ll=-41.299774,173.236231&amp;spn=0.005239,0.010042&amp;t=h</a><br />
&gt; 
<br />
&gt; If you are parking on site, please use the parks marked FuseIT that 
<br />
&gt; are at the back of the site. 
<br />
&gt; 
<br />
&gt; Giveaways: 
<br />
&gt; A single copy Microsoft Office 2007 Professional 
<br />
&gt; 
<br />
&gt; Catering: Pizza &amp; Drinks 
<br />
&gt; 
<br />
&gt; Door Charge: Free 
<br />
&gt; 
<br />
&gt; 
<br />
&gt; RSVP to me if you are going to attend so I can guesstimate the food 
<br />
&gt; and drink requirements. 
<br />
&gt; 
<br />
&gt; However, feel free to turn up on the day though if you can't commit at 
<br />
&gt; the moment. 
<br />
&gt; 
<br />
&gt; Please feel free to invite anyone who may be interested in attending. 
<br />
&gt; 
<br />
&gt; 
<br />
&gt; Cheers, 
<br />
&gt; Daniel 
<br />
&gt; 
<br />
&gt; Daniel Ballinger 
<br />
&gt; Developer 
<br />
&gt; FuseIT ™
</p>
        <p>
          <a href="http://www.fishofprey.com/" target="_blank">http://www.fishofprey.com/</a>
        </p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d" />
      </body>
      <title>Nelson this Wednesday: Overcoming your web insecurity</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d.aspx</guid>
      <link>http://pageofwords.com/blog/2009/02/05/NelsonThisWednesdayOvercomingYourWebInsecurity.aspx</link>
      <pubDate>Thu, 05 Feb 2009 21:17:38 GMT</pubDate>
      <description>&lt;p&gt;
I've got the afternoon off work this Wednesday 11 Feb, and am popping over to Nelson
to present on web security (details below).
&lt;/p&gt;
&lt;p&gt;
I hope to see you there!
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;p&gt;
Daniel Ballinger wrote: 
&lt;br&gt;
&amp;gt; Hi All, 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Kirk Jackson from the Wellington .NET user group will be in town on 
&lt;br&gt;
&amp;gt; Wednesday the 11th of February and is giving a presentation. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Title: 
&lt;br&gt;
&amp;gt; Overcoming your web insecurity 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Abstract: 
&lt;/p&gt;
&lt;p&gt;
&amp;gt; As an &lt;a href="http://ASP.NET"&gt;ASP.NET&lt;/a&gt; developer, there are many things to
think about while 
&lt;br&gt;
&amp;gt; developing your web application. Come along to understand the 
&lt;br&gt;
&amp;gt; fundamentals of developing a secure web application, and learn how to 
&lt;br&gt;
&amp;gt; protect your site against the dangers of cross-site scripting, cross 
&lt;br&gt;
&amp;gt; domain request forging and click-jacking. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; This session will be suitable for all levels of experience, and 
&lt;br&gt;
&amp;gt; developers who use other web development platforms such as PHP or Java. 
&lt;br&gt;
&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;gt; Presenter: 
&lt;br&gt;
&amp;gt; Kirk Jackson 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Useful links: 
&lt;br&gt;
&amp;gt; &lt;a href="http://pageofwords.com"&gt;http://pageofwords.com&lt;/a&gt; - Kirk's blog 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; &lt;a href="http://mscommunities.net.nz/"&gt;http://mscommunities.net.nz/&lt;/a&gt; - The
home of Microsoft communities in New Zealand 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; When: 
&lt;br&gt;
&amp;gt; Wednesday 11th February 2009 
&lt;br&gt;
&amp;gt; Gather at 2:50 pm, starting at 3:00 pm. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Approximately 1 hour 15 minutes plus pizza afterward. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Where: 
&lt;br&gt;
&amp;gt; FuseIT Ltd, 
&lt;br&gt;
&amp;gt; Ground Floor, 
&lt;br&gt;
&amp;gt; 7 Forests Rd, 
&lt;br&gt;
&amp;gt; Stoke, 
&lt;br&gt;
&amp;gt; Nelson 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; (Off Nayland Rd and behind Carters) 
&lt;br&gt;
&amp;gt; &lt;a href="http://local.live.com/default.aspx?v=2&amp;amp;cp=-41.299774%7E173.236231&amp;amp;style=r&amp;amp;lvl=16&amp;amp;alt=-1000"&gt;http://local.live.com/default.aspx?v=2&amp;amp;cp=-41.299774~173.236231&amp;amp;style=r&amp;amp;lvl=16&amp;amp;alt=-1000&lt;/a&gt; 
&lt;br&gt;
&amp;gt; or 
&lt;br&gt;
&amp;gt; &lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;om=1&amp;amp;z=17&amp;amp;ll=-41.299774,173.236231&amp;amp;spn=0.005239,0.010042&amp;amp;t=h"&gt;http://maps.google.com/?ie=UTF8&amp;amp;om=1&amp;amp;z=17&amp;amp;ll=-41.299774,173.236231&amp;amp;spn=0.005239,0.010042&amp;amp;t=h&lt;/a&gt; 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; If you are parking on site, please use the parks marked FuseIT that 
&lt;br&gt;
&amp;gt; are at the back of the site. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Giveaways: 
&lt;br&gt;
&amp;gt; A single copy Microsoft Office 2007 Professional 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Catering: Pizza &amp;amp; Drinks 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Door Charge: Free 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; RSVP to me if you are going to attend so I can guesstimate the food 
&lt;br&gt;
&amp;gt; and drink requirements. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; However, feel free to turn up on the day though if you can't commit at 
&lt;br&gt;
&amp;gt; the moment. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Please feel free to invite anyone who may be interested in attending. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Cheers, 
&lt;br&gt;
&amp;gt; Daniel 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Daniel Ballinger 
&lt;br&gt;
&amp;gt; Developer 
&lt;br&gt;
&amp;gt; FuseIT ™
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.fishofprey.com/" target="_blank"&gt;http://www.fishofprey.com/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d.aspx</comments>
      <category>.NET;Security;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=9aa7f462-764b-4a92-95bb-b9e577fdcfdc</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,9aa7f462-764b-4a92-95bb-b9e577fdcfdc.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,9aa7f462-764b-4a92-95bb-b9e577fdcfdc.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9aa7f462-764b-4a92-95bb-b9e577fdcfdc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blog.wired.com/27bstroke6/">Wired's Threat Level blog</a> compiles
their list of the top 7 technology-aided crimes of 2008: <a href="http://blog.wired.com/27bstroke6/2008/12/capers.html">The
Seven Best Capers of 2008</a></p>
        <p>
The list is quite a humorous read.
</p>
        <p>
Some of the crimes are caused by the silliness of the affected business, so it almost
seems mean to prosecute the criminal :)
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=9aa7f462-764b-4a92-95bb-b9e577fdcfdc" />
      </body>
      <title>The Seven Best Capers of 2008</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,9aa7f462-764b-4a92-95bb-b9e577fdcfdc.aspx</guid>
      <link>http://pageofwords.com/blog/2009/01/07/TheSevenBestCapersOf2008.aspx</link>
      <pubDate>Wed, 07 Jan 2009 00:29:28 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://blog.wired.com/27bstroke6/"&gt;Wired's Threat Level blog&lt;/a&gt; compiles
their list of the top 7 technology-aided crimes of 2008: &lt;a href="http://blog.wired.com/27bstroke6/2008/12/capers.html"&gt;The
Seven Best Capers of 2008&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The list is quite a humorous read.
&lt;/p&gt;
&lt;p&gt;
Some of the crimes are caused by the silliness of the affected business, so it almost
seems mean to prosecute the criminal :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=9aa7f462-764b-4a92-95bb-b9e577fdcfdc" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,9aa7f462-764b-4a92-95bb-b9e577fdcfdc.aspx</comments>
      <category>Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=e84bf3fd-9554-4c09-aba8-4a3c3d0bb924</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,e84bf3fd-9554-4c09-aba8-4a3c3d0bb924.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,e84bf3fd-9554-4c09-aba8-4a3c3d0bb924.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e84bf3fd-9554-4c09-aba8-4a3c3d0bb924</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
That trip turned out to be a bit of a whirlwind. Sorry I had to dash straight after
the presentation!
</p>
        <p>
The talk was an introduction to cross-site scripting (XSS), cross domain request forgery
(CDRF) and clickjacking, and used a common theme of "never trust users"
to show how trusting GET, POST, Cookies, Headers or other user supplied data could
be your downfall.
</p>
        <p>
I've already posted the slides to this talk from back when I presented at the Christchurch
Code Camp: <strong><a href="http://pageofwords.com/blog/2008/11/01/ChristchurchCodeCampOvercomingYourWebInsecurity.aspx">Overcoming
your web insecurity</a></strong></p>
        <ul>
          <li>
Subscribe to my blog: <a href="http://pageofwords.com/">http://pageofwords.com</a></li>
          <li>
            <a href="http://www.asp.net/downloads/starter-kits/classifieds/">The Classifieds web
site starter kit</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?familyid=efb9c819-53ff-4f82-bfaf-e11625130c25&amp;displaylang=en">The
Microsoft Anti-XSS Library</a> (use instead of HttpUtility.Encode) 
</li>
          <li>
            <a href="http://blogs.msdn.com/sfaust/archive/2008/09/02/which-asp-net-controls-automatically-encodes.aspx">Which
ASP.NET Controls Automatically Encode?</a>
          </li>
          <li>
            <a href="http://blog.guya.net/2008/10/07/malicious-camera-spying-using-clickjacking/">Clickjacking
video</a>
          </li>
          <li>
Framebusting: 
<br /><a href="http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx">http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx</a></li>
          <li>
            <a href="http://blogs.msdn.com/cisg/archive/2008/10/24/a-sneak-peak-at-the-security-runtime-engine.aspx">Security
Runtime Engine</a> (coming, will help with ASP.NET controls) 
</li>
          <li>
OWASP – The Open Web Application Security Project – <a href="http://www.owasp.org">http://www.owasp.org</a></li>
        </ul>
        <p>
There's a new <a href="http://blogs.msdn.com/cisg/archive/2008/12/15/anti-xss-3-0-beta-and-cat-net-community-technology-preview-now-live.aspx">beta
of the Anti-XSS library</a> that you should check out when encoding your user-supplied
data for use in HTML or attributes. At the same link is the new CAT.NET tool that
analyses your code for weaknesses.
</p>
        <p>
The Anti-XSS library now includes the <a href="http://blogs.msdn.com/cisg/archive/2008/12/16/how-the-anti-xss-3-0-sre-works.aspx">Security
Runtime Engine</a>, which will help when encoding ASP.NET controls. I'll be posting
about it here soon, so subscribe to my RSS feed :)
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e84bf3fd-9554-4c09-aba8-4a3c3d0bb924" />
      </body>
      <title>Ellerslie User Group - Overcoming your web insecurity</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,e84bf3fd-9554-4c09-aba8-4a3c3d0bb924.aspx</guid>
      <link>http://pageofwords.com/blog/2008/12/17/EllerslieUserGroupOvercomingYourWebInsecurity.aspx</link>
      <pubDate>Wed, 17 Dec 2008 10:19:01 GMT</pubDate>
      <description>&lt;p&gt;
That trip turned out to be a bit of a whirlwind. Sorry I had to dash straight after
the presentation!
&lt;/p&gt;
&lt;p&gt;
The talk was an introduction to cross-site scripting (XSS), cross domain request forgery
(CDRF) and clickjacking, and used a common theme of &amp;quot;never trust users&amp;quot;
to show how trusting GET, POST, Cookies, Headers or other user supplied data could
be your downfall.
&lt;/p&gt;
&lt;p&gt;
I've already posted the slides to this talk from back when I presented at the Christchurch
Code Camp: &lt;strong&gt;&lt;a href="http://pageofwords.com/blog/2008/11/01/ChristchurchCodeCampOvercomingYourWebInsecurity.aspx"&gt;Overcoming
your web insecurity&lt;/a&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Subscribe to my blog: &lt;a href="http://pageofwords.com/"&gt;http://pageofwords.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.asp.net/downloads/starter-kits/classifieds/"&gt;The Classifieds web
site starter kit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=efb9c819-53ff-4f82-bfaf-e11625130c25&amp;amp;displaylang=en"&gt;The
Microsoft Anti-XSS Library&lt;/a&gt; (use instead of HttpUtility.Encode) 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blogs.msdn.com/sfaust/archive/2008/09/02/which-asp-net-controls-automatically-encodes.aspx"&gt;Which
ASP.NET Controls Automatically Encode?&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blog.guya.net/2008/10/07/malicious-camera-spying-using-clickjacking/"&gt;Clickjacking
video&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
Framebusting: 
&lt;br /&gt;
&lt;a href="http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx"&gt;http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blogs.msdn.com/cisg/archive/2008/10/24/a-sneak-peak-at-the-security-runtime-engine.aspx"&gt;Security
Runtime Engine&lt;/a&gt; (coming, will help with ASP.NET controls) 
&lt;/li&gt;
&lt;li&gt;
OWASP &amp;#8211; The Open Web Application Security Project &amp;#8211; &lt;a href="http://www.owasp.org"&gt;http://www.owasp.org&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
There's a new &lt;a href="http://blogs.msdn.com/cisg/archive/2008/12/15/anti-xss-3-0-beta-and-cat-net-community-technology-preview-now-live.aspx"&gt;beta
of the Anti-XSS library&lt;/a&gt; that you should check out when encoding your user-supplied
data for use in HTML or attributes. At the same link is the new CAT.NET tool that
analyses your code for weaknesses.
&lt;/p&gt;
&lt;p&gt;
The Anti-XSS library now includes the &lt;a href="http://blogs.msdn.com/cisg/archive/2008/12/16/how-the-anti-xss-3-0-sre-works.aspx"&gt;Security
Runtime Engine&lt;/a&gt;, which will help when encoding ASP.NET controls. I'll be posting
about it here soon, so subscribe to my RSS feed :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e84bf3fd-9554-4c09-aba8-4a3c3d0bb924" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,e84bf3fd-9554-4c09-aba8-4a3c3d0bb924.aspx</comments>
      <category>.NET;Security;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=0b79f54a-5e5f-4f57-ac13-5f308bdfb3ac</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,0b79f54a-5e5f-4f57-ac13-5f308bdfb3ac.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,0b79f54a-5e5f-4f57-ac13-5f308bdfb3ac.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=0b79f54a-5e5f-4f57-ac13-5f308bdfb3ac</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This is very illuminating reading: <a href="http://code.google.com/p/browsersec/wiki/Main">Browser
Security Handbook</a></p>
        <p>
The set of web pages cover the standard concepts within web browsers such as how they
treat urls, javascript and css, and then covers security features within each browser,
such as same-origin policies.
</p>
        <p>
This is the first time I have seen information about all the browsers in one place,
and should be a useful resource to both understand the browser protection mechanisms,
and how browsers differ in their implementation of security controls.
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=0b79f54a-5e5f-4f57-ac13-5f308bdfb3ac" />
      </body>
      <title>Google Browser Security Handbook</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,0b79f54a-5e5f-4f57-ac13-5f308bdfb3ac.aspx</guid>
      <link>http://pageofwords.com/blog/2008/12/11/GoogleBrowserSecurityHandbook.aspx</link>
      <pubDate>Thu, 11 Dec 2008 11:39:15 GMT</pubDate>
      <description>&lt;p&gt;
This is very illuminating reading: &lt;a href="http://code.google.com/p/browsersec/wiki/Main"&gt;Browser
Security Handbook&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The set of web pages cover the standard concepts within web browsers such as how they
treat urls, javascript and css, and then covers security features within each browser,
such as same-origin policies.
&lt;/p&gt;
&lt;p&gt;
This is the first time I have seen information about all the browsers in one place,
and should be a useful resource to both understand the browser protection mechanisms,
and how browsers differ in their implementation of security controls.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=0b79f54a-5e5f-4f57-ac13-5f308bdfb3ac" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,0b79f54a-5e5f-4f57-ac13-5f308bdfb3ac.aspx</comments>
      <category>Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=4e14478e-aeb9-49a9-980e-1bb37f44ceee</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,4e14478e-aeb9-49a9-980e-1bb37f44ceee.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,4e14478e-aeb9-49a9-980e-1bb37f44ceee.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=4e14478e-aeb9-49a9-980e-1bb37f44ceee</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The <a href="http://msdn.microsoft.com/en-us/security/cc448177.aspx">Security Development
Lifecycle website</a> has been updated, and they have launched a cartoon:
</p>
        <p>
          <a title="http://www.bakingsecurityin.com/" href="http://www.bakingsecurityin.com/">http://www.bakingsecurityin.com/</a>
        </p>
        <p>
          <a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/Bakingsecurityin_12413/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/Bakingsecurityin_12413/image_thumb.png" width="125" border="0" />
          </a>
        </p>
        <p>
You can follow the adventures of Kevin and how he transforms into Kevlarr (presumably
while learning to write secure code).
</p>
        <p>
They've got an RSS feed for the comics: <a href="http://www.microsoft.com/security/bakingsecurityin/rss/">RSS</a> (although
strip 2 didn't work in the RSS for me, so you might want to go to <a href="http://www.bakingsecurityin.com/">the
site</a>)
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=4e14478e-aeb9-49a9-980e-1bb37f44ceee" />
      </body>
      <title>Baking security in</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,4e14478e-aeb9-49a9-980e-1bb37f44ceee.aspx</guid>
      <link>http://pageofwords.com/blog/2008/11/24/BakingSecurityIn.aspx</link>
      <pubDate>Mon, 24 Nov 2008 07:46:04 GMT</pubDate>
      <description>&lt;p&gt;
The &lt;a href="http://msdn.microsoft.com/en-us/security/cc448177.aspx"&gt;Security Development
Lifecycle website&lt;/a&gt; has been updated, and they have launched a cartoon:
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.bakingsecurityin.com/" href="http://www.bakingsecurityin.com/"&gt;http://www.bakingsecurityin.com/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/Bakingsecurityin_12413/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/Bakingsecurityin_12413/image_thumb.png" width="125" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
You can follow the adventures of Kevin and how he transforms into Kevlarr (presumably
while learning to write secure code).
&lt;/p&gt;
&lt;p&gt;
They've got an RSS feed for the comics: &lt;a href="http://www.microsoft.com/security/bakingsecurityin/rss/"&gt;RSS&lt;/a&gt; (although
strip 2 didn't work in the RSS for me, so you might want to go to &lt;a href="http://www.bakingsecurityin.com/"&gt;the
site&lt;/a&gt;)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=4e14478e-aeb9-49a9-980e-1bb37f44ceee" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,4e14478e-aeb9-49a9-980e-1bb37f44ceee.aspx</comments>
      <category>Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=9bd5f5ed-f3a9-452c-be9a-f0f41521a1dd</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,9bd5f5ed-f3a9-452c-be9a-f0f41521a1dd.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,9bd5f5ed-f3a9-452c-be9a-f0f41521a1dd.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9bd5f5ed-f3a9-452c-be9a-f0f41521a1dd</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I had a fun time presenting my talk at the <a href="http://dot.net.nz/Default.aspx?tabid=119">Christchurch
Code Camp</a> yesterday. I only fell off the stage once!
</p>
        <p>
A collection of urls:
</p>
        <ul>
          <li>
Subscribe to my blog: <a href="http://pageofwords.com/">http://pageofwords.com</a></li>
          <li>
            <a href="http://www.asp.net/downloads/starter-kits/classifieds/">The Classifieds web
site starter kit</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?familyid=efb9c819-53ff-4f82-bfaf-e11625130c25&amp;displaylang=en">The
Microsoft Anti-XSS Library</a> (use instead of HttpUtility.Encode) 
</li>
          <li>
            <a href="http://blogs.msdn.com/sfaust/archive/2008/09/02/which-asp-net-controls-automatically-encodes.aspx">Which
ASP.NET Controls Automatically Encode?</a>
          </li>
          <li>
            <a href="http://blog.guya.net/2008/10/07/malicious-camera-spying-using-clickjacking/">Clickjacking
video</a>
          </li>
          <li>
Framebusting: 
<br /><a href="http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx">http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx</a></li>
          <li>
            <a href="http://blogs.msdn.com/cisg/archive/2008/10/24/a-sneak-peak-at-the-security-runtime-engine.aspx">Security
Runtime Engine</a> (coming, will help with ASP.NET controls) 
</li>
          <li>
OWASP – The Open Web Application Security Project – <a href="http://www.owasp.org">http://www.owasp.org</a></li>
        </ul>
        <p>
Here's the sanitised version of my slides: 
</p>
        <div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:17cb1114-fc09-470c-b405-77c1940bf9d5" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
            <a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/ChristchurchCodeCampOvercomingyourwebins_7C9F/KirkJackson-CodeCampChchNov2008-Clean_1.pptx" target="_blank">KirkJackson-CodeCampChchNov2008-Clean.pptx</a>
          </p>
        </div>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=9bd5f5ed-f3a9-452c-be9a-f0f41521a1dd" />
      </body>
      <title>Christchurch Code Camp: Overcoming your web insecurity</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,9bd5f5ed-f3a9-452c-be9a-f0f41521a1dd.aspx</guid>
      <link>http://pageofwords.com/blog/2008/11/01/ChristchurchCodeCampOvercomingYourWebInsecurity.aspx</link>
      <pubDate>Sat, 01 Nov 2008 19:55:50 GMT</pubDate>
      <description>&lt;p&gt;
I had a fun time presenting my talk at the &lt;a href="http://dot.net.nz/Default.aspx?tabid=119"&gt;Christchurch
Code Camp&lt;/a&gt; yesterday. I only fell off the stage once!
&lt;/p&gt;
&lt;p&gt;
A collection of urls:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Subscribe to my blog: &lt;a href="http://pageofwords.com/"&gt;http://pageofwords.com&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.asp.net/downloads/starter-kits/classifieds/"&gt;The Classifieds web
site starter kit&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=efb9c819-53ff-4f82-bfaf-e11625130c25&amp;amp;displaylang=en"&gt;The
Microsoft Anti-XSS Library&lt;/a&gt; (use instead of HttpUtility.Encode) 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blogs.msdn.com/sfaust/archive/2008/09/02/which-asp-net-controls-automatically-encodes.aspx"&gt;Which
ASP.NET Controls Automatically Encode?&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blog.guya.net/2008/10/07/malicious-camera-spying-using-clickjacking/"&gt;Clickjacking
video&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
Framebusting: 
&lt;br /&gt;
&lt;a href="http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx"&gt;http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blogs.msdn.com/cisg/archive/2008/10/24/a-sneak-peak-at-the-security-runtime-engine.aspx"&gt;Security
Runtime Engine&lt;/a&gt; (coming, will help with ASP.NET controls) 
&lt;/li&gt;
&lt;li&gt;
OWASP &amp;#8211; The Open Web Application Security Project &amp;#8211; &lt;a href="http://www.owasp.org"&gt;http://www.owasp.org&lt;/a&gt; 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Here's the sanitised version of my slides: 
&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:17cb1114-fc09-470c-b405-77c1940bf9d5" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/ChristchurchCodeCampOvercomingyourwebins_7C9F/KirkJackson-CodeCampChchNov2008-Clean_1.pptx" target="_blank"&gt;KirkJackson-CodeCampChchNov2008-Clean.pptx&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=9bd5f5ed-f3a9-452c-be9a-f0f41521a1dd" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,9bd5f5ed-f3a9-452c-be9a-f0f41521a1dd.aspx</comments>
      <category>CodeCamp;Security;Web</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=4c13fb60-653c-4c8b-b843-22de13bf9391</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,4c13fb60-653c-4c8b-b843-22de13bf9391.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,4c13fb60-653c-4c8b-b843-22de13bf9391.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=4c13fb60-653c-4c8b-b843-22de13bf9391</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">It's grassroots conference time in Wellington,
with <a href="http://barcamp.org/BarCampWellingtonNZegov">barcamp 2007 e-government</a> on
Sat 15 Sept, and <a href="https://kiwicon.org/">Kiwicon</a> on the Sat 17 and Sun
18 November.<br /><br />
Kiwicon is a security conference, and it sounds like it will be for the technically
minded folks in the security community -- sessions on hacking, wifi insecurity, forensics
and more. Sounds interesting!<br /><br />
barcamp is an un-conference about e-government / Government 2.0. Sessions are scheduled
and time-slotted on the day. It looks like there's going to be some interesting stuff
discussed - identity, privacy, community, accessibility and more.<br /><br />
Sounds like a few scheduled weekends away from the family...<br /><br />
  
<br /><br /><br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=4c13fb60-653c-4c8b-b843-22de13bf9391" /></body>
      <title>Wellington conferences - Kiwicon and barcamp</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,4c13fb60-653c-4c8b-b843-22de13bf9391.aspx</guid>
      <link>http://pageofwords.com/blog/2007/08/27/WellingtonConferencesKiwiconAndBarcamp.aspx</link>
      <pubDate>Mon, 27 Aug 2007 09:41:46 GMT</pubDate>
      <description>It's grassroots conference time in Wellington, with &lt;a href="http://barcamp.org/BarCampWellingtonNZegov"&gt;barcamp
2007 e-government&lt;/a&gt; on Sat 15 Sept, and &lt;a href="https://kiwicon.org/"&gt;Kiwicon&lt;/a&gt; on
the Sat 17 and Sun 18 November.&lt;br&gt;
&lt;br&gt;
Kiwicon is a security conference, and it sounds like it will be for the technically
minded folks in the security community -- sessions on hacking, wifi insecurity, forensics
and more. Sounds interesting!&lt;br&gt;
&lt;br&gt;
barcamp is an un-conference about e-government / Government 2.0. Sessions are scheduled
and time-slotted on the day. It looks like there's going to be some interesting stuff
discussed - identity, privacy, community, accessibility and more.&lt;br&gt;
&lt;br&gt;
Sounds like a few scheduled weekends away from the family...&lt;br&gt;
&lt;br&gt;
&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=4c13fb60-653c-4c8b-b843-22de13bf9391" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,4c13fb60-653c-4c8b-b843-22de13bf9391.aspx</comments>
      <category>Security;Web</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=7aec8ad9-bdf3-4e18-bad9-91bf1d5f788c</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,7aec8ad9-bdf3-4e18-bad9-91bf1d5f788c.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,7aec8ad9-bdf3-4e18-bad9-91bf1d5f788c.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=7aec8ad9-bdf3-4e18-bad9-91bf1d5f788c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I watched this video last night: Reverse
engineering techniques to find security bugs: A case study of the ANI exploit<br /><br /><a href="http://video.google.com/videoplay?docid=-7185841369679533904">http://video.google.com/videoplay?docid=-7185841369679533904</a><br /><i><br /></i>From the blurb:<i><br /></i><blockquote><i>Alex Sotirov is a vulnerability engineer at determina. He will
discuss some latest techniques in reverse engineering software to find vulnerabilities.
Particularly, he'll discuss his technique that lead him to find the ANI bug (a critical
new bug in WinXP and Vista).</i><br /><br /><i>Alex will describe the tools he uses for reverse engineering and show how he reverse
engineered ANI Bug. He will continue to discussed Windows security mechanisms (ASLR,
/GS) and describe how ANI exploit bypasses them.</i><br /></blockquote><br /><hr size="2" width="100%" /><br />
Alex is one of the good guys. He works at <a href="http://www.determina.com/">determina</a> on
their intrusion prevention system, his job is to create exploits so that they can
test if their software can detect and catch them. He often creates exploits by looking
at the patches Microsoft releases to find out what bugs they fix.<br /><br />
In the presentation, Alex shows how to use a disassembly tool to analyse the differences
between two dlls -- the original and the patched ones. He also explains some of the
exploit-protection mechanisms, and how exploit authors can get around them:<br /><br /><ul><li>
/GS compiler switch which inserts a trap to check if the return pointer has been overridden
(only works for functions with arrays in them, as an optimisation)</li><li>
Data Execution Protection (DEP), which is a CPU feature to disable execution of code
within data segments of memory. Stack overflows write into data blocks, and are thwarted
when trying to jump to those blocks. It's only opt-in on desktop Windows, even on
Vista (due to compat reasons).</li><li>
Address space layout randomization (ASLR) which re-arranges the executable in memory
so that jump locations are hard to pre-determine (but there are only 256 possible
places, so it's still possible to guess the location).<br /></li></ul>
Hints on how to design secure software:<br /><br /><ul><li>
Pick a good language and platform (e.g. Java, Python and I assume .NET). This avoids
common pitfalls in languages like C++ and PHP.<br /></li><li>
Design your app to isolate components along trust boundaries. Develop a formal specification
that details how areas of code that are accessed by users of different privilege interact
with each other. 
<br /></li></ul>
Things to avoid:<br /><ul><li>
ActiveX. Always avoid.</li><li>
Google Desktop Search web integration. [Must've been a popular bullet point in the
room!] Exposes all local desktop search data to the possibility of a cross domain
vulnerability in a browser. Securing the product relies on a browser being secure
-- not a good idea.</li><li>
Really hard to add security to an existing codebase (e.g. Windows, Oracle DB)<br /></li></ul>
Take outs:<br /><br /><ul><li>
Assume software has security bugs. Build in things that will make exploitation harder,
and will minimise damage.</li><li>
Avoid single sign-on for web services, as if one app is exploited, other services
can be attacked.<br /></li></ul><br />
Alex ended with a diagram showing the exploit prevention features in different OS's:<br /><br /><img src="http://pageofwords.com/blog/images/blog/OSProtectionMechanisms.jpg" alt="OSProtectionMechanisms.jpg" border="0" height="239" width="318" /><br /><br />
OSX doesn't use many of the current protection techniques that other OS's currently
do. I guess this shows how Microsoft are trying harder with each release, but Apple
are finding it hard.<br /><br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=7aec8ad9-bdf3-4e18-bad9-91bf1d5f788c" /></body>
      <title>Reverse engineering techniques to find security bugs: A case study of the ANI exploit</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,7aec8ad9-bdf3-4e18-bad9-91bf1d5f788c.aspx</guid>
      <link>http://pageofwords.com/blog/2007/06/11/ReverseEngineeringTechniquesToFindSecurityBugsACaseStudyOfTheANIExploit.aspx</link>
      <pubDate>Mon, 11 Jun 2007 09:34:29 GMT</pubDate>
      <description>I watched this video last night: Reverse engineering techniques to find security bugs: A case study of the ANI exploit&lt;br&gt;
&lt;br&gt;
&lt;a href="http://video.google.com/videoplay?docid=-7185841369679533904"&gt;http://video.google.com/videoplay?docid=-7185841369679533904&lt;/a&gt;
&lt;br&gt;
&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;From the blurb:&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;&lt;blockquote&gt;&lt;i&gt;Alex Sotirov is a vulnerability engineer at determina. He will
discuss some latest techniques in reverse engineering software to find vulnerabilities.
Particularly, he'll discuss his technique that lead him to find the ANI bug (a critical
new bug in WinXP and Vista).&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;
&lt;i&gt;Alex will describe the tools he uses for reverse engineering and show how he reverse
engineered ANI Bug. He will continue to discussed Windows security mechanisms (ASLR,
/GS) and describe how ANI exploit bypasses them.&lt;/i&gt;
&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;hr size="2" width="100%"&gt;
&lt;br&gt;
Alex is one of the good guys. He works at &lt;a href="http://www.determina.com/"&gt;determina&lt;/a&gt; on
their intrusion prevention system, his job is to create exploits so that they can
test if their software can detect and catch them. He often creates exploits by looking
at the patches Microsoft releases to find out what bugs they fix.&lt;br&gt;
&lt;br&gt;
In the presentation, Alex shows how to use a disassembly tool to analyse the differences
between two dlls -- the original and the patched ones. He also explains some of the
exploit-protection mechanisms, and how exploit authors can get around them:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
/GS compiler switch which inserts a trap to check if the return pointer has been overridden
(only works for functions with arrays in them, as an optimisation)&lt;/li&gt;
&lt;li&gt;
Data Execution Protection (DEP), which is a CPU feature to disable execution of code
within data segments of memory. Stack overflows write into data blocks, and are thwarted
when trying to jump to those blocks. It's only opt-in on desktop Windows, even on
Vista (due to compat reasons).&lt;/li&gt;
&lt;li&gt;
Address space layout randomization (ASLR) which re-arranges the executable in memory
so that jump locations are hard to pre-determine (but there are only 256 possible
places, so it's still possible to guess the location).&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
Hints on how to design secure software:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Pick a good language and platform (e.g. Java, Python and I assume .NET). This avoids
common pitfalls in languages like C++ and PHP.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Design your app to isolate components along trust boundaries. Develop a formal specification
that details how areas of code that are accessed by users of different privilege interact
with each other. 
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
Things to avoid:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
ActiveX. Always avoid.&lt;/li&gt;
&lt;li&gt;
Google Desktop Search web integration. [Must've been a popular bullet point in the
room!] Exposes all local desktop search data to the possibility of a cross domain
vulnerability in a browser. Securing the product relies on a browser being secure
-- not a good idea.&lt;/li&gt;
&lt;li&gt;
Really hard to add security to an existing codebase (e.g. Windows, Oracle DB)&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
Take outs:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Assume software has security bugs. Build in things that will make exploitation harder,
and will minimise damage.&lt;/li&gt;
&lt;li&gt;
Avoid single sign-on for web services, as if one app is exploited, other services
can be attacked.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
Alex ended with a diagram showing the exploit prevention features in different OS's:&lt;br&gt;
&lt;br&gt;
&lt;img src="http://pageofwords.com/blog/images/blog/OSProtectionMechanisms.jpg" alt="OSProtectionMechanisms.jpg" border="0" height="239" width="318"&gt;
&lt;br&gt;
&lt;br&gt;
OSX doesn't use many of the current protection techniques that other OS's currently
do. I guess this shows how Microsoft are trying harder with each release, but Apple
are finding it hard.&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=7aec8ad9-bdf3-4e18-bad9-91bf1d5f788c" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,7aec8ad9-bdf3-4e18-bad9-91bf1d5f788c.aspx</comments>
      <category>Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=6ddbdd47-8d65-4a2d-8ded-2d2553074c4c</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,6ddbdd47-8d65-4a2d-8ded-2d2553074c4c.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,6ddbdd47-8d65-4a2d-8ded-2d2553074c4c.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6ddbdd47-8d65-4a2d-8ded-2d2553074c4c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Two of my favourite areas of software development
are privacy and security. As applications get less siloed and more connected, understanding
the boundaries between "mine and theirs", and implementing the system correctly are
becoming increasingly important.<br /><br />
A little tid-bit I found interesting today was:<br /><blockquote><i>Did you know that the new trend is phone phishing? Criminals use VoIP
to emulate the bank’s voice prompt system and lure people into giving their account
information.<br />
(<a href="http://frenchfamily.org/hunter/?p=132">http://frenchfamily.org/hunter/?p=132</a>)<br /></i></blockquote><p></p>
That's worth thinking about if you're an organisation that provides a phone-based
service such as phone banking or checking account balances. Tricking someone to dial
a phone number (especially an 0800) is probably as easy as tricking them into going
to the wrong website.<br /><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=6ddbdd47-8d65-4a2d-8ded-2d2553074c4c" /></body>
      <title>Security &amp; Phone Phishing</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,6ddbdd47-8d65-4a2d-8ded-2d2553074c4c.aspx</guid>
      <link>http://pageofwords.com/blog/2007/06/09/SecurityPhonePhishing.aspx</link>
      <pubDate>Sat, 09 Jun 2007 00:32:06 GMT</pubDate>
      <description>Two of my favourite areas of software development are privacy and security. As applications get less siloed and more connected, understanding the boundaries between "mine and theirs", and implementing the system correctly are becoming increasingly important.&lt;br&gt;
&lt;br&gt;
A little tid-bit I found interesting today was:&lt;br&gt;
&lt;blockquote&gt;&lt;i&gt;Did you know that the new trend is phone phishing? Criminals use VoIP
to emulate the bank’s voice prompt system and lure people into giving their account
information.&lt;br&gt;
(&lt;a href="http://frenchfamily.org/hunter/?p=132"&gt;http://frenchfamily.org/hunter/?p=132&lt;/a&gt;)&lt;br&gt;
&lt;/i&gt;&lt;/blockquote&gt;
&lt;p&gt;
&lt;/p&gt;
That's worth thinking about if you're an organisation that provides a phone-based
service such as phone banking or checking account balances. Tricking someone to dial
a phone number (especially an 0800) is probably as easy as tricking them into going
to the wrong website.&lt;br&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=6ddbdd47-8d65-4a2d-8ded-2d2553074c4c" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,6ddbdd47-8d65-4a2d-8ded-2d2553074c4c.aspx</comments>
      <category>Software;Security</category>
    </item>
  </channel>
</rss>