<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkMNQ3w_eCp7ImA9WhRUE0s.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201</id><updated>2012-01-23T15:14:52.240-08:00</updated><category term="cansecwest 2009" /><category term="subprime pki" /><category term="ssl rebinding" /><title>Schmoilitos Way</title><subtitle type="html">Brute.Force.Life.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://schmoil.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/SchmoilitosWay" /><feedburner:info uri="schmoilitosway" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CEEDQ3k7eCp7ImA9WhZbEkk.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-6392883740749673148</id><published>2011-06-16T09:43:00.000-07:00</published><updated>2011-06-16T09:44:32.700-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-16T09:44:32.700-07:00</app:edited><title>...</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-K7pKGJq5iEE/Tfoyqvi0aHI/AAAAAAAAATE/H-PLj9VxqIs/s1600/qr.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 248px; height: 248px;" src="http://3.bp.blogspot.com/-K7pKGJq5iEE/Tfoyqvi0aHI/AAAAAAAAATE/H-PLj9VxqIs/s320/qr.jpg" alt="" id="BLOGGER_PHOTO_ID_5618859194996516978" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-6392883740749673148?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/kC6ZWMeEqlQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/6392883740749673148/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=6392883740749673148" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/6392883740749673148?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/6392883740749673148?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/kC6ZWMeEqlQ/blog-post.html" title="..." /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-K7pKGJq5iEE/Tfoyqvi0aHI/AAAAAAAAATE/H-PLj9VxqIs/s72-c/qr.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2011/06/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUACQnszeCp7ImA9WxNbFE0.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-6980658007498885474</id><published>2009-10-16T12:13:00.001-07:00</published><updated>2009-11-16T13:42:43.580-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-16T13:42:43.580-08:00</app:edited><title>null byte injection</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.treehugger.com/muturally-assured-destruction-chainsaw-photo.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 283px;" src="http://www.treehugger.com/muturally-assured-destruction-chainsaw-photo.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In &lt;a href="http://blog.portswigger.net/2008/05/null-byte-attacks-are-alive-and-well.html"&gt;this 2008 blog post&lt;/a&gt;, Portswigger says that null byte attacks against web applications are nothing new. It's almost 2010, and they're still nothin' new, but they sure can be fun!&lt;br /&gt;&lt;br /&gt;During a recent web app assessment, I found one very similar to the example in Portswigger's post. I tampered with it a few times, but wasn't really sure if it was an exploitable condition or not.&lt;br /&gt;&lt;br /&gt;I saw some requests containing a file name, similar to:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/servlet?file=image_N.jpg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I began trying some basic attacks, like:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/servlet?file=../../../../etc/passwd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;These attacks always resulted in the application cleanly handling the exception, and giving me a friendly error message in a HTTP 200 response. Not quite ready to give up, I decided to try the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/servlet?file=../image_N.jpg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This also generated an error, but this time it was a 500 Internal Server Error from the application container. This meant that the validation routine was not necessarily aware of my ../'s, but was probably concerned with the format of the file name. To be sure, I tried the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/servlet?file=image_N.foo&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;/servlet?file=../image_N.foo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Both of the above requests generated the clean error message. Only when the string ended with _N.jpg, did I get a 500 error, which told me that the logic was:&lt;br /&gt;&lt;br /&gt;1. Validate the file name extension is .JPG.&lt;br /&gt;2. Validate that the file name is of the format image_N, where N is a random integer.&lt;br /&gt;2. Try to read the JPEG from the file system.&lt;br /&gt;&lt;br /&gt;This is great if you want to read JPEGs, but I had my heart set on &lt;span style="font-style: italic;"&gt;arbitrary &lt;/span&gt; file access. So how do we by-pass the _N.JPG filter? I pressed the staples easy &lt;a href="http://www.staples.com/sbd/cre/marketing/easybutton/index.html"&gt;button&lt;/a&gt; on my desk and it injected a null byte like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/servlet?file=../../../../etc/passwd%OOimage_N.jpg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After a number of attempts to determine the directory depth of the file system, I was happy to see the contents of the passwd file in my browser.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Then things got interesting . . .&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This application had been pen-tested before. It had also been scanned using a popular commercial static analysis tool, and had gotten a clean bill of health. So, let's just say that management was a little, um, curious about why this bug was still alive and well. And by curious, I actually mean &lt;span style="font-style: italic;"&gt;furious&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;So what went wrong? After the first pen-test, the blatant directory traversal bug was "fixed" with a new validation routine that scrutinized the end of the file name. This new routine was declared a validation routine in the static analysis tool, and any subsequent data flows that passed through it were considered safe. Game over. Hooray for tools!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Lessons Learned&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Behind every tool is the person who wrote it, and the person operating it. These people are just as likely to make mistakes as the developer who wrote the target application. Once again, we're reminded that there is no silver security bullet. Tools help, but it comes down to proper education, process, and people to actually find &lt;span style="font-style: italic;"&gt;and&lt;/span&gt; fix bugs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-6980658007498885474?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/fGDyMA8N5Lo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/6980658007498885474/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=6980658007498885474" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/6980658007498885474?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/6980658007498885474?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/fGDyMA8N5Lo/null-byte-injection.html" title="null byte injection" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2009/10/null-byte-injection.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEGRns4cSp7ImA9WxNVEkk.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-5527017931625998951</id><published>2009-10-15T12:45:00.000-07:00</published><updated>2009-10-22T12:43:47.539-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-22T12:43:47.539-07:00</app:edited><title>Mainlining new lines: feel the burn</title><content type="html">Since the blog has been pretty stale for the last couple of months, I've decided to try and spice things up with a couple of war stories from recent web app pen tests. No XSS bugs here. I'm talking about complete, CPU melting, rack busting pwnage and destruction, shock and awe, all delivered over HTTP. OK, maybe I'm being a &lt;span style="font-style: italic;"&gt;little&lt;/span&gt; dramatic, but at least they won't be XSS bugs. Besides, if you own the box, who needs XSS?&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Command Execution in Ruby on Rails app&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This RoR application was accepting a user supplied URL which got passed to an external application via IO.popen(). If I could inject a back-tick or escape from the quoted string being passed to popen(), I could execute arbitrary commands. My problem was that these basic injection attacks were failing because the devs did a decent job of validating input. Part of the validation approach relied on passing the user supplied data to Ruby's URI.parse() function. The parse() function would raise an exception any time I injected a "malicious" character, and the script would stop executing before calling popen().&lt;br /&gt;&lt;br /&gt;I knew I had to find some sort of  filter bypass bug in URI.parse() if I wanted any pwnage, so I fired up irb and after a few manual fuzzing attempts I had it:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;nullbyte:~ mikezusman$ ruby -v&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ruby 1.9.1p243 (2009-07-16 revision 24175) [i386-darwin9.8.0]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;nullbyte:~ mikezusman$ irb&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; require 'uri'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=&gt; true&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; require 'cgi'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=&gt; true&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; u1 = "http://www.google.com"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=&gt; "http://www.google.com"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; u2 = "http://www.google.com`ls`"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=&gt; "http://www.google.com`ls`"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; u3 = "http://www.google.com%0A`ls%0A`"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=&gt; "http://www.google.com%0A`ls%0A`"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; URI.parse(u1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=&gt; #&lt;/span&gt;&lt;/span&gt;&lt;uri::http:0x389e10 com=""&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; URI.parse(u2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;URI::InvalidURIError: bad URI(is not URI?): http://www.google.com`ls`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/uri/common.rb:436:in `split'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/uri/common.rb:485:in `parse'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;from (irb):7&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;from :0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; URI.parse(u3)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;URI::InvalidURIError: bad URI(is not URI?): http://www.google.com%0A`ls%0A`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/uri/common.rb:436:in `split'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/uri/common.rb:485:in `parse'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;from (irb):8&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;from :0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; URI.parse(CGI::unescape(u3))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=&gt; #&lt;/span&gt;&lt;/span&gt;&lt;uri::http:0x37a334 com=""&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; x = URI.parse(CGI::unescape(u3))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=&gt; #&lt;/span&gt;&lt;/span&gt;&lt;uri::http:0x371360 com=""&gt;&lt;br /&gt;&lt;br /&gt;Injecting a URL encoded version (%0A) of a new line (\n) would get my URL encoded back-tick (%60) through the URI.parse() function unscathed. After the successful call to parse(), the data was passed to popen() and my commands would be executed. My attack looked like: http://victim.com/controller?param=http://www.google.com%0A%60ls%0A%60&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Lessons Learned&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Relying on the result of a call to a third party routine doesn't necessarily equate to "input validation." However, used differently, URI.parse() could have very easily helped to prevent this bug. URI.parse() returns a new object whose members could be used to construct a safe string to be passed to popen(). &lt;/uri::http:0x371360&gt;&lt;/uri::http:0x37a334&gt;&lt;/uri::http:0x389e10&gt;&lt;uri::http:0x389e10 com=""&gt;&lt;uri::http:0x37a334 com=""&gt;&lt;uri::http:0x371360 com=""&gt;This would work because everything after the %0A gets dropped:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; d = "http://www.google.com/%0A%60ls%0A%60"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=&gt; "http://www.google.com/%0A%60ls%0A%60"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; r = URI.parse(CGI::unescape(d))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=&gt; #&lt;/span&gt;&lt;/span&gt;&lt;uri::http:0x37fb68&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; r.path&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=&gt; "/"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt; new_arg = "#{r.scheme}://#{r.host}#{r.path}"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=&gt; "http://www.google.com/"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you relied on the above as "input validation", you just would have gotten lucky that the function chopped off everything after the new line. Some times luck is enough. But when dealing with user data being passed to a system command, a little extra scrutiny can go a long way towards protecting your application. URI.parse() makes it easier for us to enforce additional validation checks by letting us look at each piece of the URI (protocol/scheme, host, path).&lt;br /&gt;&lt;br /&gt;When fetching user supplied URI's, this sort of fine grained input validation is something we should be doing anyway. For example, simply parsing the URI would not block an attack against the local host, since http://127.0.0.1/ is valid. We might also want to make sure that the protocol is http|https (not ftp, for example) and that our application isn't being used to scan the network on the inside of the firewall (by blacklisting internal IPs and host names).&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Moral of the Story&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Just like many other bugs, this one could have been prevented with better input validation. Even if you think you're doing a good job validating your input, remember that not all input validation routines are created equal. Stay tuned for my next post, where we'll explore the short comings of relying on static analysis tools to catch similar bugs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Update 10/22/2009&lt;br /&gt;&lt;/span&gt;@emerose filed this bug &lt;a href="http://redmine.ruby-lang.org/issues/show/2251"&gt;report&lt;/a&gt;.&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/uri::http:0x37fb68&gt;&lt;/uri::http:0x371360&gt;&lt;/uri::http:0x37a334&gt;&lt;/uri::http:0x389e10&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-5527017931625998951?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/H4FbRezu4rc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/5527017931625998951/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=5527017931625998951" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/5527017931625998951?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/5527017931625998951?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/H4FbRezu4rc/mainlining-new-lines-feel-burn.html" title="Mainlining new lines: feel the burn" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2009/10/mainlining-new-lines-feel-burn.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAMQHk7fSp7ImA9WxJaFE0.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-8702540641893548623</id><published>2009-08-04T10:52:00.001-07:00</published><updated>2009-08-04T10:59:41.705-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-04T10:59:41.705-07:00</app:edited><title>BlackHat 2009 and Defcon 17: EV SSL MITM Demo</title><content type="html">For the second year in a row I had BlackHat live demo issues. Shame on me.&lt;br /&gt;&lt;br /&gt;Fortunately, the demo worked at Defcon. Had it not worked, however, I was prepared with a video thanks to &lt;a href="http://www.techsmith.com/camtasia.asp"&gt;Camtasia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You can view the video &lt;a href="http://stub.bz/sslrebinding/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The demonstration shows a MITM using a regular SSL certificate (Domain Validated) to intercept data sent to a site protected with an Extended Validation (EV) SSL certificate. Since the browser treats the high-assurance EV certificate the same as a low-assurance DV certificate, the user is never warned about any connection downgrade. All they might notice is the "flicker" of the green EV badge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-8702540641893548623?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/dEqeqeGU-pg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/8702540641893548623/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=8702540641893548623" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/8702540641893548623?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/8702540641893548623?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/dEqeqeGU-pg/blackhat-2009-and-defcon-17-ev-ssl-mitm.html" title="BlackHat 2009 and Defcon 17: EV SSL MITM Demo" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2009/08/blackhat-2009-and-defcon-17-ev-ssl-mitm.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkECQ3o9fSp7ImA9WxJWEkw.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-7219099765200510592</id><published>2009-06-16T20:02:00.000-07:00</published><updated>2009-06-16T20:51:02.465-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-16T20:51:02.465-07:00</app:edited><title>Insecure Cookies and You: Perfect Together</title><content type="html">Who uses the secure cookie flag? Web developers who don't want their user's cookies being leaked out over non-SSL protected sockets. These developers realize that protecting user credentials on the wire is only half the battle. If an attacker can sniff a user's cookie off the wire when it's sent in plain text, who cares if the credentials are protected? The attacker still gets access to the application.&lt;br /&gt;&lt;br /&gt;Who doesn't use the secure flag? Yahoo! Mail. Microsoft Live Mail. GMail and Google apps. All of these sites, and many others, protect the transmission of credentials using HTTPS. Unfortunately, immediately after you authenticate to one of these sites and get a valid session cookie, the browser is redirected to a plain text HTTP interface of the site. Google at least gives users the option of protecting their entire session with SSL. Others do not. If these companies start setting the secure flag on their cookies, their sites will break.&lt;br /&gt;&lt;br /&gt;The "Secure" cookie flag is just a patch for a poorly implemented browser Same Origin Policy. Essentially, it allows a web application to opt-in to a strict interpretation of SOP on the client side that will prevent cookies from being leaked over insecure protocols. Why do we have to do extra work to be secure?&lt;br /&gt;&lt;br /&gt;I propose a new cookie flag, called the "insecure" flag. Use of the insecure flag would allow web sites that don't care about protecting session cookies to opt-out of a strict interpretation of SOP, thus exposing their session cookies to the world and allowing their applications to work. If you want to protect your users' credentials over HTTPS, but then expose their sessions over HTTP, this will be the flag for you!&lt;br /&gt;&lt;br /&gt;Imagine that. Secure by default. No extra work to do things right. What a concept!&lt;br /&gt;&lt;br /&gt;Ah, wishful thinking :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-7219099765200510592?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/NRz3DvKnnOQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/7219099765200510592/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=7219099765200510592" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/7219099765200510592?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/7219099765200510592?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/NRz3DvKnnOQ/insecure-cookies-and-you-perfect.html" title="Insecure Cookies and You: Perfect Together" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2009/06/insecure-cookies-and-you-perfect.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcCRH06fCp7ImA9WxJXFko.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-2949132410928160263</id><published>2009-06-03T16:23:00.000-07:00</published><updated>2009-06-10T15:14:25.314-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-10T15:14:25.314-07:00</app:edited><title>NYS CSCIC Conference</title><content type="html">Last week I presented at the NYS cyber security &lt;a href="http://www.cscic.state.ny.us/security/conferences/security/2009/sessions.cfm"&gt;conference&lt;/a&gt; in Albany. My talk was about attacks that leverage publicly available information, such as data indexed in search engines and/or stored in social networks. I also showed how this data can be used in highly targeted spear phishing attacks. My spear phishing demo used my netextender ssl vpn exploit, since it is usually trivial to find a companies SSL VPN gateway. Once you find the ssl vpn gateway, some passive recon of the system can reveal a tremendous attack surface on the victim (client) machine.&lt;br /&gt;&lt;br /&gt;At the end, I touched on some problems with commercial PKI, but I didn't really get into it. I'm saving that for some up coming blog posts. I got some great feedback at the end, and also met a bunch of cool folks. Thanks for listening. Slides are available &lt;a href="http://intrepidusgroup.com/whitepapers/hwobo.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I couldn't stick around for both days of talks, but I managed to see the two key notes on day one. The second one was by Phil Reitinger, Deputy Under Secretary, National Protection and Programs Directorate (NPPD) U.S. Department of Homeland Security.&lt;br /&gt;&lt;br /&gt;/me lets his fingers recover from typing that title&lt;br /&gt;&lt;br /&gt;During his talk, Mr. Reitinger offered up five priorities for the US as we move forward with our new cyber security initiatives. I'm paraphrasing here, and I didn't take great notes. That's because I'm just some dude with a blog, and not a journalist.&lt;br /&gt;&lt;br /&gt;1. We need to build our capacity. DHS needs people. We also need to work with academia to build programs that churn out people with the right skills and knowledge.&lt;br /&gt;&lt;br /&gt;2. Establish relationships between public and private sector. Mr. Reitinger joked about the infinite loop of meetings where public &amp;amp; private sector folks agree that they are both willing to share data - starting at the next meeting.&lt;br /&gt;&lt;br /&gt;3. Develop (and follow) a standard incident response &amp;amp; recovery plan.&lt;br /&gt;&lt;br /&gt;4. Streamline Identity Management. In addition to managing user identities, he also mentioned something to the effect of "being able to better identify who we're connecting to." Maybe this means we'll eventually get something better than SSL site validation.&lt;br /&gt;&lt;br /&gt;5. Metrics. Specifically, he mentioned software quality metrics.  One thing that keeps popping into my head is the fact that the &lt;a href="http://www.wired.com/threatlevel/2009/04/air-force-windows/"&gt;airforce got a locked-down version of XP&lt;/a&gt;. How did the air force quantify the improved security? And when will everyone else benefit?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-2949132410928160263?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/JIh4OYkd88M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/2949132410928160263/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=2949132410928160263" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/2949132410928160263?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/2949132410928160263?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/JIh4OYkd88M/nys-cscic-conference.html" title="NYS CSCIC Conference" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2009/06/nys-cscic-conference.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4MSH84fCp7ImA9WxVUGUw.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-8322264913716291652</id><published>2009-03-24T09:31:00.000-07:00</published><updated>2009-03-24T09:43:09.134-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-24T09:43:09.134-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cansecwest 2009" /><category scheme="http://www.blogger.com/atom/ns#" term="subprime pki" /><category scheme="http://www.blogger.com/atom/ns#" term="ssl rebinding" /><title>Subprime PKI and SSL Rebinding</title><content type="html">I'm on my way out of Vancouver today after an awesome time at &lt;a href="http://www.cansecwest.com"&gt;CanSec&lt;/a&gt;&lt;a href="http://www.cansecwest.com"&gt;West 2009&lt;/a&gt;. Met alot of awesome people, and learned some cool new tech.&lt;br /&gt;&lt;br /&gt;The talk &lt;a href="http://www.phreedom.org"&gt;Alex&lt;/a&gt; and I gave, "Subprime PKI: EV SSL certs and MD5 Collisions", was also well received. We'll be releasing our paper and source code soon, but until then, here is a &lt;a href="http://www.flickr.com/photos/ggee/3372327968/"&gt;screen shot&lt;/a&gt; of a MITM attack against an EV SSL protected web site from our live demo (note the presence of the "green glow" in the browser).&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://garettgee.com"&gt;Garett Gee&lt;/a&gt; for the photo. You can check out the rest of his photos &lt;a href="http://www.flickr.com/photos/ggee/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-8322264913716291652?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/yCCrW8vMwR4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/8322264913716291652/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=8322264913716291652" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/8322264913716291652?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/8322264913716291652?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/yCCrW8vMwR4/subprime-pki-and-ssl-rebinding.html" title="Subprime PKI and SSL Rebinding" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2009/03/subprime-pki-and-ssl-rebinding.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cMR3s-eCp7ImA9WxVWFkg.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-6530555836315997923</id><published>2009-02-26T06:31:00.000-08:00</published><updated>2009-02-26T06:38:06.550-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-26T06:38:06.550-08:00</app:edited><title>Law.Com SSL VPN Article and Microsoft IAG Hands On Lab</title><content type="html">Today I'm out to teach a Microsoft IAG Hands-On-Lab outside of Boston, Mass. It is a basic intro class to IAG, which is &lt;a href="http://www.microsoft.com/Forefront/edgesecurity/iag/en/us/default.aspx"&gt;Microsoft's SSL VPN technology&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also, last month Bryan Dykstra wrote a follow up &lt;a href="http://www.law.com/jsp/legaltechnology/pubArticleLT.jsp?id=1202427892510"&gt;article&lt;/a&gt; about my SSL VPN research on Law.com. It's a good read, and provides a nice overview of some of the threats effecting these devices.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-6530555836315997923?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/kNPoTqVd390" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/6530555836315997923/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=6530555836315997923" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/6530555836315997923?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/6530555836315997923?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/kNPoTqVd390/lawcom-ssl-vpn-article-and-microsoft.html" title="Law.Com SSL VPN Article and Microsoft IAG Hands On Lab" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2009/02/lawcom-ssl-vpn-article-and-microsoft.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUARHk6cSp7ImA9WxVWFE8.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-1672046605492963214</id><published>2009-02-23T11:32:00.001-08:00</published><updated>2009-02-23T13:57:25.719-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-23T13:57:25.719-08:00</app:edited><title>Reversing Crypto: SonicWall SSL VPN Flaw</title><content type="html">Haroon Meer's SSL VPN ActiveX repurposing attack is number 9 on Jeremiah Grossmans &lt;a href="http://jeremiahgrossman.blogspot.com/2009/02/top-ten-web-hacking-techniques-of-2008.html"&gt;list&lt;/a&gt; of the top 10 web hacks of 2008 :-) Congrats to Haroon! I figured this would be a good time to document the details of the Sonicwall flaw I discovered and disclosed last year at blackhat. Some details are in the slides, but I've been meaning to put a detailed description here for some time. So here goes...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;In the beginning, there was a flaw...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First, the initial flaw was VERY simple, and easy to exploit. Any web site could instantiate the ActiveX control (NELaunchCtrl), and the very first thing the control would do is send an HTTP request to the invoking server to determine if the control should upgrade itself. If the server sent back an unrecognized response, the control would download an unsigned .EXE file from the server, and execute it on the client. Very basic, and easy to exploit. To find the flaw, you simply had to intercept the ActiveX initiated HTTP requests with an SSL capable proxy, then replay and fuzz them.&lt;br /&gt;&lt;br /&gt;This flaw was reported to SonicWALL (with recommendation of using code signing certificates to prevent malicious code execution), and they eventually released a patch for me to test. This is when it got interesting.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Then, there was a patch...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Upon initial testing of the fixed control, the very basic repurposing attack was indeed thwarted. Further interception of the traffic generated by the control showed a series of challenge/response requests between the client and the server.&lt;br /&gt;&lt;br /&gt;Example challenge:&lt;br /&gt;https://sslvpn.server.com/cgi-bin/sslvpnclient?validateserver=128248573387261264&lt;br /&gt;&lt;br /&gt;Example response (from HTTP response body):&lt;br /&gt;SERVER_CHAIN="NjQ3MjZGNkM2OTZENkY2NzZGNjQ3MjY5NjM3MjYxNzM=";&lt;br /&gt;&lt;br /&gt;VALIDATE_DATA="NEQ2NUQ1MzcwNDNBODhDRUFBMDgwMzMxNjAzRDhGQ0U4MDczRjQxOTNGQTdDODgzRUQ5RDdBQTAzQjg3QURFQg==";&lt;br /&gt;&lt;br /&gt;Base64 decoding of the VALIDATE_DATA yielded binary data that had to be some sort of cipher text. SERVER_CHAIN, on the other hand, would reveal a stream of hex numbers, that would eventually decode to a 16byte string such as: drolimogodricras&lt;br /&gt;&lt;br /&gt;These 16bytes were unique for each validation request, as was the cipher text. Also interesting was the fact that the SERVER_CHAIN and VALIDATE_DATA were unique even when I replayed requests with the same value passed in validateserver.&lt;br /&gt;&lt;br /&gt;At this point I knew I was dealing with a stream or block cipher, that SERVER_CHAIN what seemed to be an &lt;a href="http://en.wikipedia.org/wiki/Initialization_vector"&gt;Initialization Vector&lt;/a&gt;, and VALIDATE_DATA held what seemed to be the cipher text. Now I just needed to find out what algorithm was being used and what the encryption key was.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;No IDA Skills Required&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next, I started looking at the control itself. I knew there was a new method exposed named ValidateServer(). This method had to be called for the control to continue running, and this is also what triggered the challenge response. Before I jumped into IDA, I ran strings.exe on the binary. Below is what I saw.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_oe5Pfujh4GA/SaMAC4kMsOI/AAAAAAAAAMU/siIR4k5j2eQ/s1600-h/strings.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 334px;" src="http://1.bp.blogspot.com/_oe5Pfujh4GA/SaMAC4kMsOI/AAAAAAAAAMU/siIR4k5j2eQ/s400/strings.jpg" alt="" id="BLOGGER_PHOTO_ID_5306084835516526818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the above image is a red circle, and a red square. The red circle shows the following text: s)3!cW^L1%S&amp;amp;V@N~&lt;br /&gt;It doesn't take much to realize that these 16bytes look an awful lot like a passphrase.&lt;br /&gt;&lt;br /&gt;In the red box, we see some encryption related error messages that indicate the encryption method: AES128. For AES128, our 16byte string above would be an acceptable passphrase. Remember that 16byte string we assumed was an IV? Well, 16 bytes is the correct size for anAES128 IV.&lt;br /&gt;&lt;br /&gt;Now we've identified all the key parts of the new server validation mechanism SonicWall implemented to attempt to defeat the repurposing of their ActiveX client by rogue sites.&lt;br /&gt;&lt;br /&gt;1. The input is a unix time stamp generated by the client, and sent to the server for encrypting.&lt;br /&gt;2. The server generates a pseudo-random IV and encrypts the timestamp with a symmetric encryption key that client already knows. The IV and cipher text are sent back to the client.&lt;br /&gt;3. The client receives the IV and the ciphertext, and attempts to decrypt the cipher using the hardcoded, pre-shared encryption key.&lt;br /&gt;4. If the decrypted plaintext matches what was originally sent by the client, validation succeeds and the control can be used (or attacked.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;The Source Code&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To repeat the repurposing attack, I wrote the following C# and ran it on my rogue server. Sorry for the screenshot, but I can't find the actual source file at the moment.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_oe5Pfujh4GA/SaMCZi1iYyI/AAAAAAAAAMc/Pb1M1EESEFA/s1600-h/sonichack.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 201px;" src="http://2.bp.blogspot.com/_oe5Pfujh4GA/SaMCZi1iYyI/AAAAAAAAAMc/Pb1M1EESEFA/s400/sonichack.jpg" alt="" id="BLOGGER_PHOTO_ID_5306087423843918626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;At least they didn't use ECB ;-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For a second time, I reported everything above to SonicWall. They patched again, and said they &lt;a href="http://www.sonicwall.com/us/8168_6893.html"&gt;fixed&lt;/a&gt; it. However, the fix did not include the recommended mitigation of using code signing certificates to validate the .EXE that gets downloaded by the ActiveX. That said, the control still relies on some sort of obfuscated client/server validation routine. That's bad news, since it can probably be broken again by someone with enough time on their hands. But then again, I wonder if they would have gotten a code signing certificate signed with an MD5 hash ;-)  Security through obscurity FT(L|W)?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-1672046605492963214?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/UB_sfoS8X7M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/1672046605492963214/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=1672046605492963214" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/1672046605492963214?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/1672046605492963214?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/UB_sfoS8X7M/reversing-crypto-sonicwall-ssl-vpn-flaw.html" title="Reversing Crypto: SonicWall SSL VPN Flaw" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_oe5Pfujh4GA/SaMAC4kMsOI/AAAAAAAAAMU/siIR4k5j2eQ/s72-c/strings.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2009/02/reversing-crypto-sonicwall-ssl-vpn-flaw.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UDQHczeSp7ImA9WxVQEE8.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-2547002765642785289</id><published>2009-01-26T19:53:00.000-08:00</published><updated>2009-01-26T20:07:51.981-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-26T20:07:51.981-08:00</app:edited><title>Top Web Hacking Techniques of 2008</title><content type="html">Jeremiah has put out a &lt;a href="http://jeremiahgrossman.blogspot.com/2009/01/calling-all-researchers-send-in-top-web.html"&gt;request&lt;/a&gt; for the top web hacking techniques of 2008. This post serves to summarize my suggestion, which is &lt;a href="http://www.google.com/search?hl=en&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;hs=z4z&amp;amp;q=activex+repurposing&amp;amp;btnG=Search"&gt;ActiveX Repurposing attacks&lt;/a&gt;. These are attacks where malicious web sites abuse the functionality of ActiveX objects already installed on Windows machines, in order to download and execute code (among other things). No debugger necessary :-)&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;br /&gt;1. An ActiveX Dropper described by Dean: &lt;a href="http://carnal0wnage.blogspot.com/2008/08/owning-client-without-and-exploit.html"&gt;Owning the Client without an Exploit&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Sensepost Juniper SSL VPN ActiveX repurposing by Haroon: &lt;a href="http://www.sensepost.com/blog/2237.html" class="entry_title" rel="bookmark"&gt;ActiveX Repurposing.. (aka: Other bugs your static analyzer will never find..) (aka 0day^H^H 485day bug!)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. SonicWALL SSL VPN ActiveX repurposing by yours truly: &lt;a href="http://www.networkworld.com/news/2008/080708-black-hat-ssl-vpn-security.html"&gt;Network World article&lt;/a&gt;&lt;br /&gt;and SonicWALL &lt;a href="http://www.sonicwall.com/us/8168_6893.html"&gt;announcement&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;4. Hmm, I thought this was more recent, but it was actually from 2005 (read down in the wiki): &lt;a href="http://en.wikipedia.org/wiki/2005_Sony_BMG_CD_copy_protection_scandal"&gt;Sony DRM Root Kit Scandal&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-2547002765642785289?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/swmb34Yj7AA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/2547002765642785289/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=2547002765642785289" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/2547002765642785289?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/2547002765642785289?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/swmb34Yj7AA/top-web-hacking-techniques-of-2008.html" title="Top Web Hacking Techniques of 2008" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2009/01/top-web-hacking-techniques-of-2008.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQNRnc6cSp7ImA9WxVREE4.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-6382551259882249579</id><published>2009-01-15T08:18:00.000-08:00</published><updated>2009-01-15T08:19:57.919-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-15T08:19:57.919-08:00</app:edited><title>How do you trust?</title><content type="html">&lt;p&gt;SSL PKI is designed to do two things: encrypt data on the wire, and allow web site validation through the use of trusted third party signatures. The former works pretty well, the Debian weak key &lt;a href="http://wiki.debian.org/SSLkeys" mce_href="http://wiki.debian.org/SSLkeys" target="_blank"&gt;debacle&lt;/a&gt; aside. Unfortunately, the latter seems about as robust and secure as Windows 98. Case in point, &lt;a href="https://discovercard.com/" mce_href="https://discovercard.com" target="_blank"&gt;https://discovercard.com&lt;/a&gt;. As my colleague Mike Walker points out, DiscoverCard.com forces users to enter credentials on a page served over an insecure HTTP connection. In doing so, Discover leaves users with no real way to tell who they are giving their credentials to. This is a perfect example of an implementation specific design flaw that fails open and renders SSL site validation useless.&lt;/p&gt; &lt;p&gt;Unfortunately, Discover Card isn't the only organization breaking PKI. The pillars of Internet security, our trusted third party Certificate Authorities, have been having a rough time recently. A number of implementation specific flaws at multiple CAs have allowed outsiders to abuse their systems and obtain certificates for which they are not authorized to hold. Sure, these implementation specific flaws can be fixed, but the lasting damage to the trust we have in PKI can't be undone. Further, the way PKI has been handling these situations seems to further undermine whatever trust remains.&lt;/p&gt; &lt;p&gt;Last summer when I disclosed the details of how I got the live.com certificate to Microsoft, I told them I wasn't going to do anything bad with it, they said thanks, we shook hands, and that was pretty much the end of it. A few weeks ago, when Sotirov and crew disclosed that they derived their very own key capable of signing certificates that would be trusted by all web browsers, the researchers told Microsoft, Mozilla, etc, that they wouldn't do anything bad with it. These companies again said thanks, hands were shook, and that was pretty much the end of that.&lt;/p&gt; &lt;p&gt;We rely on &lt;a href="http://www.webtrust.net/factsheet.shtml" mce_href="http://www.webtrust.net/factsheet.shtml" target="_blank"&gt;WebTrust&lt;/a&gt; audits and other mechanisms to ensure that our commercial Certificate Authorities do their job well, and so we can be sure we're sending our data to the web sites we trust. Unfortunately, when the audits are useless and the Certificate Authorities screw up like they did in the above two scenarios, companies like Microsoft and Mozilla are forced to make a tough call:&lt;/p&gt; &lt;p&gt;Do they&lt;br /&gt;a) Revoke the root CA for which a duplicate signing key was derived by unknown individuals, thus breaking the Internet for many businesses and individual users&lt;br /&gt;or&lt;br /&gt;b) Do nothing and trust that these guys really only have an expired certificate, and didn't generate one valid for the next couple of years since they so very easily could have.&lt;/p&gt; &lt;p&gt;In the end, the trust that backs PKI is replaced with the trust of a few select individuals at the organizations who manage our root certificate programs (a.k.a the browser vendors). The millions of dollars spent on web trust audits are meaningless. The CAs could have just paid all of their money earmarked for audits to Sotirov and Appelbaum in exchange for their silence, and PKI would lived to fall another day.&lt;/p&gt; &lt;p&gt;&lt;img src="http://i271.photobucket.com/albums/jj140/mwzadotcom1/000tyra_banks_bra_burn_2_big.jpg" mce_src="http://i271.photobucket.com/albums/jj140/mwzadotcom1/000tyra_banks_bra_burn_2_big.jpg" alt="" width="400" height="324" /&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Burn your SSL Certificates?&lt;/b&gt;&lt;/p&gt; &lt;p&gt;PKI, while good on paper, is hard to implement securely. It has taken almost two decades for us to have web browsers that actually support the one method that PKI has to protect itself from rogue certificates: Certificate Revocation Lists. And it doesn't really matter, since not everyone is using IE7 or Firefox 3 yet. CRLs, which are essentially blacklists, are completely ineffective when you don't even know what rogue certificates are actually in existence.&lt;/p&gt; &lt;p&gt;I don't think trusted third parties are enough. We need technology that puts the ability to make trust decisions back in the hands of end users, rather than trying to make these decisions for them.&lt;/p&gt; &lt;p&gt;So what can we do differently? I'm of the mindset that client side certificate / public key caching, like that of SSH, can drastically improve our ability to make trust decisions when communicating on the Internet. SSH shows us that we can communicate securely without trusted third parties. The next question is how best to apply this to web browsers. Hashes of public keys are not easily consumed by casual Internet users. Another Intrepidus colleague, Aaron Rhodes, brought up the idea of vanity hashes that are actually easily recognizable patterns. This could help, but it would certainly complicate key management.&lt;/p&gt; &lt;p&gt;In an effort to actually try and help make things better, rather than just ranting about how bad PKI is on this blog, I've actually been working on a plug-in for Firefox that lets users white list SSL public keys SSH style and alerts the user when they change. It is actually alot harder than it would seem. In my next post, I'll talk more about this plug-in, and the challenges I've faced in getting it working.&lt;/p&gt; &lt;p&gt;-schmoilito&lt;/p&gt;&lt;p&gt;&lt;span style="font-style: italic;"&gt;(Cross post on &lt;a href="http://blog.phishme.com"&gt;blog.phishme.com&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-6382551259882249579?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/e4CDvDwLDkI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/6382551259882249579/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=6382551259882249579" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/6382551259882249579?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/6382551259882249579?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/e4CDvDwLDkI/how-do-you-trust.html" title="How do you trust?" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2009/01/how-do-you-trust.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QFQng5eip7ImA9WxVTGU0.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-5365629805083268140</id><published>2009-01-02T07:04:00.000-08:00</published><updated>2009-01-02T07:15:13.622-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-02T07:15:13.622-08:00</app:edited><title>A brief description of how to become a CA</title><content type="html">Anyone can create a Certificate Authority. Check out this blog describing how to do it with &lt;a href="http://www.freebsdmadeeasy.com/tutorials/freebsd/create-a-ca-with-openssl.php"&gt;OpenSSL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Becoming a trusted CA is a different story. Microsoft, Mozilla, Apple, and other browser companies and OS vendors have a policy stating what it takes to participate in their root CA programs.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc751157.aspx"&gt;http://technet.microsoft.com/en-us/library/cc751157.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.apple.com/certificateauthority/ca_program.html"&gt;http://www.apple.com/certificateauthority/ca_program.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mozilla.org/projects/security/certs/policy/"&gt;http://www.mozilla.org/projects/security/certs/policy/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.opera.com/docs/ca/"&gt;http://www.opera.com/docs/ca/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-5365629805083268140?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/kvqrTq2xxx8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/5365629805083268140/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=5365629805083268140" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/5365629805083268140?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/5365629805083268140?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/kvqrTq2xxx8/brief-description-of-how-to-become-ca.html" title="A brief description of how to become a CA" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2009/01/brief-description-of-how-to-become-ca.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAMQn04fSp7ImA9WxVTGUw.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-1701772047541971477</id><published>2009-01-01T12:34:00.000-08:00</published><updated>2009-01-02T07:39:43.335-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-02T07:39:43.335-08:00</app:edited><title>Nobody is perfect</title><content type="html">Just before Christmas, an admin from StartCom certificate authority &lt;a href="https://blog.startcom.org/?p=145"&gt;disclosed&lt;/a&gt; that he was able to procure an SSL certificate for Mozilla.com from a registered agent of the CA Comodo. He was not authorized to obtain this certificate, and the RA and CA clearly failed to properly vette his cert signing request. Shame on Comodo. You can read the entire saga on &lt;a href="http://groups.google.com/group/mozilla.dev.tech.crypto/browse_thread/thread/9c0cc829204487bf?pli=1"&gt;mozilla.dev.tech.crypto&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The discussion resulting from StartComs blog post is quite interesting, and touches on many issues spanning from internal CA domain validation procedures, to how to revoke a certificate in the Mozilla root cert program. One issue in particular, is exactly what I talked about in my last &lt;a href="http://schmoil.blogspot.com/2008/12/more-than-one-way-to-skin-ca.html"&gt;post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Frank Hecker, of the Mozilla Foundation, said "[right] now we have no real idea as to the extent of the problem (e.g., how many certs might have been issued without proper validation, how many of those were issued to malicious actors, etc.)."&lt;br /&gt;&lt;br /&gt;When a flaw in a CA validation mechanism is uncovered, it can sometimes be trivial to fix. The hard part is determining if any other certificates were obtained by taking advantage of the same flaw, and then revoke them. Although I can imagine a methodology for this process, I can't comment on how any given CA would actually tackle this problem. Based on my own application security experience, I will say that I'm sure lots of logs that would need to be parsed, might not actually exist.&lt;br /&gt;&lt;br /&gt;One person who commented on the StartCom post that started this all critiqued the post by saying it seemed dodgy that StartCom was blatantly pointing out flaws in a competing CA. The reader did, however, understand the severity of the problem that was found and thanked StartCom for publicly disclosing it. I agree with the reader, and I think StartCom did a good thing in disclosing this bug.&lt;br /&gt;&lt;br /&gt;So in the interest of full-disclosure, here is what happened on Friday December 19 (three days before the StartCom disclosure). I found a flaw in StartCom's domain validation mechanism that easily allowed anyone to authorize themselves for ANY domain name, on various .TLDs. While I only tested .COM, many other TLDs were available including .GOV.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_oe5Pfujh4GA/SV02jb8m0bI/AAAAAAAAAMA/aWQNIv6YXUU/s1600-h/startcom_verisign.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 188px;" src="http://3.bp.blogspot.com/_oe5Pfujh4GA/SV02jb8m0bI/AAAAAAAAAMA/aWQNIv6YXUU/s400/startcom_verisign.png" alt="" id="BLOGGER_PHOTO_ID_5286441520028111282" border="0" /&gt;&lt;/a&gt;The screen shot above shows the domain names my StartCom account was allowed to create signed certificates for. These certificates would have been trusted by Firefox, but not Internet Explorer. The first one is a domain I control. Phishme.com and Intrepidusgroup.com are domains owned by my employer for which I am not an authorized contact, and for which I should not have been, but was, granted a signed certificate. Needless to say Paypal.com and Verisign.com are companies I'm also not authorized for.&lt;br /&gt;&lt;br /&gt;Fortunately for Verisign and PayPal, a defense in-depth strategy succeeded for StartCom. While I by-passed StartComs domain validation process, my attempts to create a signed certificate for Verisign.com was flagged by a black-list and not permitted. This is good news for the prominent sites on the black-list, but bad news for lesser known sites that rely on the trust gained by having a valid SSL certificate (small credit unions, for example).&lt;br /&gt;&lt;br /&gt;Because they're a good CA, the StartCom team was immediately aware of my attempt to get a certificate for Verisign. I disclosed the details of the flaw to them, and the simple problem was fixed within hours. But the question remains: did anyone else take advantage of the flaw?&lt;br /&gt;&lt;br /&gt;PKI is not a perfect system, and there is no perfect CA. But, there are at least two types of CAs. One type treats SSL certificates as a cash cow, pushing signed certificates out the door, and counting the money. The second type is like StartCom. This second type understands that trust comes before money and that trusted CAs are a critical piece of Internet infrastructure.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(cross post on &lt;a href="http://blog.phishme.com/"&gt;PhishMe&lt;/a&gt;)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-1701772047541971477?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/LApRpnSPOO0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/1701772047541971477/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=1701772047541971477" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/1701772047541971477?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/1701772047541971477?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/LApRpnSPOO0/nobody-is-perfect.html" title="Nobody is perfect" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_oe5Pfujh4GA/SV02jb8m0bI/AAAAAAAAAMA/aWQNIv6YXUU/s72-c/startcom_verisign.png" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2009/01/nobody-is-perfect.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcDRX4-eyp7ImA9WxVTF0U.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-1297662870670648440</id><published>2008-12-31T12:57:00.000-08:00</published><updated>2008-12-31T19:21:14.053-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-31T19:21:14.053-08:00</app:edited><title>More than one way to skin a CA</title><content type="html">Alex Sotirov, Jacob Appelbaum, and crew did some awesome &lt;a href="http://www.phreedom.org/research/rogue-ca/"&gt;work&lt;/a&gt;. They showed that it was possible to exploit RapidSSL's use of MD5 for signing certificates in order to create their own rogue CA signing certificate. This exploitation is many orders of magnitude more severe than when I used a loop hole to get the &lt;a href="http://schmoil.blogspot.com/2008/08/domain-validated-ssl-certificates.html"&gt;login.live.com certificate from Thawte&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So what should happen when a CA screws up? Last summer, folks &lt;a href="http://groups.google.com/group/mozilla.dev.tech.crypto/browse_thread/thread/17bd43dd2177deae"&gt;thought&lt;/a&gt; that the CA which issued the login.live.com certificate should have its status as a trusted CA revoked. I'm sure people feel the same way about RapidSSL. In my opinion, they are correct. However, it is clear that this could not happen, as it would effect the millions of businesses that rely on these CAs being trusted, which is what a VP at Verisign reaffirms in the comments of this  &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://www.breakingpointsystems.com/community/blog/Attacking-Critical-Internet-Infrastructure"&gt;post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A different question that Appelbaum asked during the presentation in Berlin, and one I've asked many times during my research of Certificate Authorities, is: if we were able to do this, how do we know if anybody else has done the same thing?&lt;br /&gt;&lt;br /&gt;No one can ever give a straight answer. I've reported a number of flaws to CAs responsibly; flaws that can allow people to get certificates that they shouldn't be allowed to get. The flaws get fixed, and thats great, but the damage that could have already been done is immeasurable.&lt;br /&gt;&lt;br /&gt;It sucks when an online retailer gets hacked one or even multiple times. It's bad for them, and it's bad for their customers. When a trusted CA gets hacked, it sucks for the ENTIRE INTERNET. The CAs are supposed to help us secure the Internet. What does it mean if they are not secure themselves? To me, it means that we can't rely on trusted third parties.&lt;br /&gt;&lt;br /&gt;I know that abandoning PKI and trusted third parties is a bad idea, and probably won't happen. However, people need to be more involved in the process of making trust decisions when communicating online. And I don't mean little yellow locks and green address bars. I have some ideas on how to make better use of SSL in web browsers and other SSL clients. So far, I've gotten mixed responses to them from my peers :-) However, with what the Sotirov/Applebaum team accomplished, maybe my ideas will make more sense. Stay tuned...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(Cross post on &lt;a href="http://blog.phishme.com"&gt;PhishMe&lt;/a&gt;)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-1297662870670648440?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/rtUJofXXFGY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/1297662870670648440/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=1297662870670648440" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/1297662870670648440?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/1297662870670648440?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/rtUJofXXFGY/more-than-one-way-to-skin-ca.html" title="More than one way to skin a CA" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2008/12/more-than-one-way-to-skin-ca.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4HR3w5eip7ImA9WxRbGU8.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-5169790667080618989</id><published>2008-12-09T12:59:00.000-08:00</published><updated>2008-12-10T07:45:36.222-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-10T07:45:36.222-08:00</app:edited><title>You don't need to be a hacker to abuse DNS</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_oe5Pfujh4GA/ST7dRQw1SDI/AAAAAAAAAL4/_Ci1HoGO9j4/s1600-h/Screenshot-Optimum+Online+-+Domain+not+found+twitter.com+-+Mozilla+Firefox.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 136px;" src="http://3.bp.blogspot.com/_oe5Pfujh4GA/ST7dRQw1SDI/AAAAAAAAAL4/_Ci1HoGO9j4/s200/Screenshot-Optimum+Online+-+Domain+not+found+twitter.com+-+Mozilla+Firefox.png" alt="" id="BLOGGER_PHOTO_ID_5277899101952100402" border="0" /&gt;&lt;/a&gt;This morning I woke up, took a shower, and went straight to my laptop to let everyone on Twitter know that I had made it through another night, and had even decided to bathe. Unfortunately for me and my loyal followers, Optimum online had some tricks up its sleeve. It seemed that my DNS servers could not resolve www.twitter.com or twitter.com. Hmm. Check out Google. It's up. CNN? Up. Log on to EVDO, Twitter is fine. What the heck?&lt;br /&gt;&lt;br /&gt;This DNS error was not like any I was used to seeing. I wasn't getting a vanilla browser message saying the page could not be displayed. No, I was getting an Optimum branded page telling me that the "domain could not be found." Fortunately, the page offered me a variety of SPONSORED and pay-per-click links that I could burn some time clicking on. Of course, when you follow the links that actually go to Twitter, DNS still would not resolve, and I'd end up on the same "domain not found page," where I could click on more links and generate more cash for Optimum online.&lt;br /&gt;&lt;br /&gt;Optimum better shape up. Fios is in town now, and I don't like it when my ISP earns cash if their DNS servers screw up. Let alone the thought that they could intentionally force DNS glitches in order to generate some fast cash via sponsored links. What a racket!&lt;br /&gt;&lt;br /&gt;Lets not forget about the bad habits this teaches end-users. "The server you were looking for cannot be found, so here click on these links instead." I can't wait until I see a message like that on my banks web site!&lt;br /&gt;&lt;br /&gt;Who thinks ISPs would not stoop so low as to launch DNS attacks against their own customers? As far as I'm concerned, thats what Optimum did to me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-5169790667080618989?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/x1jiCdTTqcc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/5169790667080618989/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=5169790667080618989" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/5169790667080618989?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/5169790667080618989?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/x1jiCdTTqcc/you-dont-need-to-be-hacker-to-abuse-dns.html" title="You don't need to be a hacker to abuse DNS" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_oe5Pfujh4GA/ST7dRQw1SDI/AAAAAAAAAL4/_Ci1HoGO9j4/s72-c/Screenshot-Optimum+Online+-+Domain+not+found+twitter.com+-+Mozilla+Firefox.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2008/12/you-dont-need-to-be-hacker-to-abuse-dns.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EBRHYzeCp7ImA9WxRbFEQ.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-785279120499929366</id><published>2008-12-05T07:34:00.000-08:00</published><updated>2008-12-05T07:40:55.880-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-05T07:40:55.880-08:00</app:edited><title>CheckFree.com owned; SSL, little yellow locks surrender.</title><content type="html">A Washington Post blogger reports that the CheckFree.com domain name was &lt;a href="http://voices.washingtonpost.com/securityfix/2008/12/hackers_hijacked_large_e-bill.html?hpid=sec-tech"&gt;hijacked&lt;/a&gt;. CheckFree is an online bill pay solution which many banks use to provide customers with a convenient method of making payments online. Apparently, attackers took control of the domain name by obtaining Check Free's credentials for their domain registrar account at Network Solutions. They were able to simply change the name servers for CheckFree.com (as well as any other Check Free domain), and all users would be redirected to attacker controlled web servers hosting malware and self-signed certificates.&lt;br /&gt;&lt;br /&gt;On SlashDot, one person &lt;a href="http://it.slashdot.org/comments.pl?sid=1051987&amp;amp;cid=25999399"&gt;mentions&lt;/a&gt; that they were served a self-signed certificate when they clicked through to CheckFree from their bank. This attack could have been even nastier if the attackers had procured a legit CA signed certificate. Maybe the Network Solutions credentials also worked for CheckFree's EquiFaxSecure/Geotrust account (check out the cert for https://mycheckfree.com). If they had a valid cert and weren't hosting malware, who knows how long the hijacking could have lasted. All Check Free traffic could have been routed through the attacker servers in plain-text. Scary.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-785279120499929366?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/pvpBkWDEiqA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/785279120499929366/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=785279120499929366" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/785279120499929366?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/785279120499929366?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/pvpBkWDEiqA/checkfreecom-owned-ssl-little-yellow.html" title="CheckFree.com owned; SSL, little yellow locks surrender." /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2008/12/checkfreecom-owned-ssl-little-yellow.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEGRH8yeip7ImA9WxRXGUk.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-7801801013730655626</id><published>2008-10-24T05:08:00.000-07:00</published><updated>2008-10-25T07:57:05.192-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-25T07:57:05.192-07:00</app:edited><title>Fuzzing and MS08-67</title><content type="html">Yesterday was pretty exciting. I'd been looking forward to it for quite some time, as it was my turn to lead the &lt;a href="http://isisblogs.poly.edu/2008/08/24/fall-penetration-testing-and-exploit-dev-course/"&gt;penetration testing/exploit dev class&lt;/a&gt; at &lt;a href="http://www.poly.edu/"&gt;NYU Poly&lt;/a&gt;. My subject for the class is fuzzing, and the first part consisted of a lecture on fuzzing history and methodologies followed by demos of COMraider, AxMan, and a video of an ActiveX exploit. I think the students are going to have some fun with ActiveX this week :-) Next week we'll be going over SPIKE in-depth.&lt;br /&gt;&lt;br /&gt;What made the day more special was that I got to lead such a class while the rest of the infosec world was busy either patching MS08-67, or &lt;a href="http://www.dontstuffbeansupyournose.com/?p=35"&gt;reversing&lt;/a&gt; it. This bug, found being exploited in the wild, ended up being a pre-auth stack overflow in a Windows RPC service. Precisely the kind of low-hanging fruit that Microsoft's &lt;a href="http://msdn.microsoft.com/en-us/library/ms995349.aspx"&gt;SDL&lt;/a&gt; initiative, which includes &lt;a href="http://blogs.msdn.com/sdl/archive/2007/09/20/fuzz-testing-at-microsoft-and-the-triage-process.aspx"&gt;fuzzing&lt;/a&gt;, was designed to stomp out. In fact, in a post-mortem &lt;a href="http://blogs.msdn.com/sdl/archive/2008/10/22/ms08-067.aspx"&gt;write up&lt;/a&gt; by Michael Howard (the man behind SDL), he says:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"I'll be blunt; our fuzz tests did not catch this and they should have."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Howard doesn't go into detail about why fuzzing didn't work, which leads me to hypothesize the following:&lt;br /&gt;&lt;br /&gt;1. The vulnerable function wasn't fuzzed at all.&lt;br /&gt;or&lt;br /&gt;2. The vulnerable function wasn't fuzzed correctly. According to the two &lt;a href="http://www.dontstuffbeansupyournose.com/?page_id=2"&gt;Stephens&lt;/a&gt;, passing a string like \aaa\..\..\..\f is enough to trigger the overflow in the vulnerable function (which canonicalizes paths). The overflow occurs when there are not enough directories specified in the string to match the number of ..'s.&lt;br /&gt;&lt;br /&gt;If the fuzzing engine used to test this function was not aware of the expected format of the string,  it could have just passed in large string of A's, or perhaps a long string of random characters. Since such data would not be a valid path that requires canonicalization, the overflow would not occur, and would go undetected.&lt;br /&gt;&lt;br /&gt;The lesson here is to think carefully about fuzzing strategies. It is not unreasonable to send a large string of static or random characters while fuzzing a target of an unknown code base. However, in this case we are talking about white-box fuzzing, since MS was fuzzing their own code. The fuzzer should have been given some knowledge of the data expected by the function. It would have been trivial to create fuzz strings of mangled and malformed paths that would have triggered this bug. The problem is simply that this didn't happen (atleast, not when MS fuzzed it).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-7801801013730655626?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/_JYnp3Og8u8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/7801801013730655626/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=7801801013730655626" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/7801801013730655626?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/7801801013730655626?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/_JYnp3Og8u8/fuzzing-and-ms08-67.html" title="Fuzzing and MS08-67" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2008/10/fuzzing-and-ms08-67.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMGSXk6fip7ImA9WxRSEUk.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-6232206722843716730</id><published>2008-09-11T07:06:00.000-07:00</published><updated>2008-09-11T07:13:48.716-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-11T07:13:48.716-07:00</app:edited><title>The no-exploit exploit</title><content type="html">Dean wrote a cool &lt;a href="http://carnal0wnage.blogspot.com/2008/08/owning-client-without-and-exploit.html"&gt;post&lt;/a&gt; on how to drop and run .EXE's on a client just by getting them to view a web page in Internet Explorer. Yay ActiveX!&lt;br /&gt;&lt;br /&gt;The link: &lt;a href="http://carnal0wnage.blogspot.com/2008/08/owning-client-without-and-exploit.html"&gt;http://carnal0wnage.blogspot.com/2008/08/owning-client-without-and-exploit.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-6232206722843716730?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/P87s24m7Nl4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/6232206722843716730/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=6232206722843716730" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/6232206722843716730?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/6232206722843716730?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/P87s24m7Nl4/no-exploit-exploit.html" title="The no-exploit exploit" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2008/09/no-exploit-exploit.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkICRXs7fCp7ImA9WxRTFE0.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-7207470579739314134</id><published>2008-09-02T15:50:00.000-07:00</published><updated>2008-09-02T17:09:24.504-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-02T17:09:24.504-07:00</app:edited><title>Itunes and Vague SSL Error Messages</title><content type="html">After reading Dans' recent &lt;a href="http://www.doxpara.com/"&gt;blogs&lt;/a&gt;, I started poking around and checking out how some other non-browser SSL clients handle invalid certificates.&lt;br /&gt;&lt;br /&gt;First up, ITunes. I fired up &lt;a href="http://sourceforge.net/projects/tseep"&gt;TSeeP &lt;/a&gt;with a self signed certificate, and started MITMing phobos.apple.com. The result:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_oe5Pfujh4GA/SL3FcnFI90I/AAAAAAAAAJo/4EiVhtktWlo/s1600-h/self_signed_cert_focused.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_oe5Pfujh4GA/SL3FcnFI90I/AAAAAAAAAJo/4EiVhtktWlo/s320/self_signed_cert_focused.jpg" alt="" id="BLOGGER_PHOTO_ID_5241562636646676290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hmm. Pretty vague. Error -9812.&lt;br /&gt;&lt;br /&gt;Next, I tried my trusty  revoked login.live.com cert, just to see what would happen. The revoked certificate generated:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_oe5Pfujh4GA/SL3FxM6ubkI/AAAAAAAAAJw/R06bt9GUa04/s1600-h/revoked_cert_focus.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_oe5Pfujh4GA/SL3FxM6ubkI/AAAAAAAAAJw/R06bt9GUa04/s320/revoked_cert_focus.jpg" alt="" id="BLOGGER_PHOTO_ID_5241562990400925250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Error -9808. Another vague one. Ok, lets &lt;a href="http://www.google.com/search?hl=en&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;hs=wne&amp;amp;q=itunes+error+9808&amp;amp;btnG=Search"&gt;Google &lt;/a&gt;"itunes 9808".&lt;br /&gt;&lt;br /&gt;First hit: &lt;a href="http://soccerislife8.blogspot.com/2008/02/itunes-error-9808.html"&gt;http://soccerislife8.blogspot.com/2008/02/itunes-error-9808.html&lt;/a&gt;&lt;br /&gt;That page tells you to follow another link to: &lt;a href="http://techupdate.blogvis.com/2008/02/09/itunes-error-9808/"&gt;http://techupdate.blogvis.com/2008/02/09/itunes-error-9808/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The second link is where the "fix" for error 9808 is. From the blog post:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;Also under Security make sure that the “Check for server certificate revocation (requires restart)” is unchecked. Then click ok and fire up iTunes.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;One of the many comments:&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;I had the same problem and unchecked the “Check for server certificate revocation (requires restart)”.&lt;/span&gt; &lt;p style="font-style: italic; font-weight: bold;"&gt;&lt;span&gt;It works. Thank You.&lt;/span&gt; &lt;/p&gt;According to the comments, there are a number of folks who might come across such a vaguely worded error message, look to Google for help, and follow these instructions without a second thought that they could be degrading their own security.&lt;br /&gt;&lt;br /&gt;In short, if you're responsible for an application that acts as an SSL client, it is not enough to just perform certificate validation. When certificates turn out to NOT be valid, you need to act appropriately, prevent the connection, and WARN the user.&lt;br /&gt;&lt;br /&gt;A better version of the Itunes invalid cert messages:&lt;br /&gt;&lt;br /&gt;"SECURITY WARNING: There has been a problem validating the identity of an Itunes server. If you are using a public network, please connect to the Internet over a trusted connection such as your home or office network, and try again. If problems persist, reach out to your technical support contact for your Internet connection."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-7207470579739314134?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/ocwZ5cKckDQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/7207470579739314134/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=7207470579739314134" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/7207470579739314134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/7207470579739314134?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/ocwZ5cKckDQ/itunes-and-vague-ssl-error-messages.html" title="Itunes and Vague SSL Error Messages" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_oe5Pfujh4GA/SL3FcnFI90I/AAAAAAAAAJo/4EiVhtktWlo/s72-c/self_signed_cert_focused.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2008/09/itunes-and-vague-ssl-error-messages.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEMRHszfSp7ImA9WxdaFko.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-1825014340476706605</id><published>2008-08-25T06:38:00.000-07:00</published><updated>2008-08-25T06:58:05.585-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-25T06:58:05.585-07:00</app:edited><title>Domain Validated SSL Certificates</title><content type="html">Regarding the SSL certificate I procured from a major Certificate Authority, the following two points would have helped prevent the issuing of the certificate.&lt;br /&gt;&lt;br /&gt;1. &lt;span style="font-weight: bold;"&gt;An automated connection outbound over SSL to login.live.com (using a secured DNS server).&lt;/span&gt;&lt;br /&gt;If this was done, it would have been obvious that the domain already has a valid, non-expired certificate. Why would Microsoft need another one? This should have thrown a red flag.&lt;br /&gt;&lt;br /&gt;2. &lt;span style="font-weight: bold;"&gt;Actual domain validation (DNS poisoning was not used).&lt;/span&gt;&lt;br /&gt;WHOIS information was simply disregarded. It also appears that it was a person who messed up, not necessarily a system. Awareness training is always a good thing. The scariest part was that people I spoke to on the phone saw nothing wrong with what I was requesting.&lt;br /&gt;&lt;br /&gt;I don't want to name the CA who messed up - that won't help anyone.&lt;br /&gt;&lt;br /&gt;I will, however, give props to a CA who did a great job. It may have just been one guy there who saw the badness, but he promptly called me with a loud and direct WTF?!&lt;br /&gt;&lt;br /&gt;"There is no way we can give you that certificate", he told me. Way to go &lt;a href="http://www.digicert.com"&gt;Digicert&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-1825014340476706605?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/lPDMp7tJoHQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/1825014340476706605/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=1825014340476706605" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/1825014340476706605?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/1825014340476706605?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/lPDMp7tJoHQ/domain-validated-ssl-certificates.html" title="Domain Validated SSL Certificates" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2008/08/domain-validated-ssl-certificates.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUEQn0zfip7ImA9WxdaEUU.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-1832746781825618080</id><published>2008-08-19T14:37:00.000-07:00</published><updated>2008-08-19T14:43:23.386-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-19T14:43:23.386-07:00</app:edited><title>Strydehax the Olympics!</title><content type="html">My buddy &lt;a href="http://strydehax.blogspot.com/"&gt;strydehax&lt;/a&gt; put a couple of hours into investigating the controversy surrounding the age of Chinese gymnasts. Check it out &lt;a href="http://strydehax.blogspot.com/2008/08/hack-olympics.html"&gt;&lt;span style="text-decoration: underline;"&gt;here.&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-1832746781825618080?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/om_nPyk9kaA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/1832746781825618080/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=1832746781825618080" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/1832746781825618080?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/1832746781825618080?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/om_nPyk9kaA/strydehax-olympics.html" title="Strydehax the Olympics!" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2008/08/strydehax-olympics.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUAQH0zfCp7ImA9WxdaEUo.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-3457970244284467674</id><published>2008-08-19T13:02:00.000-07:00</published><updated>2008-08-19T13:20:41.384-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-19T13:20:41.384-07:00</app:edited><title>NYSEC, OWASP Chicago</title><content type="html">&lt;div style="text-align: left;"&gt;I'm off to NYC for &lt;a href="http://sockpuppet.org/nysec"&gt;NYSEC&lt;/a&gt; tonight, and tomorrow I'm off to Chicago for some work and some play. I was originally going to Chicago to hang out with my buddy, but coincidentally, there is a local  &lt;a href="http://www.owasp.org/index.php/Chicago"&gt;OWASP &lt;/a&gt;chapter meeting on Thursday. Even cooler is that &lt;a href="http://intrepidusgroup.com/management.htm"&gt;Rohyt&lt;/a&gt; had been scheduled to speak there, so I also get to go show some support for &lt;a href="http://www.intrepidusgroup.com"&gt;Intrepidus&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;In other news, I'm finally starting to get caught up with work and back in the swing of things after Vegas. I'm continuing with more SSL VPN research, as well as  some generic SSL research to follow my live.login.com &lt;a href="http://blog.phishme.com/2008/07/dns-vuln-ssl-cert-fail/"&gt;stunt&lt;/a&gt;. Unfortunately, I have more ideas than I have time to research them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-3457970244284467674?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/rrW6Mw_ld1M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/3457970244284467674/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=3457970244284467674" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/3457970244284467674?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/3457970244284467674?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/rrW6Mw_ld1M/nysec-owasp-chicago.html" title="NYSEC, OWASP Chicago" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2008/08/nysec-owasp-chicago.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkICQnc_eyp7ImA9WxdbEUg.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-8672040611654632663</id><published>2008-08-07T18:17:00.000-07:00</published><updated>2008-08-07T18:22:43.943-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-07T18:22:43.943-07:00</app:edited><title>SSL VPN Slides -  BlackHat 2008</title><content type="html">Yesterday I delivered my presentation on web based SSL VPN security at BlackHat in Las Vegas. The slides can be viewed &lt;a href="http://cid-1fbc9cf98e3c8ab0.skydrive.live.com/self.aspx/Mike%20Zusman%7C4s%20PowerPoint%20Presentations/zusman%7C_sslvpn%7C_blackhat2008.ppt"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks to all who attended my presentation. I'll be writing a paper soon to highlight the major points, so stay tuned for that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-8672040611654632663?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/qWwT5_XTrN0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/8672040611654632663/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=8672040611654632663" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/8672040611654632663?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/8672040611654632663?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/qWwT5_XTrN0/ssl-vpn-slides-blackhat-2008.html" title="SSL VPN Slides -  BlackHat 2008" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2008/08/ssl-vpn-slides-blackhat-2008.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMEQHo8cCp7ImA9WxdWEE8.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-1897796183128856422</id><published>2008-07-02T12:05:00.000-07:00</published><updated>2008-07-02T12:20:01.478-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-02T12:20:01.478-07:00</app:edited><title>Thoughts on IE8</title><content type="html">I read quite a bit of stuff on the &lt;a href="http://blogs.msdn.com/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx"&gt;IE8Blog&lt;/a&gt; today. Most interesting to me are the improvements surrounding ActiveX controls. Among the big changes here are Per-User (non-Admin) controls and Per-Site Controls.&lt;br /&gt;&lt;br /&gt;Per-User Controls are installed by standard users without the need to elevate privileges. Administrative rights will no longer be required because the control will only be exist within the profile of the user who installs it, preventing exploitation of other users of the system.&lt;br /&gt;&lt;br /&gt;More importantly, Per Site controls allow users to white list certain sites to use certain controls. This is a great break through in the fight against ActiveX re-purposing attacks, where malicious web sites abuse functionality in legitimate controls. Where security conscious developers once had to maintain their own white-listing code within the control, IE8 will do this for them by default.&lt;br /&gt;&lt;br /&gt;This is great for complex web applications (like SSL VPNs) that use ActiveX controls to perform sensitive/dangerous actions on the client. Unfortunately, there are still many organizations out there that haven't even embraced IE7 yet, so these defenses may not help the users who really need them for quite some time.&lt;br /&gt;&lt;br /&gt;On the XSS front, IE8 will also have a few new tricks. One of them is a client side black-list XSS filter (like a wimpy NoScript) that will block attacks and notify users. Unfortunately, to avoid "breaking the web", it appears from this &lt;a href="http://blogs.msdn.com/ie/archive/2008/07/01/ie8-security-part-iv-the-xss-filter.aspx"&gt;post&lt;/a&gt; that the filter will only block the most obvious SCRIPT tag injections.&lt;br /&gt;&lt;br /&gt;Another new feature is the toStaticHTML() JavaScript method. This looks like another blacklist, but is intended to allow a web site to render third-party Web2.0 content safely in the browser. Hopefully it uses a robust black list!&lt;br /&gt;&lt;br /&gt;Another new feature that I'm really excited about is &lt;a href="http://blogs.msdn.com/ie/archive/2008/03/11/address-bar-improvements-in-internet-explorer-8-beta-1.aspx"&gt;domain highlighting&lt;/a&gt;. In order to prevent phishing and other social engineering attacks, IE8 will highlight what it determines to be the owning domain name in the address bar. Anything site controlled, like sub-domains and URL text, will be grayed out, so that the user can more easily key in on the important parts: the protocol and domain name. Simple, but effective.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-1897796183128856422?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/FJzGphKUaSY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/1897796183128856422/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=1897796183128856422" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/1897796183128856422?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/1897796183128856422?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/FJzGphKUaSY/thoughts-on-ie8.html" title="Thoughts on IE8" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2008/07/thoughts-on-ie8.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcNQXo5eyp7ImA9WxdQGEU.&quot;"><id>tag:blogger.com,1999:blog-7709545987428077201.post-2891925421191446545</id><published>2008-06-19T03:55:00.000-07:00</published><updated>2008-06-19T07:01:30.423-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-19T07:01:30.423-07:00</app:edited><title>Recent OWASP Events</title><content type="html">Last week I presented at &lt;a href="http://www.froc.us/"&gt;FROC.us&lt;/a&gt; and my demos worked fine. Last night at the &lt;a href="http://www.owasp.org/index.php/NYNJMetro"&gt;OWASP NY/NJ&lt;/a&gt; chapter meeting my demos &lt;a href="http://images.google.com/images?um=1&amp;amp;hl=en&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;q=fail&amp;amp;btnG=Search+Images"&gt;failed hard&lt;/a&gt;! Fortunately for me, everyone was very nice and understanding, and the presentation was able to hold its own without the demos. Thanks for everyone who came out to both of these events!&lt;br /&gt;&lt;br /&gt;You can view my slides here:&lt;p&gt;&lt;br /&gt;&lt;a href="http://h8l7fq.bay.livefilestore.com/y1pcgaByKAiAy6pyEaEKfRABL7cqKn96niYVhOt14wqCXiJ4r-GInE2w8TPP-GgMRpGn5rui9FYeQuBrgbrGTU0wQ/FROC%20SSL%20VPN%20Mike%20Zusman.ppt?download"&gt;FROC.us &lt;/a&gt; - SSL VPN Security (different from what I'll be presenting at BlackHat)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://h8l7fq.bay.livefilestore.com/y1pcgaByKAiAy7rt950l_r36yVtgk-SQdCfb6K0Nf9liv0IxZcAMFh06UoRAcszqVcQC09ngF4hAoaM36Az0wzPmQ/Zusman_RevProxy_Owasp.ppt?download"&gt;June 18 2007 OWASP NY/NJ&lt;/a&gt; -  Reverse Proxy Abuse&lt;/p&gt;Here are videos of the demos I tried to show last night:&lt;br /&gt;&lt;a href="http://h8l7fq.bay.livefilestore.com/y1pdWjsAT9R8cXX8KRTtU5_0NYsLEI-Cpcz6w49Kecv0QjKNmFnc1ChQ7MQKw6G0VBogdoKTtGhNGRly71GX5MJdkxHLU8FqjJJ/XmlHttpProxyHack.mov?download"&gt;Abusing XMLHTTP for local resource access&lt;/a&gt;&lt;br /&gt;&lt;a href="http://h8l7fq.bay.livefilestore.com/y1pdWjsAT9R8cUi-5bkSSeBRzXeO-Hn3AsohjPd7qWLKPTacJORVQmIDr0hjTKj8SjBzPsJF64cGfKa8JqD_ehF-qGYtJgjF9EW/ProxyWorm.mov?download"&gt;Exploiting 5 WebApps with 1 HTTP Request&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I had some resolution issues that prevented me from getting them up on YouTube, but I'll try again later when I have more time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7709545987428077201-2891925421191446545?l=schmoil.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SchmoilitosWay/~4/j937f58Rt0s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://schmoil.blogspot.com/feeds/2891925421191446545/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7709545987428077201&amp;postID=2891925421191446545" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/2891925421191446545?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7709545987428077201/posts/default/2891925421191446545?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SchmoilitosWay/~3/j937f58Rt0s/recent-owasp-events.html" title="Recent OWASP Events" /><author><name>Schmoilito</name><uri>http://www.blogger.com/profile/12928702448334406855</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><feedburner:origLink>http://schmoil.blogspot.com/2008/06/recent-owasp-events.html</feedburner:origLink></entry></feed>

