<?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>Unknown &#8211; Noise</title>
	<atom:link href="https://noise.getoto.net/author/unknown/feed/" rel="self" type="application/rss+xml" />
	<link>https://noise.getoto.net</link>
	<description>The collective thoughts of the interwebz</description>
	<lastBuildDate>Fri, 12 Jul 2024 19:53:43 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>
	<item>
		<title>Last call for RSS subscribers: please migrate off this feed</title>
		<link>https://noise.getoto.net/2024/07/12/last-call-for-rss-subscribers-please-migrate-off-this-feed/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Fri, 12 Jul 2024 19:52:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=5d1e8ec96a26304efff683fde4de23aa</guid>

					<description><![CDATA[This is just a final call for any remaining RSS subscribers: if you're still subscribed to this publication, it will not&#160;be getting any future updates.Instead, please subscribe by email or via RSS to https://lcamtuf.substack.com/. It's a project I...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Officially retiring this&#8230;</title>
		<link>https://noise.getoto.net/2022/10/22/officially-retiring-this/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Fri, 21 Oct 2022 23:15:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=25114a0151a25d7b597a7d574c46854c</guid>

					<description><![CDATA[Thank you for stopping by.After more than a decade of posting infosec commentary on this blog, I decided to pull the plug. I still publish quite a bit, but I'm less and less inclined to use&#160;blogspot.com. For one, the platform just doesn't seem to ...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Practical Doomsday</title>
		<link>https://noise.getoto.net/2021/08/07/practical-doomsday/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Sat, 07 Aug 2021 01:51:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=ca7587511939fe8ccd9a386844551119</guid>

					<description><![CDATA[&#160;Practical Doomsday is an enjoyable, data-packed romp through the world of rational emergency preparedness. It cuts through the noise of 24-hour news to help you zero in on what actually matters: building a diversified rainy-day fund, staying safe...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Getting product security engineering right</title>
		<link>https://noise.getoto.net/2018/02/25/getting-product-security-engineering-right/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Sun, 25 Feb 2018 03:36:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=60f707ac50bf77519e4b28d6db44cb97</guid>

					<description><![CDATA[
Product security is an interesting animal: it is a uniquely cross-disciplinary endeavor that spans policy, consulting,
process automation, in-depth software engineering, and cutting-edge vulnerability research. And in contrast to many
other specializa...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>AFL experiments, or please eat your brötli</title>
		<link>https://noise.getoto.net/2017/04/23/afl-experiments-or-please-eat-your-brotli/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Sat, 22 Apr 2017 22:48:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=b5615ba1bf4127dd99b7070cc2f4c042</guid>

					<description><![CDATA[
When messing around with AFL, you sometimes stumble upon something unexpected or amusing. Say,
having the fuzzer spontaneously synthesize JPEG files,
come up with non-trivial XML syntax,
or discover SQL semantics.



It is also fun to challenge yourse...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>CSS mix-blend-mode is bad for your browsing history</title>
		<link>https://noise.getoto.net/2016/08/04/css-mix-blend-mode-is-bad-for-your-browsing-history/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Thu, 04 Aug 2016 16:23:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=7ab4a5fe8de703de0612b55a91e64432</guid>

					<description><![CDATA[
Up until mid-2010, any rogue website could get a good sense of your browsing habits by specifying a distinctive :visited CSS pseudo-class for any links on the page, rendering thousands of interesting URLs off-screen, and then calling the getComputedSt...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Clearing up some misconceptions around the &#034;ImageTragick&#034; bug</title>
		<link>https://noise.getoto.net/2016/05/11/clearing-up-some-misconceptions-around-the-imagetragick-bug/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Wed, 11 May 2016 17:15:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=761a00d1e556f6b798b3360f4aefb7bc</guid>

					<description><![CDATA[
The recent, highly publicized "ImageTragick" vulnerability had countless web developers scrambling to fix a remote code execution vector in ImageMagick - a popular bitmap manipulation tool commonly used to resize, transcode, or annotate user-supplied ...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Automatically inferring file syntax with afl-analyze</title>
		<link>https://noise.getoto.net/2016/02/09/automatically-inferring-file-syntax-with-afl-analyze/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Tue, 09 Feb 2016 20:45:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=6d034c16fbdb0a0b188496647b445bb8</guid>

					<description><![CDATA[
The nice thing about the control flow instrumentation used by American Fuzzy Lop is that it allows you to do much more than just, well, fuzzing stuff. For example, the suite has long shipped with a standalone tool called afl-tmin, capable of automatic...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>New in AFL: persistent mode</title>
		<link>https://noise.getoto.net/2015/06/12/new-in-afl-persistent-mode/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Thu, 11 Jun 2015 22:15:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=d2e030987b93fc8eec663e9530f8cfcd</guid>

					<description><![CDATA[
Although American Fuzzy Lop comes with a couple of nifty performance optimizations, it still relies on a fairly resource-intensive routine that is common to most general-purpose fuzzers: it continually creates new processes, feeds them a single test c...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Finding bugs in SQLite, the easy way</title>
		<link>https://noise.getoto.net/2015/04/14/finding-bugs-in-sqlite-the-easy-way/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Tue, 14 Apr 2015 18:32:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=5ae36178c0e29406d69c92428e22d788</guid>

					<description><![CDATA[SQLite is probably the most popular embedded database in use today; it is also known for being exceptionally well-tested and robust. In contrast to traditional SQL solutions, it does not rely on the usual network-based client-server architecture and do...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>On journeys</title>
		<link>https://noise.getoto.net/2015/03/30/on-journeys/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Mon, 30 Mar 2015 09:42:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=b69924a5b50ccf01c564212ac22f3ffe</guid>

					<description><![CDATA[

- 1 -


Poland is an ancient country whose history is deeply intertwined with that of the western civilization. In its glory days, the Polish-Lithuanian Commonwealth sprawled across vast expanses of land in central Europe, from Black Sea to Baltic Se...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Another round of image bugs: PNG and JPEG XR</title>
		<link>https://noise.getoto.net/2015/03/11/another-round-of-image-bugs-png-and-jpeg-xr/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Wed, 11 Mar 2015 07:38:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=4e434972b3037c4fc3c0539aab99ddb2</guid>

					<description><![CDATA[Today's release of MS15-024 and 
MS15-029 addresses two more image-related memory disclosure vulnerabilities in Internet Explorer - this time, affecting the little-known JPEG XR format supported by this browser, plus the far more familiar PNG. Similarl...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Bi-level TIFFs and the tale of the unexpectedly early patch</title>
		<link>https://noise.getoto.net/2015/02/10/bi-level-tiffs-and-the-tale-of-the-unexpectedly-early-patch/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Tue, 10 Feb 2015 18:55:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=0068e0a35bbbebed1d33c0dc7e0107a8</guid>

					<description><![CDATA[Today's release of MS15-016 (CVE-2015-0061) fixes another of the series of browser memory disclosure bugs found with afl-fuzz - this time, related to the handling of bi-level (1-bpp) TIFFs in Internet Explorer (yup, MSIE displays TIFFs!). You can check...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>afl-fuzz: making up grammar with a dictionary in hand</title>
		<link>https://noise.getoto.net/2015/01/10/afl-fuzz-making-up-grammar-with-a-dictionary-in-hand/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Sat, 10 Jan 2015 03:22:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=92abeac67b8166cc50aef0f8e43e42b2</guid>

					<description><![CDATA[One of the most significant limitations of afl-fuzz is that its mutation engine is syntax-blind and optimized for compact data formats, such as binary files (e.g., archives, multimedia) or terse human-readable languages (RTF, shell scripts). Any genera...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>afl-fuzz: nobody expects CDATA sections in XML</title>
		<link>https://noise.getoto.net/2014/12/01/afl-fuzz-nobody-expects-cdata-sections-in-xml/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Sun, 30 Nov 2014 21:39:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=43b8ca47a12a776123b524b3935afa77</guid>

					<description><![CDATA[I made a very explicit, pragmatic <a href="http://lcamtuf.coredump.cx/afl/related_work.txt">design decision</a> with <a href="http://lcamtuf.coredump.cx/afl/">afl-fuzz</a>: for performance and reliability reasons, I did not want to get into static analysis or symbolic execution to understand what the program is actually doing with the data we are feeding to it. The basic algorithm for the fuzzer can be just summed up as randomly mutating the input files, and gently nudging the process toward new state transitions discovered in the targeted binary. That discovery part is done with the help of lightweight and extremely simple instrumentation injected by the compiler.

<p></p>

I had a working theory that this would make the fuzzer a bit smarter than a potato, but I wasn't expecting any fireworks. So, when the algorithm managed to not only find some useful real-world bugs, but to <a href="http://lcamtuf.blogspot.com/2014/11/pulling-jpegs-out-of-thin-air.html">successfully synthesize a JPEG file</a> out of nothing, I was genuinely surprised by the outcome.

<p></p>

Of course, while it was an interesting result, it wasn't an impossible one. In the end, the fuzzer simply managed to wiggle its way through a long and winding sequence of conditionals that operated on individual bytes, making them well-suited for the guided brute-force approach. What seemed perfectly clear, though, is that the algorithm wouldn't be able to get past "atomic", large-search-space checks such as:

<p></p>

<code>if (strcmp(header.magic_password, "h4ck3d by p1gZ")) goto terminate_now;</code>
<p></p>

...or:

<p></p>

<code>if (header.magic_value == 0x12345678) goto terminate_now;</code>
<p></p>

This constraint made the tool less useful for properly exploring extremely verbose, human-readable formats such as HTML or JavaScript.

<p></p>

Some doubts started to set in when <i>afl-fuzz</i> effortlessly pulled out four-byte magic values and synthesized ELF files when testing programs such as <i>objdump</i> or <i>file</i>. As I later found out, this particular example is often used as a benchmark for complex static analysis or symbolic execution frameworks.

But still, guessing four bytes could have been just a happy accident. With fast targets, the fuzzer can pull off billions of execs per day on a single machine, so it could have been dumb luck.

<p></p>

(As an aside: to deal with strings, I had this very speculative idea of special-casing memory comparison functions such as <i>strcmp()</i> and <i>memcmp()</i> by replacing them with non-optimized versions that can be instrumented easily. I have one simple demo of that principle bundled with the fuzzer in <i>experimental/instrumented_cmp/</i>, but I never got around to actually implementing it in the fuzzer itself.)

<p></p>

Anyway, nothing quite prepared me for what the recent versions were capable of doing with <i>libxml2</i>. I seeded the session with:

<p></p>

<a>d</a>

<p></p>

...and simply used that as the input for a vanilla copy of <i>xmllint</i>. I was merely hoping to stress-test the very basic aspects of the parser, without getting into any higher-order features of the language. Yet, after two days on a single machine, I found this buried in test case #4641 in the output directory:

<p></p>

<code>...&#60;![&#60;CDATA[C%Ada b="c":]]]&#62;...</code>

<p></p>

<b>What the heck?!</b>

<p></p>

As most of you probably know, <a href="https://en.wikipedia.org/wiki/CDATA">CDATA</a> is a special, differently parsed section within XML, separated from everything else by fairly complex syntax - a nine-character sequence of bytes that can't be realistically discovered by just randomly flipping bits.

<p></p>

The finding is actually not magic; there are two possible explanations:

<p></p>

<ul>

<li> As a recent "well, it's cheap, so let's see what happens" optimization, AFL automatically sets <i>-O3 -funroll-loops</i> when calling the compiler for instrumented binaries, and some of the shorter fixed-string comparisons will be actually just expanded inline. For example, if the stars align just right, <i>strcmp(buf, "foo")</i> may be unrolled to:

<pre>
cmpb   $0x66,0x200c32(%rip)        # 'f'
jne    4004b6 <main>
cmpb   $0x6f,0x200c2a(%rip)        # 'o'
jne    4004b6 <main>
cmpb   $0x6f,0x200c22(%rip)        # 'o'
jne    4004b6 <main>
cmpb   $0x0,0x200c1a(%rip)         # NUL
jne    4004b6 <main>
</main></main></main></main></pre>

...which, by the virtue of having a series of explicit and distinct branch points, can be readily instrumented on a per-character basis by <i>afl-fuzz</i>.
<p></p>

</li><li> If that fails, it just so happens that some of the string comparisons in <i>libxml2</i> in <i>parser.c</i> are done using a bunch of macros that will compile to similarly-structured code (as spotted by Ben Hawkes). This is presumably done so that the compiler can optimize this into a tree-style parser - whereas a linear sequence of <i>strcmp()</i> calls would lead to repeated and unnecessary comparisons of the already-examined chars.
<p></p>
(Although done by hand in this particular case, the pattern is fairly common for automatically generated parsers of all sorts.)
</li></ul>

The progression of test cases seems to support both of these possibilities:

<p></p>

<code>
&#60;![<br>
&#60;![C b="c"&#62;<br>
&#60;![CDb m="c"&#62;<br>
&#60;![CDAĹĹ@<br>
&#60;![CDAT&#60;!<br>
...
</code>

<p></p>

I find this result a bit spooky because it's an example of the fuzzer defiantly and secretly working around one of its intentional and explicit design limitations - and definitely not something I was aiming for =)

<p></p>

Of course, treat this first and foremost as a novelty; there are many other circumstances where similar types of highly verbose text-based syntax would not be discoverable to <i>afl-fuzz</i> - or where, even if the syntax could be discovered through some special-cased shims, it would be a waste of CPU time to do it with <i>afl-fuzz</i>, rather than a simple syntax-aware, template-based tool.

<p></p>
(Coming up with an API to make template-based generators pluggable into AFL may be a good plan.)
<p></p>

By the way, here are some other gems from the randomly generated test cases:

<p></p>

<code>&#60;!DOCTY.<br>
&#60;?xml version="2.666666666666666666667666666"&#62;<br>
&#60;?xml standalone?&#62;</code>
<p></p>]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>afl-fuzz: crash exploration mode</title>
		<link>https://noise.getoto.net/2014/11/25/afl-fuzz-crash-exploration-mode/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Tue, 25 Nov 2014 06:00:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=22ba7ada9f0418e53e0640b9649b9488</guid>

					<description><![CDATA[One of the most labor-intensive portions of any fuzzing project is the work needed to determine if a particular crash poses a security risk. A small minority of all fault conditions will have obvious implications; for example, attempts to write or jump...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Pulling JPEGs out of thin air</title>
		<link>https://noise.getoto.net/2014/11/08/pulling-jpegs-out-of-thin-air/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Fri, 07 Nov 2014 23:03:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=1c20a61dd075f5678e378640da8b9b55</guid>

					<description><![CDATA[This is an interesting demonstration of the capabilities of&#160;afl; I was actually pretty surprised that it worked!$ mkdir in_dir
$ echo 'hello' &#62;in_dir/hello
$ ./afl-fuzz -i in_dir -o out_dir ./jpeg-9a/djpegIn essence, I created a text file conta...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>PSA: don&#8217;t run &#8216;strings&#8217; on untrusted files (CVE-2014-8485)</title>
		<link>https://noise.getoto.net/2014/10/25/psa-dont-run-strings-on-untrusted-files-cve-2014-8485/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Sat, 25 Oct 2014 04:49:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=3b2f75cbae3da1c9b948e83bdf8f389b</guid>

					<description><![CDATA[Many shell users, and certainly most of the people working in computer forensics or other fields of information security, have a habit of running /usr/bin/strings on binary files originating from the Internet. Their understanding is that the tool simpl...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Two more browser memory disclosure bugs (CVE-2014-1580 and #19611cz)</title>
		<link>https://noise.getoto.net/2014/10/14/two-more-browser-memory-disclosure-bugs-cve-2014-1580-and-19611cz/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Tue, 14 Oct 2014 19:10:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=6817de189045a3be9e7a4dd3a830bb79</guid>

					<description><![CDATA[To add several more trophies to afl's pile of image parsing memory disclosure vulnerabilities:

 



MSFA 2014-78 (CVE-2014-1580) fixes another case of uninitialized memory disclosure in Firefox - this time, when rendering truncated GIF images on &#60;c...]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Fuzzing random programs without execve()</title>
		<link>https://noise.getoto.net/2014/10/14/fuzzing-random-programs-without-execve/</link>
		
		<dc:creator><![CDATA[Unknown]]></dc:creator>
		<pubDate>Tue, 14 Oct 2014 09:02:00 +0000</pubDate>
				<guid isPermaLink="false">http://noise.getoto.net/?guid=38ca27e76084e5eba142ff0eae123dc5</guid>

					<description><![CDATA[The most common way to fuzz data parsing libraries is to find a simple binary that exercises the interesting functionality, and then simply keep executing it over and over again - of course, with slightly different, randomly mutated inputs in each run....]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/

Object Caching 127/130 objects using Memcached
Page Caching using Disk: Enhanced 
Lazy Loading (feed)
Database Caching using Memcached

Served from: noise.getoto.net @ 2026-02-09 01:40:44 by W3 Total Cache
-->