<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lookout Security Ramblings</title>
	<atom:link href="http://www.lookout.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lookout.net</link>
	<description>Notes from the field...</description>
	<lastBuildDate>Tue, 06 Jul 2010 05:52:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Advisory: Certain domain names could allow execution of arbitrary code in Opera</title>
		<link>http://www.lookout.net/2009/11/18/advisory-certain-domain-names-could-allow-execution-of-arbitrary-code-in-opera/</link>
		<comments>http://www.lookout.net/2009/11/18/advisory-certain-domain-names-could-allow-execution-of-arbitrary-code-in-opera/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 05:50:08 +0000</pubDate>
		<dc:creator>Chris Weber</dc:creator>
				<category><![CDATA[advisory]]></category>
		<category><![CDATA[fuzzing]]></category>
		<category><![CDATA[IDN]]></category>
		<category><![CDATA[Opera]]></category>

		<guid isPermaLink="false">http://www.lookout.net/?p=484</guid>
		<description><![CDATA[Opera released 10.01 recently, which fixed a memory corruption issue found with Casaba’s IDN/URI fuzzer. http://www.opera.com/support/kb/view/938/]]></description>
			<content:encoded><![CDATA[<p>Opera released 10.01 recently, which fixed a memory corruption issue found with Casaba’s IDN/URI fuzzer.</p>
<p><a href="http://www.opera.com/support/kb/view/938/">http://www.opera.com/support/kb/view/938/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lookout.net/2009/11/18/advisory-certain-domain-names-could-allow-execution-of-arbitrary-code-in-opera/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unibomber tool for specialized XSS testing</title>
		<link>http://www.lookout.net/2009/07/27/unibomber-tool-for-specialized-xss-testing/</link>
		<comments>http://www.lookout.net/2009/07/27/unibomber-tool-for-specialized-xss-testing/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 05:47:30 +0000</pubDate>
		<dc:creator>Chris Weber</dc:creator>
				<category><![CDATA[testing]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://www.lookout.net/?p=482</guid>
		<description><![CDATA[At Black Hat I’m planning to demo a new tool we’ve been putting together at Casaba Security. It’s mostly a brute force input testing tool right now, aimed at finding cross-site scripting (XSS) bugs but with a unique set of &#8230; <a href="http://www.lookout.net/2009/07/27/unibomber-tool-for-specialized-xss-testing/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>At Black Hat I’m planning to demo a new tool we’ve been putting together at <a href="http://www.casabasecurity.com">Casaba Security</a>. It’s mostly a brute force input testing tool right now, aimed at finding cross-site scripting (XSS) bugs but with a unique set of techniques. It automates the testing process greatly, by auto-injecting a canary and ID into each input be it query string, HTTP header, or POST parameter.</p>
<p>It basically bombs a Web-app with a slew of Unicode characters to find XSS bugs – hence the name – <strong>Unibomber</strong>.</p>
<p>Appended to the canary is a special character – special because it can transform into a ‘dangerous’ character through normalization, casing, or best-fit mapping operations. So we end up injecting these special characters all over the place and then detecting where they get transformed and displayed as output.</p>
<p>The beauty is that we can find both reflected and persistent XSS bugs this way. It’s not a one-click tool though, this is intended rather for an experienced person, who knows how to find and exploit an XSS bug. The Unibomber assists the pen-tester by automating input-injection and ‘output encoding’ detection to find the vulnerability hotspots.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lookout.net/2009/07/27/unibomber-tool-for-specialized-xss-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advisory: Webkit – Visiting a maliciously crafted website may lead to a cross-site scripting attack</title>
		<link>http://www.lookout.net/2009/06/08/advisory-webkit-%e2%80%93-visiting-a-maliciously-crafted-website-may-lead-to-a-cross-site-scripting-attack/</link>
		<comments>http://www.lookout.net/2009/06/08/advisory-webkit-%e2%80%93-visiting-a-maliciously-crafted-website-may-lead-to-a-cross-site-scripting-attack/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 05:46:10 +0000</pubDate>
		<dc:creator>Chris Weber</dc:creator>
				<category><![CDATA[advisory]]></category>
		<category><![CDATA[Webkit]]></category>

		<guid isPermaLink="false">http://www.lookout.net/?p=480</guid>
		<description><![CDATA[More from: http://support.apple.com/kb/HT3613 CVE-ID: CVE-2006-2783 Available for: Mac OS X v10.4.11, Mac OS X Server v10.4.11, Mac OS X v10.5.7, Mac OS X Server v10.5.7, Windows XP or Vista Impact: Visiting a maliciously crafted website may lead to a cross-site &#8230; <a href="http://www.lookout.net/2009/06/08/advisory-webkit-%e2%80%93-visiting-a-maliciously-crafted-website-may-lead-to-a-cross-site-scripting-attack/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>More from: <a href="http://support.apple.com/kb/HT3613">http://support.apple.com/kb/HT3613</a></p>
<p>CVE-ID: CVE-2006-2783</p>
<p>Available for: Mac OS X v10.4.11, Mac OS X Server v10.4.11, Mac OS X v10.5.7, Mac OS X Server v10.5.7, Windows XP or Vista</p>
<p>Impact: Visiting a maliciously crafted website may lead to a cross-site scripting attack</p>
<p>Description: WebKit ignores Unicode byte order mark sequences when parsing web pages. Certain websites and web content filters attempt to sanitize input by blocking specific HTML tags. This approach to filtering may be bypassed and lead to cross-site scripting when encountering maliciously-crafted HTML tags containing byte order mark sequences. This update addresses the issue through improved handling of byte order mark sequences. Credit to Chris Weber of Casaba Security, LLC for reporting this issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lookout.net/2009/06/08/advisory-webkit-%e2%80%93-visiting-a-maliciously-crafted-website-may-lead-to-a-cross-site-scripting-attack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advisory: International Components for Unicode  – Maliciously crafted content may bypass website filters and result in cross-site scripting</title>
		<link>http://www.lookout.net/2009/06/08/advisory-international-components-for-unicode-%e2%80%93-maliciously-crafted-content-may-bypass-website-filters-and-result-in-cross-site-scripting/</link>
		<comments>http://www.lookout.net/2009/06/08/advisory-international-components-for-unicode-%e2%80%93-maliciously-crafted-content-may-bypass-website-filters-and-result-in-cross-site-scripting/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 05:20:56 +0000</pubDate>
		<dc:creator>Chris Weber</dc:creator>
				<category><![CDATA[advisory]]></category>
		<category><![CDATA[ICU]]></category>

		<guid isPermaLink="false">http://www.lookout.net/?p=477</guid>
		<description><![CDATA[Update from: http://support.apple.com/kb/HT3613 CVE-ID: CVE-2009-0153 Available for: Windows XP or Vista Impact: Maliciously crafted content may bypass website filters and result in cross-site scripting Description: An implementation issue exists in ICU’s handling of certain character encodings. Using ICU to convert &#8230; <a href="http://www.lookout.net/2009/06/08/advisory-international-components-for-unicode-%e2%80%93-maliciously-crafted-content-may-bypass-website-filters-and-result-in-cross-site-scripting/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Update from: <a href="http://support.apple.com/kb/HT3613">http://support.apple.com/kb/HT3613</a></p>
<p>CVE-ID: CVE-2009-0153</p>
<p>Available for: Windows XP or Vista</p>
<p>Impact: Maliciously crafted content may bypass website filters and result in cross-site scripting</p>
<p>Description: An implementation issue exists in ICU’s handling of certain character encodings. Using ICU to convert invalid byte sequences to Unicode may result in over-consumption, where trailing bytes are considered part of the original character. This may be leveraged by an attacker to bypass filters on websites that attempt to mitigate cross-site scripting. This update addresses the issue through improved handling of invalid byte sequences. For Mac OS X v10.5 systems, this issue is addressed in Mac OS X v10.5.7. Credit to Chris Weber of Casaba Security for reporting this issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lookout.net/2009/06/08/advisory-international-components-for-unicode-%e2%80%93-maliciously-crafted-content-may-bypass-website-filters-and-result-in-cross-site-scripting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Major applications fail to include full Unicode support</title>
		<link>http://www.lookout.net/2009/05/23/major-applications-fail-to-include-full-unicode-support/</link>
		<comments>http://www.lookout.net/2009/05/23/major-applications-fail-to-include-full-unicode-support/#comments</comments>
		<pubDate>Sun, 24 May 2009 05:19:45 +0000</pubDate>
		<dc:creator>Chris Weber</dc:creator>
				<category><![CDATA[Unicode]]></category>

		<guid isPermaLink="false">http://www.lookout.net/?p=475</guid>
		<description><![CDATA[As I’ve found with most of the major Web-apps out there, including social media giants like Facebook and others, Unicode support is far from complete. I’m not a big MySQL guy, but have been building some stuff lately and ran &#8230; <a href="http://www.lookout.net/2009/05/23/major-applications-fail-to-include-full-unicode-support/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As I’ve found with most of the major Web-apps out there, including social media giants like Facebook and others, Unicode support is far from complete. I’m not a big MySQL guy, but have been building some stuff lately and ran into this:</p>
<p><a href="http://dev.mysql.com/doc/refman/6.0/en/faqs-cjk.html#qandaitem-22-11-1-16">http://dev.mysql.com/doc/refman/6.0/en/faqs-cjk.html#qandaitem-22-11-1-16</a></p>
<p>Basicall MySQL version &lt; 6.0.4 doesn’t support characters outside the BMP (Basic Multilingual Plane) which seems to be a common pattern for a lot of software. The BMP is all code points 0×0000 to 0xFFFF, however, Unicode stretches far beyond to 0×10FFFF. It makes sense I suppose, after all the BMP is made of the most commonly used scripts, the stuff beyond it (supplementary) are usually considered rare.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lookout.net/2009/05/23/major-applications-fail-to-include-full-unicode-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advisory: International Components for Unicode CVE-2009-0153</title>
		<link>http://www.lookout.net/2009/05/15/advisory-international-components-for-unicode-cve-2009-0153/</link>
		<comments>http://www.lookout.net/2009/05/15/advisory-international-components-for-unicode-cve-2009-0153/#comments</comments>
		<pubDate>Sat, 16 May 2009 05:18:06 +0000</pubDate>
		<dc:creator>Chris Weber</dc:creator>
				<category><![CDATA[advisory]]></category>
		<category><![CDATA[ICU]]></category>

		<guid isPermaLink="false">http://www.lookout.net/?p=473</guid>
		<description><![CDATA[Big ones from Apple today: http://support.apple.com/kb/HT3549 CVE-ID: CVE-2009-0153 Available for: Mac OS X v10.5 through v10.5.6, Mac OS X Server v10.5 through v10.5.6 Impact: Maliciously crafted content may bypass website filters and result in cross-site scripting Description: An implementation issue &#8230; <a href="http://www.lookout.net/2009/05/15/advisory-international-components-for-unicode-cve-2009-0153/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Big ones from Apple today: <a href="http://support.apple.com/kb/HT3549">http://support.apple.com/kb/HT3549</a></p>
<p>CVE-ID: CVE-2009-0153</p>
<p>Available for: Mac OS X v10.5 through v10.5.6, Mac OS X Server v10.5 through v10.5.6</p>
<p>Impact: Maliciously crafted content may bypass website filters and result in cross-site scripting</p>
<p>Description: An implementation issue exists in ICU’s handling of certain character encodings. Using ICU to convert invalid byte sequences to Unicode may result in over-consumption, where trailing bytes are considered part of the original character. This may be leveraged by an attacker to bypass filters on websites that attempt to mitigate cross-site scripting. This update addresses the issue through improved handling of invalid byte sequences. This issue does not affect systems prior to Mac OS X v10.5. Credit to Chris Weber of Casaba Security for reporting this issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lookout.net/2009/05/15/advisory-international-components-for-unicode-cve-2009-0153/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unicode security attacks and test cases – Best-fit mappings and String transformations</title>
		<link>http://www.lookout.net/2009/05/07/unicode-security-attacks-and-test-cases-%e2%80%93-best-fit-mappings-and-string-transformations/</link>
		<comments>http://www.lookout.net/2009/05/07/unicode-security-attacks-and-test-cases-%e2%80%93-best-fit-mappings-and-string-transformations/#comments</comments>
		<pubDate>Fri, 08 May 2009 05:15:55 +0000</pubDate>
		<dc:creator>Chris Weber</dc:creator>
				<category><![CDATA[Unicode]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[best-fit]]></category>

		<guid isPermaLink="false">http://www.lookout.net/?p=470</guid>
		<description><![CDATA[Best-fit mappings are another complex topic in Unicode, easily overlooked or misunderstood.  On the defensive side, if you can only remember two things: Converting to Unicode is safe. Converting between legacy character sets is dangerous. Ah forget it, unfortunately it’s &#8230; <a href="http://www.lookout.net/2009/05/07/unicode-security-attacks-and-test-cases-%e2%80%93-best-fit-mappings-and-string-transformations/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Best-fit mappings are another complex topic in Unicode, easily overlooked or misunderstood.  On the defensive side, if you can only remember two things:</p>
<ol>
<li>Converting      <strong>to Unicode is      safe</strong>.</li>
<li>Converting      <strong>between legacy      character sets is dangerous</strong>.</li>
</ol>
<p>Ah forget it, unfortunately it’s more complicated than that, because <a href="http://www.lookout.net/2008/04/21/string-handling-when-marshalling-from-net-to-a-platform-invoke/">basic string handling</a> can also trigger best-fit behavior even when you aren’t intentionally converting between encodings or charsets.</p>
<p>The term <strong>best-fit mapping</strong> describes the concept of how a character should be represented when it doesn’t have an explicit place in a destination character set.</p>
<p>I’ve actually pulled off some interesting cross-site scripting attacks by exploiting best-fit mappings. In 2008 I was testing a popular social networking app. They just implemented a new profile editor complete with user-ccontrolled CSS. They were smart though, they actually knew that stuff like this would lead to XSS:</p>
<p><code>−moz−binding: url(<a href="http://nottrusted.com/gotcha.xml#xss">http://nottrusted.com/gotcha.xml#xss</a>)</code></p>
<p>So they implemented some sort of blacklist because well that’s common. Anyway, somewhere in the callstack of their parsing and filtering, the string I passed in was being transformed. To get to the point, I eventually figured out I could manipulate the input with a character that would pass through their filter, and come out transformed into the character I needed. The input:</p>
<p><code>−moz−binding: url(<a href="http://nottrusted.com/gotcha.xml#xss">http://nottrusted.com/gotcha.xml#xss</a>)</code></p>
<p>The first character here is U+2212, the MINUS SIGN (−) which was being transformed through an apparent best-fit mapping into U+002D, or -.</p>
<p>The <a href="http://websecuritytool.codeplex.com/">Watcher security testing tool</a> I released a few months ago has a new check coming to detect string transformations like this. My plan was to detect spots where strings can be manipulated to pull off attacks like I just described. Does anyone want to test this, and are there any other good stories about manipulating best-fit mappings to pull off attacks?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lookout.net/2009/05/07/unicode-security-attacks-and-test-cases-%e2%80%93-best-fit-mappings-and-string-transformations/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ultrafast UTF-8 decoder by Bjoern Hoehrmann</title>
		<link>http://www.lookout.net/2009/04/24/ultrafast-utf-8-decoder-by-bjoern-hoehrmann/</link>
		<comments>http://www.lookout.net/2009/04/24/ultrafast-utf-8-decoder-by-bjoern-hoehrmann/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 05:14:19 +0000</pubDate>
		<dc:creator>Chris Weber</dc:creator>
				<category><![CDATA[Unicode]]></category>
		<category><![CDATA[encodings]]></category>
		<category><![CDATA[UTF8]]></category>

		<guid isPermaLink="false">http://www.lookout.net/?p=468</guid>
		<description><![CDATA[I believe this is still getting tested by several parties, but it’s obviously a highly optimized implementation of a UTF-8 decoder. Bjoern Hoehrmann released his Flexible and Economical UTF-8 Decoder recently, check it out: // Copyright (c) 2008-2009 Bjoern Hoehrmann &#8230; <a href="http://www.lookout.net/2009/04/24/ultrafast-utf-8-decoder-by-bjoern-hoehrmann/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I believe this is still getting tested by several parties, but it’s obviously a highly optimized implementation of a UTF-8 decoder. Bjoern Hoehrmann released his <a href="http://bjoern.hoehrmann.de/utf-8/decoder/dfa/">Flexible and Economical UTF-8 Decoder </a>recently, check it out:<br />
<code>// Copyright (c) 2008-2009 Bjoern Hoehrmann </code><br />
<code>// See <a href="http://bjoern.hoehrmann.de/utf-8/decoder/dfa/">http://bjoern.hoehrmann.de/utf-8/decoder/dfa/</a> for details.</code></p>
<p>#define UTF8_ACCEPT 0<br />
#define UTF8_REJECT 1</p>
<p>static const uint8_t utf8d[] = {<br />
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 00..1f<br />
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 20..3f<br />
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 40..5f<br />
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 60..7f<br />
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, // 80..9f<br />
7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, // a0..bf<br />
8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, // c0..df<br />
0xa,0&#215;3,0&#215;3,0&#215;3,0&#215;3,0&#215;3,0&#215;3,0&#215;3,0&#215;3,0&#215;3,0&#215;3,0&#215;3,0&#215;3,0&#215;4,0&#215;3,0&#215;3, // e0..ef<br />
0xb,0&#215;6,0&#215;6,0&#215;6,0&#215;5,0&#215;8,0&#215;8,0&#215;8,0&#215;8,0&#215;8,0&#215;8,0&#215;8,0&#215;8,0&#215;8,0&#215;8,0&#215;8, // f0..ff<br />
0&#215;0,0&#215;1,0&#215;2,0&#215;3,0&#215;5,0&#215;8,0&#215;7,0&#215;1,0&#215;1,0&#215;1,0&#215;4,0&#215;6,0&#215;1,0&#215;1,0&#215;1,0&#215;1, // s0..s0<br />
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1, // s1..s2<br />
1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1, // s3..s4<br />
1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1,1,1,1, // s5..s6<br />
1,3,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // s7..s8<br />
};</p>
<p>uint32_t inline<br />
decode(uint32_t* state, uint32_t* codep, uint32_t byte) {<br />
uint32_t type = utf8d[byte];</p>
<p>*codep = (*state != UTF8_ACCEPT) ?<br />
(byte &amp; 0x3fu) | (*codep &lt;&lt; 6) :<br />
(0xff &gt;&gt; type) &amp; (byte);</p>
<p>*state = utf8d[256 + *state*16 + type];<br />
return *state;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lookout.net/2009/04/24/ultrafast-utf-8-decoder-by-bjoern-hoehrmann/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unicode security attacks and test cases – fuzzing with Unicode</title>
		<link>http://www.lookout.net/2009/04/23/unicode-security-attacks-and-test-cases-%e2%80%93-fuzzing-with-unicode/</link>
		<comments>http://www.lookout.net/2009/04/23/unicode-security-attacks-and-test-cases-%e2%80%93-fuzzing-with-unicode/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 05:05:19 +0000</pubDate>
		<dc:creator>Chris Weber</dc:creator>
				<category><![CDATA[Unicode]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[fuzzing]]></category>
		<category><![CDATA[test cases]]></category>

		<guid isPermaLink="false">http://www.lookout.net/?p=458</guid>
		<description><![CDATA[When it comes to fuzzing parsers, protocols, and other software, I want the fuzzer to be capable of producing tests specific to Unicode. Here’s what it should do at a minimum: Generate half a surrogate pair in UTF-8 or UTF-16 &#8230; <a href="http://www.lookout.net/2009/04/23/unicode-security-attacks-and-test-cases-%e2%80%93-fuzzing-with-unicode/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When it comes to fuzzing parsers, protocols, and other software, I want the fuzzer to be capable of producing tests specific to Unicode. Here’s what it should do at a minimum:</p>
<ul>
<li>Generate      half a surrogate pair in UTF-8 or UTF-16</li>
<li>Generate      illformed byte sequences for UTF-8 and UTF-16</li>
<li>Generate      overlong UTF-8</li>
<li>Generate      unassigned and reserved code points</li>
<li>Generate      codepoints outside of the valid range</li>
<li>Generate      interesting control characters and characters with special meaning like      the BOM, embedding, overrides, etc.</li>
</ul>
<p>I’ve got some code that does most of these things. Maybe I should elaborate on them some more… Does Peach or another fuzzing framework provide this already?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lookout.net/2009/04/23/unicode-security-attacks-and-test-cases-%e2%80%93-fuzzing-with-unicode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unicode security attacks and test cases – Normalization expansion for buffer overflows</title>
		<link>http://www.lookout.net/2009/04/03/unicode-security-attacks-and-test-cases-%e2%80%93-normalization-expansion-for-buffer-overflows/</link>
		<comments>http://www.lookout.net/2009/04/03/unicode-security-attacks-and-test-cases-%e2%80%93-normalization-expansion-for-buffer-overflows/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 05:03:02 +0000</pubDate>
		<dc:creator>Chris Weber</dc:creator>
				<category><![CDATA[Unicode]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[normalization]]></category>
		<category><![CDATA[test cases]]></category>

		<guid isPermaLink="false">http://www.lookout.net/?p=456</guid>
		<description><![CDATA[Normalization, like casing operations, can cause changes to the number of characters and bytes in a string. In testing software, I want to know how to get the most bang for my buck – in other words, what’s the minimal &#8230; <a href="http://www.lookout.net/2009/04/03/unicode-security-attacks-and-test-cases-%e2%80%93-normalization-expansion-for-buffer-overflows/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Normalization, like casing operations, can cause changes to the number of characters and bytes in a string. In testing software, I want to know how to get the most bang for my buck – in other words, what’s the minimal input I can provide to cause the maximum character and byte exansion?</p>
<p>First step:  Figure out what normalization operation your input is going through – NFC, NFD, NFCD, or NFKD.</p>
<p>Next step: Find the right input.</p>
<p>For example, if I pass in a character like U+2177 SMALL ROMAN NUMERAL EIGHT (ⅷ), I’ve passed in a single ‘character’ that takes three bytes [E2, 85, B7] to encode in UTF-8. If that character passes through a decomposed normalization form like NFKC or NFKD, then it has a compatibility mapping from one code point to four: U+0076 U+0069 U+0069 U+0069. Now those are all ASCII characters, so bytewise I didn’t really expand all that much, just one byte, but three extra characters.</p>
<p>Well there may be better cases than this one, just take a look at the maximum expansion factor table, courtesy of the <a href="http://unicode.org/faq/normalization.html#12">Unicode Normalization FAQ</a>:</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lookout.net/2009/04/03/unicode-security-attacks-and-test-cases-%e2%80%93-normalization-expansion-for-buffer-overflows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
