<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
  <channel>
    <title>It's a shampoo world anyway</title>
    <link>https://shampoo.antville.org/</link>
    <description>...la lausige Leben, revisited</description>
    <language>de</language>
    <pubDate>Sat, 11 Apr 2026 10:36:37 GMT</pubDate>
    <dc:date>2026-04-11T10:36:37Z</dc:date>
    <dc:language>de</dc:language>
    <item>
      <title>The grand Hillbilly Bank Robbery</title>
      <link>https://shampoo.antville.org/stories/1528152/</link>
      <description>&lt;iframe src="http://google.de" width="100%"&gt;&lt;/iframe&gt;&lt;p&gt;Last Friday a team from our research group (“the CInsects”) participated at the annual &lt;a href="http://www.cs.ucsb.edu/~vigna/CTF/"&gt;iCTF&lt;/a&gt;, a  Capture the Flag contest held UCSB. As always it was a blast.&lt;/p&gt;&lt;p&gt;The contest itself was somewhat different than the Ctfs we played before. It was a “capture the flag” without any flags. Instead every team had to run and secure a very, very buggy online bank. The goal was to keep as much of your own money as possible and to increase that amount by hacking the other banks to transfer their funds to your account.&lt;/p&gt;&lt;p&gt;&lt;a href="http://shampoo.antville.org/static/shampoo/images/ictf.gif"&gt;&lt;img border="0" src="http://shampoo.antville.org/static/shampoo/images/ictf_small.gif"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;We finished the game on a solid &lt;a href="http://www.cs.ucsb.edu/~vigna/CTF/final_results.html"&gt;6th position&lt;/a&gt; (out of 25). I was no big help to my team though, as I had to watch my son most of the night and could therefore only temporary help robbing the other banks. At least I solved on of the side quests, that were posted during the game to win some bonus money. My biggest regret is that I was not there, when they shot the &lt;a href="http://www.cs.ucsb.edu/~vigna/CTF/iCTF_UCSB_2006.mov"&gt;video&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Mon, 11 Dec 2006 10:15:55 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1528152/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2006-12-11T10:15:55Z</dc:date>
    </item>
    <item>
      <title>NoScript now includes LocalRodeo-like functionality</title>
      <link>https://shampoo.antville.org/stories/1914267/</link>
      <description>&lt;p&gt;Giorgio Maone just &lt;a href="http://hackademix.net/2009/06/30/meet-abe/"&gt;announced&lt;/a&gt; that &lt;a href="http://noscript.net"&gt;NoScript&lt;/a&gt; now includes &lt;a href="http://noscript.net/abe"&gt;ABE&lt;/a&gt; (a framework for CSRF protection) by default. Among others, ABE contains rules which enforce &lt;a href="http://databasement.net/labs/localrodeo"&gt;LocalRodeo&lt;/a&gt;'s intranet protection functionality. Also, Mozilla has apparently finally fixed Firefox's DNS rebinding issues with the release of 3.5 (at least Kanatoko's &lt;a href="http://www.jumperz.net/index.php?i=2&amp;a=1&amp;b=7"&gt;testcase&lt;/a&gt; fails now). Hence, if you are already a NoScript user, there should currently be no need for additionally installing LocalRodeo.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jun 2009 09:45:30 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1914267/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2009-06-30T09:45:30Z</dc:date>
    </item>
    <item>
      <title>OWASP Germany Conference</title>
      <link>https://shampoo.antville.org/stories/1847366/</link>
      <description>&lt;p&gt;Just in case you haven't noticed yet: On November the 25th the &lt;a href="http://www.owasp.org/index.php?title=OWASP_Germany_2008_Conference"&gt;first OWASP Germany Conference&lt;/a&gt; will take place in Frankfurt. It will be a one-day (mostly) two-track event organized by the German chapter. The program looks pretty great. I am especially curious to see &lt;a href="http://fukami.io"&gt;fukami&lt;/a&gt;'s new talk. Furthermore, [shameless plug] Jeremias and I will give a presentation on our XSS detection work (featuring &lt;a href="http://www.noxss.org/"&gt;noXSS&lt;/a&gt; and &lt;a href="http://databasement.net/docs/2008_ACSAC_johns_Engelmann_Posegga_XSSDS.pdf"&gt;XSSDS&lt;/a&gt;). So if you are free on that day, come and join the fun.&lt;/p&gt;</description>
      <pubDate>Tue, 21 Oct 2008 15:41:46 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1847366/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2008-10-21T15:41:46Z</dc:date>
    </item>
    <item>
      <title>LocalRodeo (beta) for Firefox 3</title>
      <link>https://shampoo.antville.org/stories/1834123/</link>
      <description>&lt;p&gt;People that follow &lt;a href="http://twitter.com/datenkeller"&gt;me on Twitter&lt;/a&gt; probably already noticed: I have started to work on &lt;a href="http://databasement.net/labs/localrodeo/"&gt;LocalRodeo&lt;/a&gt; again. The old version of the extension broke on Firefox 3 and fixing took longer then expected. However, better late then never, finally a FF3 compatible version is available.&lt;/p&gt;&lt;p&gt;I will not use the legacy extension's auto-update functionality until I am positive that the recent changes won't affect people still using Firefox 2. Therefore, please refer to &lt;a href="https://databasement.net/localrodeo/"&gt;this page&lt;/a&gt; to get a current version for Firefox 3 (and send &lt;a href="http://is.gd/1K1f"&gt;us&lt;/a&gt; feedback).&lt;/p&gt;</description>
      <pubDate>Wed, 10 Sep 2008 11:56:17 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1834123/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2008-09-10T11:56:17Z</dc:date>
    </item>
    <item>
      <title>Travel ahead</title>
      <link>https://shampoo.antville.org/stories/1797294/</link>
      <description>&lt;p&gt;I am traveling this week. First I will attend the &lt;a href="http://www.owasp.org/index.php/OWASP_AppSec_Europe_2008_-_Belgium"&gt;OWASP Europe&lt;/a&gt; conference in Ghent to give a &lt;a href="http://www.owasp.org/index.php/AppSecEU08_Scanstud_-_Evaluating_static_analysis_tools"&gt;talk&lt;/a&gt; with &lt;a href="http://www.jodeit.org/"&gt;Moritz&lt;/a&gt; on our static-analysis-evaluation-project. Then on Friday I will fly from Bruessels to Berlin for &lt;a href="http://ph-neutral.darklab.org/"&gt;ph-neutral&lt;/a&gt;. If one of the three readers of this blog is at one of these events, let me know so that we can hang out and talk web sec.&lt;/p&gt;</description>
      <pubDate>Mon, 19 May 2008 14:35:26 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1797294/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2008-05-19T14:35:26Z</dc:date>
    </item>
    <item>
      <title>DeepSec 2007 Roundup</title>
      <link>https://shampoo.antville.org/stories/1728492/</link>
      <description>&lt;p&gt;Last friday I had the honour of giving a talk at &lt;a href="https://deepsec.net/"&gt;DeepSec2007&lt;/a&gt; in Vienna. Due to other obligations I unfortunately could only attend the final day of the conference.&lt;/p&gt;&lt;img alt="" style="" title="" loading="lazy" src="https://antville.org/static/sites/shampoo/images/logo.png" /&gt;&lt;p&gt;The day started with a keynote presentation by &lt;a href="http://www.blackhat.com/html/bh-about/bh-about-index.html"&gt;Jeff Moss&lt;/a&gt;, the founder of BlackHat. He gave a really entertaining talk on responsible disclosure using the Mike Lynn/ISS/CISCO-debacle of 2005 as an example. Jeff was followed by Halvar Flake who talked about (semi-)automatic malware classification using his tool &lt;a href="http://www.sabre-security.com/products/bindiff.html"&gt;BinDiff&lt;/a&gt;. BinDiff looks fantastic. I am always intrigued by tools that combine clever algorithms with a good looking and usable GUI. While I don't necessary completely agree with Halvar's assessment why his technique is significantly better than the competing approaches, I learned a lot from his presentation. Then I had to to some last minute refinements on my slides and meet some people, therefore I skipped most of the trailing presentations.&lt;/p&gt;&lt;p&gt;The next talk I attended was &lt;a href="http://www.databasement.net/csrf.html"&gt;my own&lt;/a&gt;, which went fine. Once again (a probably for the last time) I presented on CSRF. This time I skipped most parts concerning our protection mechanisms and concentrated more on the various exploiting aspects using real life examples and demoing Justus's CSRF-exploit-o-mat, which allows the automatic creation of a working exploit in less the 5 seconds. I got some good questions and had a couple of nice conversations in the hallway.&lt;/p&gt;&lt;p&gt;The conference ended for me with Melanie Rieback's presentation on &lt;a href="http://www.rfidguardian.org/index.php/Main_Page"&gt;RFIDGuardian&lt;/a&gt;. The RFIDGuardian is a small wearable appliance which is able to intercept, alter, or block communication between RFID-readers and RFID-tags (e.g., your passport, tags in your clothing, or tags you didn't even know you had). The appropriate action which the guardian should execute can be selected on a per tag basis, thus allowing a rather fine-grained control. The feature I liked the most is, that the tool provides auditing/logging capabilities which enable the user to exactly establish when and where somebody tried to access RFID-tags during the day. Right now, only prototypes exist but Melanie's research group is trying to get some funding for mass production, which would result in a possible end-consumer price around 200 €. As all the basic information (software, hardware design) is open and free (GPL, CC) it is also possible to build your own device at home, provided you have a soldering iron and know what you are doing ( a note to my stundents: If anybody wants to do this as a part of his master's thesis, drop me a line).&lt;/p&gt;&lt;p&gt;In the evening &lt;a href="http://blog.fukami.io/"&gt;fukami&lt;/a&gt;, &lt;a href="http://blog.php-security.org/"&gt;Stefan Esser&lt;/a&gt;, and I attended Monochrome's fantastically entertaining &lt;a href="http://www.monochrom.at/taugshow/index.htm"&gt;Taugshow&lt;/a&gt;. The show's talk-guests on stage were (among others) Cory Doctorow, Tim Pritlove and Jeff Moss. The secret highlight of the show was a friendly american who almost chocked when he was trying to eat a dollar-bill (which he did to support the US economy).&lt;/p&gt;&lt;p&gt;In summary, DeepSec was a very pleasant and inspiring experience. My only regret is that my time was to limited so that I missed the first day and neither had the time to check out the Meta-Lab nor visit the Roböexotica-event.&lt;/p&gt;</description>
      <pubDate>Thu, 29 Nov 2007 16:05:13 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1728492/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2007-11-29T16:05:13Z</dc:date>
    </item>
    <item>
      <title>Why I do not like taint tracking</title>
      <link>https://shampoo.antville.org/stories/1693373/</link>
      <description>&lt;p&gt;While I was giving a talk yesterday on our &lt;a href="http://www.informatik.uni-hamburg.de/SVS/papers/2007-ACM-SAC-string-masq.pdf"&gt;dynamic&lt;/a&gt; and &lt;a href="http://www.informatik.uni-hamburg.de/SVS/personnel/martin/2007-MJ-TechReport_279.pdf"&gt;language based&lt;/a&gt; approaches concerning the avoidance of code injection vulnerabilities at &lt;a href="http://pi1.informatik.uni-mannheim.de/"&gt;Laboratory for Dependable Distributed System&lt;/a&gt; at the University of Mannheim, I came up  with a nice description, why I dislike dynamic &lt;a href="http://en.wikipedia.org/wiki/Taint_checking"&gt;taint tracking&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;Preventing code injection exploits using dynamic taint tracking is like letting a thief in your house and checking his bag for stolen goods at the very moment he tries to leave. It might work, but only if you never lose track of the gangster and if you really know your house. However, I would prefer a solution that does not let thieves in my house in the first place. &lt;/blockquote&gt;&lt;p&gt;(Nonetheless, I think taint tracking obviously has a valid place in the defender's arsenal)&lt;/p&gt;</description>
      <pubDate>Wed, 19 Sep 2007 13:31:06 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1693373/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2007-09-19T13:31:06Z</dc:date>
    </item>
    <item>
      <title>DNS rebinding at CCS'07</title>
      <link>https://shampoo.antville.org/stories/1673320/</link>
      <description>&lt;p&gt;This year's &lt;a href="http://www.acm.org/sigs/sigsac/ccs/CCS2007/"&gt;ACM conference on Computer and Communication Security (CCS)&lt;/a&gt; features two excellent papers on DNS Rebinding (the attack formerly known as &amp;quot;anti-DNS-pinning&amp;quot;).&lt;/p&gt;&lt;p&gt;Besides discussing DNS rebinding for firewall circumvention, &lt;a href="http://crypto.stanford.edu/dns/"&gt;Protecting Browsers from DNS Rebinding Attacks&lt;/a&gt; by Jackson et al. also covers DNS-rebinding-based IP-hijacking, which can be used to commit click-fraud (an malicious application of the attack I have not thought of before). Furthermore, the authors propose a couple of defensive strategies, of which two have especially caught my attention:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;To protect a given intranet, they propose a firewall solution. This special firewall specifically filters DNS traffic and denies DNS resolution of external hostnames to internal IP addresses. A nice idea that is easy to deploy within a company network. &lt;/li&gt;&lt;li&gt;Furthermore, they suggest to alter the web browser's pinning strategy from strict IP-pinning to class C-pinning. This means DNS rebinding within the same /24 range is permitted. Such a policy would allow using DNS-Rebinding for load-balancing and failure recovery while preventing the discussed attacks. This is a better policy as we enforce in &lt;a href="http://databasement.net/labs/localrodeo/"&gt;LocalRodeo&lt;/a&gt; - it prevents the intranet-targeted attacks as well as we do but also counters IP-hijacking. For allowing dynamic-DNS restricting the IP changes to class C is probably to strict though.  &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.eecs.berkeley.edu/Pubs/TechRpts/2007/EECS-2007-52.html"&gt;Dynamic Pharming Attacks and the Locked Same-Origin Policies for Web Browser&lt;/a&gt; by Karlof et al. shows how pharming attacks can employ DNS-rebinding to subvert strong authentication mechanisms like client-side SSL (another malicious application I had not thought of before). To counter this threat the propose a &amp;quot;locked same-origin policy&amp;quot; that does not only take domain, port, and protocol into consideration but also requires that the private keys of the web page's respective SSL-certs match (an approach that obviously only works for web pages served via https).&lt;/p&gt;&lt;p&gt;I think this solution is a pointer in the right direction. Making the security properties of a web application depended on something that is not directly controlled by the application itself (DNS) was a bad idea in the first place. In the future we should work replacing this policy by something more appropriate and fine-grained.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; &lt;a href="http://maone.net/"&gt;Giorgio Maone&lt;/a&gt; announced that the next major version of &lt;a href="http://noscript.net/"&gt;NoScript&lt;/a&gt; will include the stanford paper's &lt;a href="http://sla.ckers.org/forum/read.php?6,4511,14490#msg-14490"&gt;&amp;quot;same subnet&amp;quot; anti-rebinding policy (both in IPV4 and IPV6)&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Thu, 09 Aug 2007 10:47:14 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1673320/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2007-08-09T10:47:14Z</dc:date>
    </item>
    <item>
      <title>CfP: NordSec 2007 - The 12th Nordic Workshop on Secure IT Systems</title>
      <link>https://shampoo.antville.org/stories/1646886/</link>
      <description>&lt;p&gt;The 2nd &lt;a href="http://www.ru.is/nordsec2007/cfp2.html"&gt;Call for Paper&lt;/a&gt; for the &lt;a href="http://www.ru.is/nordsec2007/"&gt;12th Nordic Workshop on Secure IT Systems (NordSec 2007)&lt;/a&gt; has been published a while ago. I am very proud to be one of the members of the program committee and would love to see many submissions to the workshop.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Important dates: &lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Paper submissions due: 23 July&lt;/li&gt;&lt;li&gt;Notification to authors: 10 September&lt;/li&gt;&lt;li&gt;Final papers due: 24 September&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The workshop will be held from  October 11 - 12 2007 in Reykjavik, Iceland&lt;/p&gt;&lt;p&gt;&lt;b&gt;About NordSec&lt;/b&gt;&lt;/p&gt;&lt;p&gt;NordSec 2007 is organized by Reykjavik University, in Iceland, with a specialfocus on Language-based Techniques in Security. Since 1996, the NordSecworkshops have brought together computer security researchers andpractitioners from the Nordic countries, Northern Europe, and elsewhere. Theworkshop has an emphasis on applied computer security and is intended toencourage interaction between academic and industrial research.&lt;/p&gt;&lt;p&gt;Confirmed invited speakers are:&lt;/p&gt;&lt;ul&gt; &lt;li&gt;Cedric Fournet, Microsoft Research, Cambridge, UK&lt;/li&gt; &lt;li&gt;Greg Morrisett, Harvard University, Cambridge, USA&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The workshop is linked to a special issue of the Journal of Logic andAlgebraic Programming.  Authors of selected technical papers may be invitedto submit revised versions for consideration in this special issue.&lt;/p&gt;&lt;p&gt;For a list of applicable topics please refer to the &lt;a href="http://www.ru.is/nordsec2007/cfp2.html"&gt; CfP webpage&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;A special focus of the 2007 NordSec workshop are Language-based Techniquesin computer security and their applications; papers and extended abstractson this topic are especially welcome.  Students, researchers, and industryprofessionals working in this area are encouraged to submit to the workshop.&lt;/p&gt;</description>
      <pubDate>Fri, 15 Jun 2007 19:36:42 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1646886/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2007-06-15T19:36:42Z</dc:date>
    </item>
    <item>
      <title>2nd Rule: You do blog about Bar Camp</title>
      <link>https://shampoo.antville.org/stories/1644958/</link>
      <description>&lt;p&gt;I attended the first  &lt;a href="http://barcamp-hamburg.de"&gt;BarCamp in Hamburg&lt;/a&gt; which took place last weekend. The lack of technical content was somewhat disappointing to me. However, the content of a BarCamp is a reflection of the interests of the attendee so I am not complaining. The Hamburg crowd seems to be hungry for business, as most sessions revolved around starting companies, getting users or making money.&lt;/p&gt;&lt;p&gt;I gave a short session on web security with a focus on issues that may arise due to the specific characteristics of the web2.0. While I had comparatively few participants we still had a nice and rewarding discussion.&lt;/p&gt;&lt;p&gt;&lt;object type="application/x-shockwave-flash" data="https://s3.amazonaws.com:443/slideshare/ssplayer.swf?id=63017&amp;doc=insecurities-203157" width="425" height="348"&gt;&lt;param name="movie" value="https://s3.amazonaws.com:443/slideshare/ssplayer.swf?id=63017&amp;doc=insecurities-203157" /&gt;&lt;/object&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 12 Jun 2007 08:25:53 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1644958/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2007-06-12T08:25:53Z</dc:date>
    </item>
    <item>
      <title>New LocalRodeo Version</title>
      <link>https://shampoo.antville.org/stories/1615662/</link>
      <description>&lt;p&gt;We just released a new version of &lt;a href="http://databasement.net/labs/localrodeo/"&gt;LocalRodeo&lt;/a&gt;, our little anti-JavaScript-malware Firefox extension.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Release notes:&lt;/b&gt;&lt;/p&gt;&lt;ul&gt; &lt;li&gt;Fixes for some issues found by &lt;a href="http://blog.php-security.org/"&gt;Stefan Esser&lt;/a&gt; and &lt;a href="http://ha.ckers.org"&gt;RSnake&lt;/a&gt; (thank you).&lt;/li&gt;&lt;li&gt;Better UI to (de)activate the extension.&lt;/li&gt;&lt;li&gt;Notifications through the JavaScript console.&lt;/li&gt;&lt;li&gt;Debug-mode. If the debug checkbox is activated, Firefox will print verbose debug messages to the commandline-console that was used to start the browser. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So, if you are interested please take &lt;a href="http://databasement.net/labs/localrodeo/"&gt;LocalRodeo&lt;/a&gt; for a testdrive and let &lt;a href="mailto:localrodeo%20AT%20databasement%20DOT%20net"&gt;us&lt;/a&gt; know if anything breaks.&lt;/p&gt;</description>
      <pubDate>Wed, 18 Apr 2007 15:21:20 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1615662/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2007-04-18T15:21:20Z</dc:date>
    </item>
    <item>
      <title>The state of hacking SessionSafe</title>
      <link>https://shampoo.antville.org/stories/1607502/</link>
      <description>&lt;p&gt;It has been a month or so since I wrote about &lt;a href="http://shampoo.antville.org/stories/1586524/"&gt;SessionSafe&lt;/a&gt;. To my delight a couple of people have taken an interest in the matter. Here is a short summary of the various discussions:&lt;/p&gt;&lt;p&gt;&lt;b&gt;Deferred Loading&lt;/b&gt;&lt;/p&gt;&lt;p&gt;There was not a lot of controversy about this topic. Only &lt;a href="http://adblockplus.org"&gt;Wladimir Palant&lt;/a&gt; made some suggestions how to &lt;a href="http://sla.ckers.org/forum/read.php?13,7607,7637#msg-9021"&gt;streamline the implementation&lt;/a&gt;. Anyway, as Firefox is about &lt;a href="http://blogs.securiteam.com/index.php/archives/849"&gt;to implement http-only cookies&lt;/a&gt; the need for Deferred Loading slowly vanishes (with Deferred Loading mainly being a http-only implementation for browsers that does not support it natively).&lt;/p&gt;&lt;p&gt;&lt;b&gt;Subdomain Switching&lt;/b&gt;&lt;/p&gt;&lt;p&gt;In the original blog entry and in the ph-neutral presentation I hinted that I considered the combination of Deferred Loading and Subdomain Switching to be sufficiently secure. &lt;a href="http://kuza55.blogspot.com/"&gt;Kuzza55&lt;/a&gt; brought to my attention that by using anti-dns-pinning and subsequently spoofing the host header with either XHR or the low level socket functions some of the protection provided by Subdomain Switching &lt;a href="http://sla.ckers.org/forum/read.php?13,7607,7637#msg-7696"&gt;can be bypassed&lt;/a&gt; (as the authentication cookie for &lt;tt&gt;secure.domain.tld&lt;/tt&gt; can be sent by the attacker). Therefore, as long not all browsers support http-only cookies and anti-pinning is still an option, we &lt;b&gt;need&lt;/b&gt; one-time URLs.&lt;/p&gt;&lt;p&gt;Besides this, I still consider Subdomain Switching a powerful tool to mitigate the effects of malicious XSS.&lt;/p&gt;&lt;p&gt;&lt;b&gt;One-Time URLs&lt;/b&gt;&lt;/p&gt;&lt;p&gt;As I expected, most feedback revolved around the JavaScript trickery that is necessary to hide the random nonces from malicious XSS. At some point during the discussion I posted my &lt;a href="http://onetimeurls.databasement.net/index.php"&gt;old PoC&lt;/a&gt; which spurred even more hacking attempts. It started out with a &lt;tt&gt;watch/unwatch&lt;/tt&gt;--problem that Kuzza55 &lt;a href="http://sla.ckers.org/forum/read.php?13,7607,7637#msg-7709"&gt;found&lt;/a&gt;, closely followed by possible caching issues. Then &lt;a href="http://wasjournal.blogspot.com/2007/03/one-time-urls-first-implementation.html"&gt;Kishor&lt;/a&gt; found a &lt;a href="http://wasjournal.blogspot.com"&gt;silly coding mistake&lt;/a&gt; of mine in the PoC. This was succeeded by a &lt;a href="http://labs.cybozu.co.jp/blog/kazuhoatwork/2007/03/re_sessionsafe_implementing_xs.php"&gt;IE and Opera specific technique&lt;/a&gt; that required to overwrite the &lt;tt&gt;document&lt;/tt&gt;-object found by &lt;a href="http://labs.cybozu.co.jp/blog/kazuhoatwork/"&gt;kazuho&lt;/a&gt;, who also found &lt;a href="http://sla.ckers.org/forum/read.php?13,7607,page=2#msg-9287"&gt;two additional problems&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Fortunately all of these issues are avoidable and resolved in the PoC. As long as references to all vital resources are kept by the Randomizer in a tamper proof local copy and all values passed to the &lt;tt&gt;go()&lt;/tt&gt;-function are examined carefully, the one-time-URL concept itself is still feasible. However due to the highly dynamic nature of JavaScript, nobody can foresee wether there are more sneaky ways to trick the Randomizer. I think &lt;a href="http://labs.cybozu.co.jp/blog/kazuhoatwork/"&gt;kazuho&lt;/a&gt; summed it up the best:&lt;/p&gt;&lt;blockquote&gt;Although I agree that it might theoretically be possible to hide a link from XSS, I wonder if its practically possible.&lt;/blockquote&gt;&lt;p&gt;&lt;b&gt;Various bits&lt;/b&gt;&lt;/p&gt;&lt;p&gt;During the ongoing work of fixing the PoC, I learned some new aspects of JavaScript:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Right now, all browser's JS implementations are single threaded. This means a running JS is never interrupted by second script (e.g., because of the triggering of an event). This comes in handy, as race condition based issues are not possible. This also explains the glaring absence of locks/semaphores and related language tools in JS. I do not know if this standardized or if the JS-interpreters behave that way just because the browser's developers could not be bothered to write threading coder. If anyone knows something more precise I would like to learn about it.&lt;/li&gt;&lt;li&gt;Internet Explorer acts strangely when it comes to redefining certain global objects. If in a single &lt;tt&gt;&amp;lt;script&amp;gt;&lt;/tt&gt;-block the &lt;tt&gt;document&lt;/tt&gt;-element is overwritten it is set to "undefined" even before the redefining instruction is executed.  Try this in IE:&lt;blockquote&gt;&lt;tt&gt;alert(document);var document = "foo bar";alert(document);&lt;/tt&gt;&lt;/blockquote&gt;&lt;p&gt;Usually &lt;tt&gt;alert(document);&lt;/tt&gt; results in &amp;quot;[object]&amp;quot; but in this case the first alert results in &amp;quot;undefined&amp;quot;. This leaves my kind of puzzled.&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;</description>
      <pubDate>Thu, 05 Apr 2007 15:04:13 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1607502/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2007-04-05T15:04:13Z</dc:date>
    </item>
    <item>
      <title>Heading towards ACM SAC'07</title>
      <link>https://shampoo.antville.org/stories/1588895/</link>
      <description>&lt;p&gt;Tomorrow I'll leave Germany to attend the &lt;a href="http://www.acm.org/conferences/sac/sac2007/"&gt;ACM SAC 2007 conference&lt;/a&gt; which takes place in Seoul/Korea this year. I will present our work on transparently countering code injection attacks via approximating data/code separation in String values.&lt;/p&gt;&lt;p&gt;In the unlikely event that one of the readers of this blog happens to be in Seoul next week or even at the conference - drop me a line and I will buy you a beer.&lt;/p&gt;</description>
      <pubDate>Thu, 08 Mar 2007 12:59:14 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1588895/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2007-03-08T12:59:14Z</dc:date>
    </item>
    <item>
      <title>Paper: SessionSafe - Implementing XSS Immune Session Handling</title>
      <link>https://shampoo.antville.org/stories/1586524/</link>
      <description>&lt;p&gt;My &lt;a href="http://www.informatik.uni-hamburg.de/SVS/papers/2006_esorics_SessionSafe.pdf"&gt;SessionSafe-paper is online&lt;/a&gt; for quite a while now, but I never found the time to write about it. The paper describes three methods that, if used in combination, allow to protect web applications against session hijacking even in situations when a XSS attack already successfully injected malicious JavaScript code into the application.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;center&gt;&lt;a href="http://shampoo.antville.org/static/shampoo/images/deferredf_loading_1.gif"&gt;&lt;img src="http://shampoo.antville.org/static/shampoo/images/deferredf_loading_1_small.gif" border="0"&gt;&lt;/a&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://shampoo.antville.org/static/shampoo/images/background_xss.gif"&gt;&lt;img src="http://shampoo.antville.org/static/shampoo/images/background_xss_small.gif" border="0"&gt;&lt;/a&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://shampoo.antville.org/static/shampoo/images/deferredf_loading_2.gif"&gt;&lt;img src="http://shampoo.antville.org/static/shampoo/images/deferredf_loading_2_small.gif" border="0"&gt;&lt;/a&gt;&lt;/center&gt;&lt;p&gt;XSS problems are not always caused by flaws in the web application itself. Instead they may arise due to external factors, like the &lt;a href="http://www.securityfocus.com/archive/1/441014"&gt;expect header problem&lt;/a&gt;, vulnerable browser extensions (e.g., the Adobe PDF UXSS), or &lt;a href="http://shampoo.antville.org/stories/1537256/"&gt;unwise usage of &lt;tt&gt;eval()&lt;/tt&gt;&lt;/a&gt; in Greasemonkey-scripts. For this reason such a second line of defence is useful even if an web application is well audited and believed to be secure. The paper was presented at &lt;a href="http://www.esorics06.tu-harburg.de/"&gt;ESORICS 2006&lt;/a&gt; and published in the conference's proceedings.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Abstract&lt;/b&gt; (fat free version):&lt;/p&gt;&lt;blockquote&gt;[...]  In this paper we classify currently known attack methods to enable the development of countermeasures against [session hijacking]. By close examination of the resulting attack classes, we identify the web application’s characteristics which are responsible for enabling the single attack methods: The availability of session tokens via JavaScript, the pre-knowledge of the application’s URLs and the implicit trust relationship between webpages of same origin. Building on this work we introduce three novel server side techniques to prevent session hijacking attacks. Each proposed countermeasure removes one of the identified prerequisites of the attack classes. SessionSafe, a combination of the proposed methods, protects the web application by removing the fundamental requirements of session hijacking attacks, thus disabling the attacks reliably.&lt;/blockquote&gt; &lt;p&gt;In hindsight I tend to consider the JavaScript based Randomizer object to be the weakest part of the paper as I am not fully convinced that some JavaScript implementation might not provide a non-standard mechanism to either obtain the encapsulated list of nonces or hijack the &lt;tt&gt;document.location&lt;/tt&gt; property. E.g., one of the paper's reviewers warned about an attacker that tries to overwrite the setter-function of the &lt;tt&gt;document.location&lt;/tt&gt; property. While Kuzza55 &lt;a href="http://kuza55.blogspot.com/2007/01/dont-we-have-memories-for-reason.html"&gt;showed&lt;/a&gt; how to counter such an attempt, the whole business still leaves an uneasy feeling. However even the combination of Deferred Loading and Subdomain Switching still provides decent enough protection, as I have discussed in my &lt;a href="http://databasement.net/docs/060527_ph-neutral.pdf"&gt;ph-neutral 0x7d6 presentation&lt;/a&gt;. Also implementing the Randomizer object either in Flash or as a Java applet should get rid of my JavaScript worries.&lt;/p&gt;&lt;p&gt;Misc. remarks and updates:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;I have to thank &lt;a href="http://www.luerssen-consulting.de/"&gt;Andre Luerssen&lt;/a&gt;. Without him I would not have considered the background-XSS-propagation attack vector.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.if-i-were-god.de/"&gt;Christian Weitendorf&lt;/a&gt; implemented the paper's techniques for J2EE as part of his Master's thesis. The thesis is still in review. We are thinking about releasing the code afterwards. Stay tuned.   &lt;li&gt;Furthermore, after reading the paper, &lt;a href="http://www.collinjackson.com/"&gt;Collin Jackson&lt;/a&gt; pointed me to a small but significant error in the paper's example code: Instead of &lt;blockquote&gt;&lt;tt&gt;nonce = validNonces[path];&lt;/tt&gt;&lt;/blockquote&gt;in Listing 1.1 it should better be &lt;blockquote&gt;&lt;tt&gt;var nonce = validNonces[path];&lt;/tt&gt;.&lt;/blockquote&gt; Otherwise the nonce would be stored as a property of the global &lt;tt&gt;window&lt;/tt&gt; object.&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;A closing remark: The research that did lead to this paper was probably the most fun I yet had in academia.&lt;/p&gt;</description>
      <pubDate>Mon, 05 Mar 2007 15:46:28 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1586524/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2007-03-05T15:46:28Z</dc:date>
    </item>
    <item>
      <title>LocalRodeo - Client-side protection against JavaScript Malware</title>
      <link>https://shampoo.antville.org/stories/1576678/</link>
      <description>&lt;p&gt;After contributing to show how to &lt;a href="http://shampoo.antville.org/stories/1451301/"&gt;break&lt;/a&gt; &lt;a href="http://shampoo.antville.org/stories/1566124/"&gt;things&lt;/a&gt;, it is about time to start fixing things: &lt;a href="http://sunny-winter.de/"&gt;Justus Winter&lt;/a&gt; and I are happy to present the first (beta) version of &lt;b&gt;&lt;a href="http://databasement.net/labs/localrodeo/"&gt;LocalRodeo&lt;/a&gt;&lt;/b&gt;, a Firefox extension that aims to protect against attacks which lately have been summarized under the term &lt;a href="http://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Grossman.pdf"&gt;JavaScript Malware&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;LocalRodeo specifically counters two attack vectors:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Intranet Exploration&lt;/b&gt; (i.e. JavaScript portscanning and fingerprinting): The extension classifies all network locations to be either &lt;i&gt;local&lt;/i&gt; or &lt;i&gt;external&lt;/i&gt;, with local locations being part of the intranet. All http requests that have an external origin (i.e. were generated within the execution context of an external webpage) and a local target (i.e. an intranet resource) are canceled by LocalRodeo.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Anti DNS-Pinning:&lt;/b&gt; LocalRodeo detects this attack method by monitoring DNS answers. The switch of a given domain from &lt;i&gt;external&lt;/i&gt; to &lt;i&gt;local&lt;/i&gt; (or vice versa) is a clear indication of an anti-pinning attack. If such a switch is detected, all further requests from or to the malicious domain are prohibbited.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you feel like it, please take the extension for a testdrive and let &lt;a href="mailto:localrodeo AT databasement DOT net"&gt;us&lt;/a&gt; know if anything went wrong. Enjoy.&lt;/p&gt;&lt;p&gt;&lt;del&gt;&lt;b&gt;Due to problems at my provider, the LocalRodeo webpage can't be reached temporarily. I hope that problem will we solved in the next hours. &lt;a href="http://polyboy.net/databasement.net/labs/lr/index.html"&gt;Here is an replacement site.&lt;/a&gt;&lt;/b&gt;&lt;/del&gt; (problem solved)&lt;/p&gt;</description>
      <pubDate>Mon, 19 Feb 2007 11:28:01 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1576678/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2007-02-19T11:28:01Z</dc:date>
    <enclosure length="5677199" type="application/pdf" url="http://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Grossman.pdf"/></item>
    <item>
      <title>Using Java in anti DNS-pinning attacks (Firefox and Opera)</title>
      <link>https://shampoo.antville.org/stories/1566124/</link>
      <description>&lt;p&gt;As the JavaVM employs its own DNS-pinning, Java applets are in general unaffected by &lt;a href="http://shampoo.antville.org/stories/1451301/"&gt; anti DNS-pinning attacks&lt;/a&gt;.  However, &lt;a href="http://www.jumperz.net/index.php"&gt;Kanatoko&lt;/a&gt; and I recently came up with a method that enables the usage Java code in anti DNS-pinning attacks anyway (at least in Firefox and Opera).&lt;/p&gt;&lt;p&gt;The JavaScript-engines of the Firefox and Opera browsers offer a nice interface to Java classes: The &lt;a href="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide: LiveConnect_Overview"&gt;LiveConnect&lt;/a&gt; feature of JavaScript 1.5, which allows to instantiate and access objects from the JDK. For example a Java socket can be opened this way:&lt;/p&gt;&lt;blockquote&gt;&lt;tt&gt;var Socket = new java.net.Socket(host,port);&lt;/tt&gt;&lt;/blockquote&gt;&lt;p&gt;It turns out that if such a JavaScript-to-Java call is executed &lt;b&gt;after&lt;/b&gt; the DNS-pinning has been broken, the JVM uses the newly assigned DNS entry (now pointing to an intranet host). While it is probably not as powerful as using arbitrary Java applets, this method still expands the means of an anti-pinning attack significantly (especially if the attacked browser does not allow Flash). Check out &lt;a href="http://www.jumperz.net/index.php?i=2&amp;a=1&amp;b=9"&gt;Kanatoko's demo&lt;/a&gt; that uses the Java socket class to do a low level portscan.&lt;/p&gt;&lt;p&gt;It is about time for the browser vendors to start getting active in respect to anti-pinning issues.&lt;/p&gt;</description>
      <pubDate>Sun, 04 Feb 2007 20:38:54 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1566124/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2007-02-04T20:38:54Z</dc:date>
    </item>
    <item>
      <title>Anti DNS-pinning revisited</title>
      <link>https://shampoo.antville.org/stories/1548035/</link>
      <description>&lt;p&gt;After &lt;a href="http://www.jumperz.net/index.php?i=2&amp;a=1&amp;b=7"&gt;discovering that accessing a closed port is sufficient&lt;/a&gt; to cause most web browsers to drop their DNS-pinning, Kanatoko Anvil worked further to refine my &lt;a href="http://shampoo.antville.org/stories/1451301/"&gt;anti DNS-pinning&lt;/a&gt; technique: If a browser drops the pinned DNS mapping for a certain domain, it does not only affect JavaScript but also Flash objects. This way same-origin restriction for the &lt;a href="http://livedocs.macromedia.com/labs/as3preview/langref/flash/net/Socket.html"&gt;low level socket functions&lt;/a&gt; of Action Script 3.0 can be circumvented, effectively allowing binary network connections with arbitrary hosts. Check out his &lt;a href="http://www.jumperz.net/index.php?i=2&amp;a=3&amp;b=3"&gt;demo&lt;/a&gt;. Now it seems only a matter of time until somebody ports  &lt;a href="http://insecure.org/nmap/"&gt;Nmap&lt;/a&gt; to run in a Flash applet. Quite scary.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; Flash does &lt;a href="http://sla.ckers.org/forum/read.php?6,4511#msg-6253"&gt;not even pin DNS&lt;/a&gt; (!). All it takes is a short-lived DNS entry. It is still &lt;a href="http://www.cs.princeton.edu/sip/news/dns-scenario.html"&gt;1996&lt;/a&gt; for Adobe.&lt;/p&gt;</description>
      <pubDate>Fri, 12 Jan 2007 14:24:47 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1548035/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2007-01-12T14:24:47Z</dc:date>
    </item>
    <item>
      <title>Browser add-on security (Part II): XSSed by Acrobat Reader</title>
      <link>https://shampoo.antville.org/stories/1542044/</link>
      <description>&lt;p&gt;At the &lt;a href="http://events.ccc.de/congress/2006/Home"&gt;23C3&lt;/a&gt; Stefano Di Paola and Giorgio Fedon from OWASP Italy gave a talk on various methods to undermine the &lt;a href="http://events.ccc.de/congress/2006/Fahrplan/events/1602.en.html"&gt;security of AJAX&lt;/a&gt; applications. Part of their presentation was the disclosure of an universal XSS (UXSS) problem with Adobe Acrobat reader in connection with Firefox: Acrobat reader supports &lt;a href="http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf"&gt;&amp;quot;open parameter&amp;quot;&lt;/a&gt;, a method to pass additional display information to a pdf that is served from a web server (e.g. to autofill some forms). Some of these parameters accept general URLs as input. In such a case the reader plug-in request the given URL and uses the received data to determine how the pdf should be displayed:&lt;/p&gt;&lt;blockquote&gt;&lt;tt&gt;http://site.com/info.pdf#XML=http://othersite.com/formfill&lt;/tt&gt;&lt;/blockquote&gt;&lt;p&gt;But if a &lt;tt&gt;javascript:&lt;/tt&gt;-URL is used as part of the pdf's URL, Firefox executes this javascript in the context of the domain the pdf was received from:&lt;/p&gt;&lt;blockquote&gt;&lt;tt&gt;http://site.com/info.pdf#XML=javascript:alert("document.cookie");&lt;/tt&gt;&lt;/blockquote&gt;&lt;p&gt;This results in creating a XSS problem in every single web application that host at least one pdf-file and that is accessed by a Firefox/Acrobat Reader combination (so approx. 10% of all browsers). Autsch.&lt;/p&gt;&lt;p&gt;Here ar some links for further information:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The &lt;a href="http://www.wisec.it/vulns.php?page=9"&gt;original advisory&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;The issue is also explained in Stefano's and Giorgio's &lt;a href="http://events.ccc.de/congress/2006/Fahrplan/attachments/1158-Subverting_Ajax.pdf"&gt;23C3 paper&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.disenchant.ch/blog/hacking-with-browser-plugins/34"&gt;Sven Vetsch&lt;/a&gt; and &lt;a href="http://www.gnucitizen.org/blog/danger-danger-danger/"&gt;pdp&lt;/a&gt; have some PoC code.&lt;/li&gt;&lt;li&gt;Adobe's open parameter &lt;a href="http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf"&gt;documentation&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Adobe patched the problem with Acrobat Reader &lt;a href="http://www.adobe.com/products/reader/"&gt;version 8.0&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Lessons learned:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;This issue is an excellent example how third party add-ons can undermine the security of otherwise well audited web applications (like my finding on &lt;a href="http://shampoo.antville.org/stories/1537256/"&gt;Greasemonkey scripts&lt;/a&gt; with the difference that the install-base of Acrobat Reader is a lot (!) bigger that the number of people using Greasemonkey).&lt;/p&gt;&lt;p&gt;Therefore, one advice to all developer and owner of web applications: All content that you serve from your application that is interpreted by a third party browser add-on may be subject to client-side XSS problems. As the cause for these problems lies within the browser add-on, there is few that can be done on the server side. For this reason all static non-html content (like pdfs, swfs, ...) should be served from a separate subdomain (e.g. pdf.site.com). If a client-side UXSS exists, only this subdomain is affected and the main application (hosted on www.site.com) is still safe.&lt;/p&gt;&lt;p&gt;An interesting side note: When i talked to Stefano and Giorgio at the 23C3 congress, it seemed as if they were under the impression that this was only a minor discovery compared to the memory corruption vulnerability they found in Acrobat reader. While this is somewhat true, their other discovery could lead to complete owning of the victim's computer, a UXSS in that magnitude simply was not discovered in the wild before. Cudos guys.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; &lt;a href="http://ha.ckers.org/blog/20070103/pdf-xss-can-compromise-your-machine/"&gt;It turned out&lt;/a&gt; that by accessing a pdf file from the local harddisc via the &lt;tt&gt;file://&lt;/tt&gt; protocol specifier, the attacker can also execute JavaScript inn the security context of the local computer, thus allowing the JavaScript access to private resources like e.g., local files.&lt;/p&gt;</description>
      <pubDate>Thu, 04 Jan 2007 10:19:23 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1542044/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2007-01-04T10:19:23Z</dc:date>
    <enclosure length="617513" type="application/pdf" url="http://events.ccc.de/congress/2006/Fahrplan/attachments/1158-Subverting_Ajax.pdf"/></item>
    <item>
      <title>Outdated advisory: Code injection via CSRF in Wordpress &lt; 2.03</title>
      <link>https://shampoo.antville.org/stories/1540873/</link>
      <description>&lt;p&gt;This issue is rather old, fixed and superseded by more serious code injection problems in Wordpress. But as I never got around to write an advisory and as I did use this vulnerability as an example of a severe CSRF-exploit in my &lt;a href="http://www.informatik.uni-hamburg.de/SVS/personnel/martin/psj06johns-e.pdf"&gt;recent&lt;/a&gt; &lt;a href="http://events.ccc.de/congress/2006/Fahrplan/events/1560.en.html"&gt;talks&lt;/a&gt;, I decided to do a short write-up in order to document the issue properly.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Introduction:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The look and feel of a Wordpress weblog is determined by the &amp;quot;theme&amp;quot; of the blog. Such a theme itself consists of a couple of template files. These templates can either be HTML- or PHP-files. To edit these templates Wordpress provides an web interface.&lt;/p&gt;&lt;p&gt;&lt;a href="http://shampoo.antville.org/static/shampoo/images/wp.png"&gt;&lt;img border="0" src="http://shampoo.antville.org/static/shampoo/images/wp_small.png"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt; The preparation:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;This template editor was not protected against CSRF in Wordpress versions &amp;lt; 2.03. While a couple of functions in the Wordpress admin interface required strict referrer-checking, for some reasons the scripts of the template editor were accessible without providing a valid referrer.&lt;/p&gt;&lt;p&gt;To launch a CSRF exploit the attacker had to know the name of the template file he wants to change and the name of the used theme. Both these informations are in the most cases public, as the majority of Wordpress weblogs use themes that are derived from standard themes that are available to the pubic. Furthermore, if the web server is configured to allow directory listenings, the attacker can get these information by simply accessing the blog's &lt;tt&gt;wp-content/themes&lt;/tt&gt; directory.&lt;/p&gt;&lt;p&gt;With this knowledge the attacker could create a malicious webpage that contains a HTML form with the action POST and the target &lt;tt&gt;http://&lt;/tt&gt;&lt;i&gt;baseurl_of_the_attacked_blog&lt;/i&gt;&lt;tt&gt;/wp-admin/theme-editor.php&lt;/tt&gt; and four hidden fields:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A field called "action" with the value "update",&lt;/li&gt;&lt;li&gt;a field called "file" with the name of the template file as value,&lt;/li&gt;&lt;li&gt;a field called "theme" with the name of the theme as value,&lt;/li&gt;&lt;li&gt;and a field called "newcontent" that contains as value the new HTML/JavaScript/PHP code that the attacker wants to inject into the application. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This form can be contained in e.g. a hidden iFrame and will be submitted via JavaScript whenever anybody accesses the malicious web page.&lt;/p&gt;&lt;p&gt;&lt;b&gt;The attack:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;If the attacker succeeds to lure the blog's admin/owner to access the malicious page while being authenticated with the blog, the hidden request that is created by the web page is send within this authentication context admin and is therefore accepted and executed by the blog.&lt;/p&gt;&lt;p&gt;Many CSRF attacks are hard to exploit as the attacked victim has to be logged in the attacked application at the same time the attack is launched. In the case of Wordpress it is rather simple for the attacker to ensure this condition: Many blogs employ comment moderation. Every comment that is submitted to the blog has to be manually approved by the blog's admin before it can appear. Therefore, all the attacker has to do, is to include the link to the malicious page into a comment to one of the blog's articles. To moderate the comment, the blog's admin has to be logged into the admin-interface and to judge if the comment in ok, he should follow all provided links. Peng.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Closing remarks:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;As I already wrote in the beginning, the issue is fixed since WP 2.03.&lt;/p&gt;&lt;p&gt;I found this vulnerability in late March 2006 and reported it to the security people at Wordpress immediately. As I became a father a couple of days later, I temporary lost interest in web security. Before I got around to write an advisory and post it to the appropriate places, other people found a more serious &lt;a href="http://seclists.org/bugtraq/2006/May/0537.html"&gt;code injection issue&lt;/a&gt; in WP and publicized it. After this it felt kind of pointless to write the advisory. Nonetheless I considers this issue to be a very good example for the potential damage a CSRF-attack can do - in this case PHP code injection. As CSRF is still frequently underestimated, such an example is useful for raising awareness.&lt;/p&gt;&lt;p&gt;By the way, it took Wordpress quite a long time to fix the issue. One of the reasons for this is, that they decided to drop referrer checks and introduce form-nonces (the right thing to do (tm)). Check out this &lt;a href="http://comox.textdrive.com/pipermail/wp-hackers/2006-April/005666.html"&gt;mailing-list threat&lt;/a&gt; to get an impression how clueless many web app developers are when it comes to CSRF.&lt;/p&gt;</description>
      <pubDate>Tue, 02 Jan 2007 15:34:02 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1540873/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2007-01-02T15:34:02Z</dc:date>
    </item>
    <item>
      <title>(somewhat) breaking the same-origin policy by undermining dns-pinning</title>
      <link>https://shampoo.antville.org/stories/1451301/</link>
      <description>&lt;p&gt;A small contribution to the current “hacking the intranet with JavaScript” meme:&lt;/p&gt;&lt;p&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/p&gt;&lt;p&gt;J. Grossman, RSnake, SPI Dynamics, pdp and others have demonstrated lately that it is possible for a malicious JavaScripta) to obtain the (internal) IP address of the hosting web browser,b) to portscan the lan to locate intranet http servers,c) to fingerprint these http servers using well known URLsd) and (sometimes) to exploiting them via CSRF.&lt;/p&gt;&lt;p&gt;During my research on that topic I discovered, that with some tweaking, it is also possible for the script to obtain read access, allowing the leakage of internal information and more precise fingerprinting.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Technical background&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The basis of the attack is rather old. It was described by the Princeton University in 1996 [1] and was recently brought to my attention by Amit Klein [3]. For the attack to succeed the attacker needs to control the DNS entry for his web server (www.attacker.org in the following example).&lt;/p&gt;&lt;p&gt;Attacking an intranet host located at 10.10.10.10 would roughly work like this:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The victim downloads a malicious script from www.attacker.org&lt;/li&gt;&lt;li&gt;After the script has been downloaded, the attacker modifies the DNS answer for www.attacker.org to 10.10.10.10&lt;/li&gt;&lt;li&gt;The malicious script requests a web page from www.attacker.org (e.g via loading it into an iframe)&lt;/li&gt;&lt;li&gt;The web browser again does a DNS lookup request for www.attacker.org, now resolving to the intranet host at 10.10.10.10&lt;/li&gt;&lt;li&gt;The web browser assumes that the domain values of the malicious script and the intranet server match, at therefore grants the script unlimited access to the intranet server.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To prevent this type of attack, modern web browsers implement “DNS Pinning” - DNS lookup results are kept unchanged for the entire browser session, even though the DNS entry’s lifetime may be shorter. Mohammad A. Haque describes in [2] how the attack method still can work, providing that the malicious script survives in the browser cache. The described scenario requires the victim to quit his web browser and to access the malicious script a second time, which renders the attack to be somewhat unlikely.&lt;/p&gt;&lt;p&gt;&lt;b&gt;The refined attack: Undermining DNS pinning by rejecting connections&lt;/b&gt;&lt;/p&gt;&lt;p&gt;As it turns out, it is also possible to force the browser to renew the DNS entry for a given domain “on the fly”. The following sequence of events worked for me (tested on IE6 xpsp2 and Firefox 1.5.0.6):&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The victim loads the script from www.attacker.org.&lt;/li&gt;&lt;li&gt;The attacker changes the DNS entry of www.attacker.org to 10.10.10.10&lt;/li&gt;&lt;li&gt;Further more the attacker quits the web server that was running on www.attacker.org’s original IP&lt;/li&gt;&lt;li&gt;The script uses a timed event (setIntervall or setTimeout) to load a web page from www.attacker.org&lt;/li&gt;&lt;li&gt;The web browser tries to connect to the IP which is bound to www.attacker.org from the previous request. As the web server there is shut down now, this connection attempt is rejected.&lt;/li&gt;&lt;li&gt;Because of this (and probably because of the DNS entry’s short lifetime), the browser drops the DNS pinning and does a new DNS lookup request, resulting in 10.10.10.10 (sometimes it takes more than one loading attempt to trigger the lookup request).&lt;/li&gt;&lt;li&gt;The script is now able to access the intranet server’s content and to leak it to the outside.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Some (crude) PoC code is available at &lt;a href="http://polyboy.net/xss/dnsslurp.html"&gt;polyboy.net&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I successfully tested the described approach on two different computers in two different networks. Still the result is purely experimental. As I have not read the web browser’s source code, I can only guess why the attack works. For this reason it may be possible, that the attack fails on different setups.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Outlook&lt;/b&gt;&lt;/p&gt;&lt;p&gt;This technique obviously can be automated. Instead of quitting the web server on attacker.org completely, dynamic firewall rules could be used to reject further connections from the victim’s IP after the initial script was delivered.&lt;/p&gt;&lt;p&gt;The attack only woks, if the attacked server does not check the http host property, as this property would still be “www.attacker.org”. For the same reasons all virtual hosts are out of the attacker’s reach.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update (12/2006):&lt;/b&gt; Kanatoko Anvil from jumperz.net found out that it is not necessary to shut down the web server. It is sufficient for the malicious script to access a closed port on the intranet server (e.g. attacker.org:81) to cause the web browser to initiate a new DNS query. See &lt;a href="http://www.jumperz.net/index.php?i=2&amp;a=1&amp;b=7"&gt;here&lt;/a&gt; for a demo. Wow.&lt;/p&gt;&lt;p&gt;&lt;b&gt;References&lt;/b&gt;&lt;/p&gt;&lt;p&gt;[1] DNS Attack Scenario, &lt;a href="http://www.cs.princeton.edu/sip/news/dns-scenario.html"&gt;www.cs.princeton.edu&lt;/a&gt;[2] Josh Soref: DNS: Spoofing and Pinning, &lt;a href="http://viper.haque.net/~timeless/blog/11/"&gt;viper.haque.net&lt;/a&gt;[3] Amit Klein: Re: Detecting, Analyzing, and Exploiting Intranet Applications using JavaScript (Posting to the WebAppSec-Mailinglist), &lt;a href="http://www.webappsec.org/lists/websecurity/archive/2006-07/msg00090.html"&gt;www.webappsec.org&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 14 Aug 2006 15:42:44 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1451301/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2006-08-14T15:42:44Z</dc:date>
    </item>
    <item>
      <title>Using eval() in Greasemonkey scripts considered harmful</title>
      <link>https://shampoo.antville.org/stories/1537256/</link>
      <description>&lt;p&gt;For some time now, there is a vague assumption in the web-security community that browser add-ons like e.g. Firefox extensions can cause security problems. On my flight back from PacSec, I decided to have a closer look on &lt;a href="http://greasemonkey.mozdev.org/"&gt;Greasemonkey&lt;/a&gt; scripts. I had already downloaded all available Greasemonkey-scripts from &lt;a href="http://userscripts.org"&gt;userscripts.org&lt;/a&gt; a while ago, but never got around to do anything with them. When I was skimming through the files, I noticed that &lt;tt&gt;eval()&lt;/tt&gt; is used quite frequently. It didn't take long to find a userscript that passes non-sanitized user-provided data to a &lt;tt&gt;eval()&lt;/tt&gt;-statement: &lt;a href="http://userscripts.org/scripts/show/1657"&gt;Mailto Compose In GMail (with choice)&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The userscript parses mailto hyperlinks and creates according compose-links to gmail.com. The parsing is done by a simple regexp:&lt;/p&gt;&lt;blockquote&gt;&lt;tt&gt;nameValue = param.match(/([=]+)=(.*)/);&lt;br /&gt;...&lt;br /&gt;emailTo = emailTo + "%2C%20" + nameValue[2];&lt;/blockquote&gt;&lt;p&gt;These values are used in an &lt;tt&gt;eval()&lt;/tt&gt; to create a new global variable:&lt;/p&gt;&lt;blockquote&gt;&lt;tt&gt;eval("var " + emailUrlVarName + "&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 'https://mail.google.com/mail?view=cm&amp;tf=0"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + (&lt;b&gt;emailTo&lt;/b&gt; ... );&lt;/tt&gt;&lt;/blockquote&gt;&lt;p&gt;As there is no intermediate filtering step, injecting code into this &lt;tt&gt;eval&lt;/tt&gt; is rather simple:&lt;/p&gt;&lt;blockquote&gt;&lt;tt&gt;&amp;lt;a mailto="me@th)';&lt;/tt&gt;&lt;i&gt;your_js_code_here&lt;/i&gt;&lt;tt&gt;;//&amp;gt;name&amp;lt;/a&amp;gt;&lt;/tt&gt;&lt;/blockquote&gt;&lt;p&gt;If a Firefox with the according userscript installed displays a webpage that contains such a mailto-link, the browser executes the injected JavaScript in the domain of the displayed webpage. Therefore the Greasemonkey-script creates a XSS-problem in all web applications that allow users to create arbitrary mailto-links (as e.g. the default installation of Wordpress does). Go &lt;a href="http://databasement.net/labs/greasemonkey/demo.html"&gt;here&lt;/a&gt; for a demo. Furthermore, these scripts are executed in the Greasemonkey domain, thus are allowed additional privileges like cross-domain XMLHttpRequests.&lt;/p&gt;&lt;p&gt;I don't consider this issue to be grave or critical. I don't expect the install-base of this particular userscript to be big enough to actually cause any exploitation. Nonetheless I think it is a good example how browser add-ons can create XSS-problems in web apps that are secure themselves.&lt;/p&gt;</description>
      <pubDate>Tue, 26 Dec 2006 14:07:51 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1537256/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2006-12-26T14:07:51Z</dc:date>
    </item>
    <item>
      <title>Request Rodeo released</title>
      <link>https://shampoo.antville.org/stories/1526343/</link>
      <description>&lt;p&gt;Justus and I finally found the time and patience to decide on a hosting option for our client-side anti-CSRF proxy. From now on, we will maintain RequestRodeo on &lt;a href="http://savannah.nongnu.org/projects/requestrodeo"&gt;nongnu.org&lt;/a&gt;. There are still open issues to implement and rough edges to smooth (&lt;em&gt;cough&lt;/em&gt; HTML parser &lt;em&gt;cough&lt;/em&gt;). So if you care about CSRF and/or are a Python enthusiast – hop on board. It is called open source for a reason.&lt;/p&gt;</description>
      <pubDate>Fri, 08 Dec 2006 08:58:57 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1526343/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2006-12-08T08:58:57Z</dc:date>
    </item>
    <item>
      <title>Back form PacSec</title>
      <link>https://shampoo.antville.org/stories/1525258/</link>
      <description>&lt;p&gt;Well, I am back in Hamburg again. The days in Tokyo were a blast. The city is as overwhelming as I imagined it to be. &lt;a href="http://pacsec.jp"&gt;PacSec&lt;/a&gt; itself was great as well. I saw many intriguing talks and met tons of cool people. There was not much content that directly related to my area of research (mine was the only websec talk and, with the exception of Ben Chelf’s presentation of Coverity’s technology, software security was not too dominant as well). Not that this matters as the good thing about going to conferences is that one gets exposed to topics that are not necessarily right up one’s alley.&lt;/p&gt;&lt;img src="http://static.flickr.com/114/308183954_20a296d88d_s.jpg"&gt;&lt;p&gt;With three talks on the subject, there was quite a focus on IPv6. I especially liked Yuji Ukai presentation on scanning IPv6 networks and fingerprinting v6 network stacks. Arnaud Ebalard and Guillaume Valadon talk on mobile IP was also very cool, but I only did understand about one third of what they were explaining. So many abbreviations, so little time. Fortunately their live demo of a mobile IPSec tunnel helped to get the big picture.Another focus was on Microsoft and Microsoft related technologies. All Microsoft guys were experienced and professional speakers that managed to avoid the obvious traps of vendor talks. Furthermore, Philippe Lagadec taught us about the pitfalls in the new office XML formats and Marc Schoenefeld gave a first introduction on possible future issues with Mircosoft WCF.As usual, the lightning-talks were my favourite part of the event. Fast, chaotic, entertaining. I wish the time would have allowed a few more (the interpreters had to leave punctual).&lt;/p&gt;&lt;img src="http://static.flickr.com/100/310243671_62486c7659_s.jpg"&gt;&lt;p&gt;In one of the breaks, I got the chance to talk to Window Snyder (Mozilla Corp.'s Chief Security Foo). I tried to convince her that the topics I am working on (JS malware, CSRF, XSS exploitation, etc.) are the most pressing issues right now and that the http/browser paradigm needs a thorough overhaul urgently. However I got the subtle impression that she did not quite agree. Too bad.&lt;/p&gt;&lt;img src="http://static.flickr.com/110/310244172_c42d9c3e23_s.jpg"&gt;&lt;p&gt;If you are interested to get a visual impression, visit the &lt;a href="http://flickr.com/photos/hirosan/sets/72157594389863655/detail/?page=13"&gt;flickr account&lt;/a&gt; of Ryo, the conference’s official photographer. I also made a couple of &lt;a href="http://www.flickr.com/photos/martinj/sets/72157594395217190/"&gt;pictures&lt;/a&gt; but they are mostly boring tourist shots of Tokyo.&lt;/p&gt;</description>
      <pubDate>Wed, 06 Dec 2006 15:35:20 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1525258/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2006-12-06T15:35:20Z</dc:date>
    </item>
    <item>
      <title>Going to PacSec</title>
      <link>https://shampoo.antville.org/stories/1516915/</link>
      <description>&lt;p&gt;Wow, tomorrow I will head off to Tokio to talk at &lt;a href="http://www.pacsec.jp"&gt;PacSec&lt;/a&gt;. I have to remember to send the inventors of http a &amp;quot;thank you&amp;quot;-postcard. If they wouldn't have made http stateless, nobody would pay me a flight to Japan.&lt;/p&gt;</description>
      <pubDate>Thu, 23 Nov 2006 11:16:51 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1516915/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2006-11-23T11:16:51Z</dc:date>
    </item>
    <item>
      <title>Entering Bliki</title>
      <link>https://shampoo.antville.org/stories/1395891/</link>
      <description>&lt;p&gt;&lt;a href="http://blog.doomicile.de"&gt;Igor&lt;/a&gt; just finished revamping our &lt;a href="http://www.nerdalert.de"&gt;NerdAlert&lt;/a&gt; webpage - nerdalert.de is know proudly run using a &lt;a href="http://en.wikipedia.org/wiki/Bliki"&gt;Bliki&lt;/a&gt;, a Frankenstein’s monster between a blog and a Wiki. I was sceptical at first because I could not see the advantages over the regular wiki we have used before. Man, was I wrong. I sold now. The Wikipedia as usual has the best &lt;a href="http://en.wikipedia.org/wiki/Bliki"&gt;explanation&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;The main advantage of combining the two concepts, however, is in leveraging the utility of wikis at making connections between ideas; this effectively turns blog posts into proper wiki articles, but maintains the former's immediate nature. Thus, a bliki can evolve as a whole over time, and past information is not merely jettisoned into the aether and lost in the shuffle.&lt;/blockquote&gt;&lt;p&gt;I think it is a perfect fit for our needs (documenting a monthly radio show and some additional activities). And the webpage looks sooooooo gorgeous now.&lt;/p&gt;</description>
      <pubDate>Fri, 19 May 2006 14:55:48 GMT</pubDate>
      <guid>https://shampoo.antville.org/stories/1395891/</guid>
      <dc:creator>Maddin</dc:creator>
      <dc:date>2006-05-19T14:55:48Z</dc:date>
    </item>
  </channel>
</rss>