<?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>Mozilla Security Blog &#187; Regressions</title>
	<atom:link href="http://blog.mozilla.org/security/category/regressions/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mozilla.org/security</link>
	<description></description>
	<lastBuildDate>Fri, 17 May 2013 17:29:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>7 Tips for Fuzzing Firefox More Effectively</title>
		<link>http://blog.mozilla.org/security/2012/06/20/7-tips-for-fuzzing-firefox-more-effectively/</link>
		<comments>http://blog.mozilla.org/security/2012/06/20/7-tips-for-fuzzing-firefox-more-effectively/#comments</comments>
		<pubDate>Wed, 20 Jun 2012 16:33:40 +0000</pubDate>
		<dc:creator>decoder</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Regressions]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Vulnerabilities]]></category>

		<guid isPermaLink="false">http://blog.mozilla.org/security/?p=738</guid>
		<description><![CDATA[In the past half year I learned quite a lot about the different fuzzing approaches that security researchers and contributors use on Firefox. Although information on the subject should be public, a lot of it seems hard to find for &#8230; <a class="go" href="http://blog.mozilla.org/security/2012/06/20/7-tips-for-fuzzing-firefox-more-effectively/">Continue reading</a>]]></description>
				<content:encoded><![CDATA[<p>In the past half year I learned quite a lot about the different fuzzing approaches that security researchers and contributors use on Firefox. Although information on the subject should be public, a lot of it seems hard to find for people that are new in that area. Here are some tips for making your fuzzing on Firefox more successful, based on the problems that I encountered myself and mistakes that others made that I learned about.<span id="more-738"></span></p>
<h4>1. Test Nightly</h4>
<p>We want bugs identified as early as possible. The nightly builds correspond directly to the mozilla-central <a href="https://developer.mozilla.org/en/Mozilla_Source_Code_%28Mercurial%29">HG repository</a>, and always contain the newest features being prepared for release. They offer the best opportunity to test changes as early as possible. Our bounty program covers Nightly as well, so if you are specifically looking for security problems, Nightly is the place to be. Of course we would be very happy to get reports for all kinds of defects if you find them, not only security related, to be able to provide the best user experience. If you have test/steps to reproduce and you don&#8217;t want to invest further work into minimizing, no problem: Every such report is better than none and if our developers can somewhat reproduce the issue, then it&#8217;s very likely to get fixed.</p>
<h4>2. Special Builds</h4>
<p>Regular release builds are not very good for fuzzing. They lack some important features that debug builds have. For instance, debug builds have a variety of memory invalidation routines enabled, e.g. poisoning free&#8217;d memory after a garbage collect. This poisoning causes the browser to crash with clearly recognizable memory patterns, e.g. on use-after-free. The patterns include 0xdada, 0xdbdb, 0xa5a5 and of course 0xdeadbeef. Another good thing about debug builds are assertions. While all assertion failures indicate bugs, some types of assertions are especially likely to indicate the presence of security holes:</p>
<ul>
<li>Assertions containing the words &#8220;wrapper&#8221; and/or &#8220;compartment&#8221;</li>
<li>Assertions with indications of &#8220;array out of bounds&#8221;</li>
<li>The assertion &#8220;Some pres arena objects were not freed&#8221;</li>
<li>Assertions in the JavaScript engine (js/src/)</li>
</ul>
<p>You can find nightly debug builds <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/">here</a>. Then scroll down and find the latest build that ends in &#8220;mozilla-central-debug&#8221;.<br />
Another build type that can be helpful for fuzzing is the Address Sanitizer build (ASan). There&#8217;s a more detailed <a href="https://blog.mozilla.org/decoder/2012/01/27/trying-new-code-analysis-techniques/">blog post about ASan</a>, but in short it allows to detect a variety of memory safety violations that wouldn&#8217;t necessarily crash in normal builds, while still being very fast for testing. We currently provide <a href="https://people.mozilla.com/~choller/firefox/asan/">unofficial nightly ASan builds for Linux (64 bit)</a>.</p>
<h4>3. Using Debug/Internal Functions with an Addon</h4>
<p>There are certain functions available in privileged context only that are very powerful for automated testing. Some examples are calling the garbage collector, enabling zealous garbage collection (will run the garbage collector very frequently), invoking the cycle collector or quitting Firefox (useful for test case reduction).<br />
Fortunately, there is already an addon, written by Jesse Ruderman, which is <a href="https://www.squarefree.com/extensions/domFuzzLite3.xpi">publically available</a>. The addon adds a new global object &#8220;fuzzPriv&#8221; available in content, which provides several functions. Of course, you should <strong>not</strong> install this addon in your regular browser, as it might expose APIs that are not safe for web content.</p>
<h4>4. Communication/Logging</h4>
<p>Especially when testing browsers, communication between the component running inside the browser, and the outside harness is important. When the fuzzer is running inside the browser (e.g. a fuzzer written in JS) and there is only an outside harness monitoring it, then communication from the fuzzer to the harness is usually helpful to log any actions the fuzzer takes, so they can be reproduced more easily.<br />
If the fuzzer is outside the browser, and the part in the browser is only executing tests, then we usually need a way to get the test inside the browser. Of course this can be done over HTTP but it&#8217;s usually quite slow.<br />
For these situations, there are two helpful techniques that one should be aware of:</p>
<ul>
<ul>
<li>The window.dump method (Firefox only): This method is a debug method that can be enabled by setting the pref &#8220;browser.dom.window.dump.enabled&#8221; to true (when doing this in about:config, you might have to add the pref yourself). Once this pref is enabled, you can call the window.dump() method with a message as parameter and it will be sent to stderr where your external harness can observe it.</li>
<li>Websockets: Websockets (see <a href="http://en.wikipedia.org/wiki/Websockets">Wikipedia</a> and <a href="https://developer.mozilla.org/en/WebSockets">MDN</a>) provide a bidirectional communication channel based on a TCP connection with a special protocol inside. Using Websockets, your component inside the browser can connect to the component outside (either that component provides a websocket compatible server, e.g. using nodejs, or the component uses standard TCP and an intermediate proxy program like em-websocket-proxy is translating the connection). Once connected, the client can send and receive data easily, all the API is Javascript.</li>
</ul>
</ul>
<p><em>NOTE:</em> The <a href="https://github.com/mozilla/ADBFuzz">ADBFuzz mobile fuzzing framework</a> uses Websockets to connect from the mobile device back to the host. It might be worth taking a look at the code in helloworld.js and websocklog.py (with em-websocket-proxy in the middle) if you plan to implement such a feature.</p>
<h4>5. Multiple Instances and Proper Automation Settings</h4>
<p>Using multiple profiles, it is possible to run many Firefox instances in parallel on the same host. You can specify the profile name on the command line using <kbd>-no-remote -P name</kbd> or <kbd>-no-remote -profile dir</kbd>.<br />
Especially when running/deploying multiple instances, using the right set of preferences for each of them is important to prevent certain interactive behavior (e.g. safe-mode prompts when restarting). Take a look at the <a href="https://github.com/mozilla/ADBFuzz/blob/master/misc/prefs.js">prefs.js</a> file delivered with ADBFuzz. It contains some valuable options which can be directly added to the prefs.js file in your fuzzing profile.</p>
<h4>6. Use Minidumps or Linux Core Dumps</h4>
<p>Running Firefox under a debugger for fuzzing is not very efficient. Instead, you can use the minidumps that the Firefox crash reporter produces: If you set your environment variables to match<br />
<code><br />
MOZ_CRASHREPORTER_NO_REPORT=1<br />
MOZ_CRASHREPORTER_SHUTDOWN=1<br />
</code><br />
then the crash reporter will just store a minidump in a subdirectory of the profile, without prompting for submitting it. Instead it will just exit afterwards. Using the <a href="http://code.google.com/p/google-breakpad/source/browse/trunk/src/processor/minidump_stackwalk.cc">minidump_stackwalk tool</a>, you can obtain a stack trace from the dump for triage then. One advantage of this approach is that it works on all supported platforms. Another helpful fact is that the minidumps get stored in the respective profile directories, so running multiple instances does not cause problems.<br />
Of course, you can also use regular Linux core dumps using the following environment variables:<br />
<code><br />
MOZ_CRASHREPORTER_DISABLE=1<br />
XRE_NO_WINDOWS_CRASH_DIALOG=1<br />
XPCOM_DEBUG_BREAK=stack-and-abort<br />
</code><br />
You still have to enable core dumps in the system (e.g. with <kbd>ulimit -c unlimited</kbd>). If you run multiple instances of Firefox, you can use the PID to map the core dump to one of the instances by writing &#8220;1&#8243; to /proc/sys/kernel/core_uses_pid.</p>
<h4>7. Reduce test cases automatically</h4>
<p>When a fuzzer finds a problem, the test case is often very large and might even span multiple files. Reducing this manually is tedious and a waste of time if the same process can be automated. For crashes and assertions, automation turns out to be quite easy. One possibility is to use <a href="http://www.squarefree.com/2007/09/15/introducing-lithium-a-testcase-reduction-tool/">Lithium</a>, a tool written by Jesse Ruderman which already comes with support for Firefox. Another possibility is to use <a href="http://delta.tigris.org/">delta</a> or similar scripts.<br />
The principle of operation for these tools is always the same: Remove some input, start the program with the new input, determine if the failure still occurs and if so, start again with removing input. If the test no longer fails, they revert the last step. The only difference is how they actually decide which input to remove. There is no &#8220;best&#8221; strategy here, as it highly depends on the input. Source code for example can have a lot of inter-line dependencies and behaves entirely different than just independent lines of input. I will soon publish two Perl scripts that specifically work well with (well-formatted) source code (while they can also be used on regular input), by focusing on removing blocks and line pairs.</p>
<h4>Conclusion</h4>
<p>Fuzzing browsers is a complex endeavor and I hope that one or more of the tips above will make your testing efforts on Firefox even more awesome. Of course if you have any additional tips or suggestions yourself, please let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.org/security/2012/06/20/7-tips-for-fuzzing-firefox-more-effectively/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing security holes without introducing new bugs</title>
		<link>http://blog.mozilla.org/security/2010/02/10/fixing-security-holes-without-introducing-new-bugs/</link>
		<comments>http://blog.mozilla.org/security/2010/02/10/fixing-security-holes-without-introducing-new-bugs/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 23:43:15 +0000</pubDate>
		<dc:creator>Jesse Ruderman</dc:creator>
				<category><![CDATA[Regressions]]></category>

		<guid isPermaLink="false">http://blog.mozilla.org/security/?p=223</guid>
		<description><![CDATA[When fixing any bug, there is a risk of introducing new bugs, which we call regressions. Regressions caused by security fixes can be especially problematic because shipping a buggy security update can erode user trust for future updates. Fortunately, we &#8230; <a class="go" href="http://blog.mozilla.org/security/2010/02/10/fixing-security-holes-without-introducing-new-bugs/">Continue reading</a>]]></description>
				<content:encoded><![CDATA[<p>When fixing any bug, there is a risk of introducing new bugs, which we call regressions.  Regressions caused by security fixes can be especially problematic because shipping a buggy security update can erode user trust for future updates.</p>
<p>Fortunately, we discover most regressions before we ship, thanks in large part to security researchers whose patience gives us time to review and test each patch well.  But sometimes security releases are delayed slightly because we notice a regression as we are getting ready to release.  Worse, we sometimes discover regressions after shipping a release.</p>
<p>This post explores patterns among regressions and suggests changes that could help us catch them earlier.</p>
<h3>Motivation</h3>
<p>In six cases since Firefox 2, we decided regressions in minor updates were serious enough to rush a followup regression-fix update.  For comparison, we shipped 38 other minor updates, mostly to fix security holes, since releasing Firefox 2 in October 2006.</p>
<table border="1" style="border-collapse: collapse; margin-bottom: 1em;">
<thead>
<th>Regression</th>
<th>Caused followup release</th>
<th>Release date</th>
</thead>
<tbody>
<tr>
<td><a href="https://developer.mozilla.org/devnews/index.php/2007/10/22/firefox-2008-update-to-be-updated/">Several bugs</a></td>
<td><a href="http://www.mozilla.com/en-US/firefox/2.0.0.9/releasenotes/">Firefox 2.0.0.9</a></td>
<td>November 1, 2007</td>
</tr>
<tr>
<td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=405584">Bug 405584</a> &#8211; canvas.drawImage broken</td>
<td><a href="http://www.mozilla.com/en-US/firefox/2.0.0.11/releasenotes/">Firefox 2.0.0.11</a></td>
<td>November 30, 2007</td>
</tr>
<tr>
<td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=425576">Bug 425576</a> &#8211; topsite crash</td>
<td><a href="http://www.mozilla.com/en-US/firefox/2.0.0.14/releasenotes/">Firefox 2.0.0.14</a></td>
<td>April 16, 2008</td>
</tr>
<tr>
<td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=454708">Bug 454708</a> &#8211; non-ascii password issue</td>
<td><a href="http://www.mozilla.com/en-US/firefox/3.0.3/releasenotes/">Firefox 3.0.3</a></td>
<td>September 26, 2008</td>
</tr>
<tr>
<td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=489322">Bug 489322</a> &#8211; extension crash</td>
<td><a href="http://www.mozilla.com/en-US/firefox/3.0.10/releasenotes/">Firefox 3.0.10</a></td>
<td>April 27, 2009</td>
</tr>
<tr>
<td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=535193">Bug 535193</a> &#8211; proxy auth issue</td>
<td><a href="http://www.mozilla.com/en-US/firefox/3.0.17/releasenotes/">Firefox 3.0.17</a> and <a href="http://www.mozilla.com/en-US/firefox/3.5.7/releasenotes/">Firefox 3.5.7</a></td>
<td>January 5, 2010</td>
</tr>
</tbody>
</table>
<p>It&#8217;s hard to see trends and patterns in a list of six bugs, so I looked at a larger set of bug reports: all bugs reports marked as regressions caused by security bug fixes.  I focused on the 176 such bugs filed between December 2007 and January 2010.</p>
<p>Most of these regressions were fixed before release and many of them were minor.  But understanding why they weren&#8217;t caught immediately can help prevent major incidents in the future.</p>
<h3>Overall regression frequency</h3>
<table border="1" style="border-collapse: collapse; margin-bottom: 1em;">
<thead>
<th>Period</th>
<th>Regressions reported that were caused by security fixes</th>
</thead>
<tbody>
<tr>
<td>2008 first half</td>
<td>71</td>
</tr>
<tr>
<td>2008 second half</td>
<td>28</td>
</tr>
<tr>
<td>2009 first half</td>
<td>46</td>
</tr>
<tr>
<td>2009 second half</td>
<td>25</td>
</tr>
</tbody>
</table>
<p>Regressions seem to be declining in frequency.  This calls for <a href="http://creative.mozilla.org/designs/794" title="Foxkeh loves cake!">cake</a>!</p>
<p><img alt="" src="https://www.squarefree.com/blogimages/firefox-cake-by-emichi-from-mozilla-creative-collective.jpg" width="580" height="365" class="aligncenter size-full" /></p>
<p>I believe regressions are declining in frequency mostly because of improvements in <a href="https://developer.mozilla.org/en/Mozilla_automated_testing">automated testing</a>.  The number of automated tests increased fourfold since Firefox 3.0: every trunk checkin now results in 220,000 tests running on each platform.  Regressions caught by automated tests tend to be fixed immediately, without even being filed in Bugzilla.</p>
<p>Further improvements to automating testing could reduce the number of regressions even more.  I noticed four patterns in the bugs that suggest areas where automated testing could be improved: (1) web site breakage; (2) firefox extensions; (3) printing; and (4) document navigation.</p>
<h3>Web site breakage</h3>
<p>About 48 of the 176 bug reports involved specific web sites. The sites ranged from private intranet sites to the most popular sites on the web.  When simply loading a site is enough to reproduce the bug, it may be easy to detect it through automated testing.</p>
<p>Crashes, hangs, and leaks are easy to identify in automated testing.  Carsten Book and Bob Clary have set up <a href="http://blog.mozilla.org/tomcat/2009/01/30/automated-top-site-testing/">automated loading of top sites</a> to find these bugs.</p>
<p>Visual problems are trickier to identify in automated testing, because no algorithm can reliably determine when a web site &#8220;looks wrong&#8221;.  But determining whether a site&#8217;s appearance has <em>changed</em> can be done automatically.  Since security fixes do not intentionally change the appearance of web sites, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=544443">a tool to detect web site appearance changes</a> could catch these regressions.</p>
<p>In addition to improving automated testing, we should remove support for some regression-prone, Mozilla-specific web features: <a href="http://www.mozilla.org/projects/security/components/signed-scripts.html">signed scripts</a>, enablePrivilege, XUL, and XBL.  (<a href="https://bugzilla.mozilla.org/buglist.cgi?quicksearch=418429,428873,472648,428995,434544,445890,470049,521969">Eight of the regressions</a> affected sites using these features). These features have proven to be not especially useful to web developers, hard to keep stable, and hard to make secure.  XUL and XBL, in particular, have together been responsible for over a hundred vulnerabilities.</p>
<h3>Firefox extensions</h3>
<p>About 21 of the regressions involved Firefox extensions.  One way we could detect these bugs is to run automated tests with extensions installed.  We should run Firefox&#8217;s entire test suite with popular extensions, and we should run at least basic tests with every extension.</p>
<p>Some regressions affect a feature of an extension rather than a feature built into Firefox.  To catch these, we would need to let extension developers provide tests for their extension&#8217;s features.</p>
<p>We can also let Firefox developers search the source code of Firefox extensions, so when developers change APIs, they can tell which extensions the changes are likely to affect. We&#8217;ve already <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=358591">started to do this</a>.</p>
<h3>Printing</h3>
<p>Five of the regressions involved printing.  Printing bugs frequently make it to release users in part because most nightly users do not print web pages frequently.</p>
<p>I suggested <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=544138">adding printing to topsite testing</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=543886">running existing reftests in print mode</a>.</p>
<h3>Document navigation</h3>
<p><a href="https://bugzilla.mozilla.org/buglist.cgi?quicksearch=529119+492358+409888+426646+416751">Five of the regressions</a> involve document navigation.  I suspect document navigation is prone to security bugs, and prone to regressions when those security bugs are fixed, for three reasons:</p>
<p>First, it is a place where many web features interact.  Loads can be triggered by users (back, reload, link clicks, bookmarks clicks, submitting a form) or scripts (setting location, location.replace, history.go).  Loads trigger many events (unload, beforeunload, pagehide), and scripts running from those events can trigger additional navigation.  Additional layers of complexity arise from restoration of form contents, frames, and in-page navigation between hashes.</p>
<p>Second, expectations are complicated.  To prevent accidental or deliberate &#8220;traps&#8221;, the &#8220;Back&#8221; button has to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=340021">skip over sequences of purely-script-triggered navigations</a>, which are often difficult to distinguish from user-triggered navigations.  At the same time, AJAX web applications have good reasons to want the &#8220;Back&#8221; button to only change the hash part of the URL rather than leave the page.</p>
<p>Third, document navigation semantics have evolved along with the web, rather than being designed in a holistic way.  Browser developers tried to fix security problems and web compatibility problems as they were discovered.  This resulted in messy expectations and even messier implementations.</p>
<p>I suggested to our <a href="http://whereswalden.com/">resident exhaustive-testing expert</a> that we try to create a specification and a corresponding set of tests for document navigation and related features.  In addition, I wonder whether rewriting document navigation code could simplify it and make it less fragile.</p>
<h3>Nightly and beta testing</h3>
<p><a href="http://nightly.mozilla.org/">Firefox nightly build</a> testers found more regressions than beta and release users combined.  This is a testament to the power of the Mozilla community, which includes over ten thousand Firefox nightly testers and an incredible bug triage team.</p>
<p>But it&#8217;s also worrying: it suggests that in cases when a security patch can only have a few days of nightly testing, rather than several weeks, a major regression could easily slip through unnoticed. A patch might get only a few days of nightly testing if a developer feels that landing a fix effectively discloses a vulnerability, or when we&#8217;re rushing to fix a security hole that has already been disclosed.</p>
<p>Automated tests will never be able to catch every regression, so we want to help nightly and beta testers identify bugs as effectively as they can, whether a patch undergoes testing for weeks or days. David Boswell has been <a href="http://davidwboswell.wordpress.com/2010/01/29/proposed-update-for-the-minefield-start-page/">improving</a> the <a href="http://www.mozilla.org/projects/minefield/">nightly start page</a> to highlight the best ways to look for bugs.  Developers can now post temporary notes on this page to highlight features that need special testing.</p>
<p>We&#8217;re also making it easier to be a nightly tester.  Automated tests now keep the worst regressions out of nightlies, making nightlies less prone to breaking.  <a href="http://coop.deadsquid.com/2009/08/nightly-updates-for-localized-builds-on-mozilla-central/">Automatic nightly updates now work for all localizations</a>, and we&#8217;re planning to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=446342">make nightly updates smoother</a>.</p>
<p>To expand beta testing, we&#8217;re thinking of <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=410639">adding a checkbox to update preferences</a> to let users choose to become beta testers.  Beta testers are not always as active at reporting bugs as nightly users, but their numbers allow clear trends to appear in <a href="http://crash-stats.mozilla.com/">crash statistics</a>.</p>
<h3>Raw data</h3>
<p>Maybe you can spot patterns that I didn&#8217;t, or suggest other methods of automated testing that could catch these kinds of bugs earlier?</p>
<p>I focused on the symptoms and testcases of the regressions.  Someone reading the patches might notice different patterns.  Would more bugs have been caught by writing new <a href="http://blog.mozilla.org/tglek/2010/01/21/state-of-static-analysis-at-mozilla/">custom static analyses</a>, paying attention to <a href="http://office.smedbergs.us:8080/">new compiler warnings</a>, or getting some testers to report assertion failures from running <a href="http://www.squarefree.com/2010/01/14/downloadable-debug-builds/">debug builds</a>?  Could some architectural change have prevented a class of regressions (or the security bugs whose fixes caused them)?</p>
<p>These links show the 176 regressions caused by security bug fixes between December 2007 and January 2010.  The spreadsheet contains my guesses as to how we found each bug and how we could have found it earlier.</p>
<p><a href="https://bugzilla.mozilla.org/buglist.cgi?bugidtype=include&amp;order=bugs.bug_id&amp;bug_id=406852,407303,408268,408310,409888,410456,410967,411603,411835,412237,412434,412598,413200,413274,414123,414747,415367,416751,416896,417086,417617,418429,418776,419116,419132,420251,420425,420609,420649,420880,421622,421710,423140,423180,423269,423355,423446,423460,423681,423727,424238,424291,424631,424767,425010,425157,425232,425576,426646,427143,427313,427647,427691,427758,427990,428309,428873,428995,429578,429604,429629,429785,429962,429968,430219,430394,431082,431705,432114,434544,434593,434766,435151,435362,439206,440916,442970,443231,443459,444322,445890,446568,447593,448243,449578,450912,452295,452689,453623,454276,455367,455826,457788,460460,463350,465767,467123,468176,468211,468491,468563,470049,471015,471560,472344,472502,472648,472674,474606,477118,478910,479211,479264,479267,479288,479442,480430,481548,482206,482293,482379,482578,482928,482976,484750,486326,486848,487345,487980,488210,488734,488989,489224,489322,489647,489988,490197,491063,491547,491818,492037,492358,493652,495035,495648,496113,498132,498897,500045,500968,502458,503961,505221,505482,506212,506349,507457,509602,510662,512765,513731,514872,515000,517250,519589,519839,521639,521969,524271,525375,526869,527027,528133,529119,531746,535193">List of 176 bugs</a> | <a href="http://spreadsheets.google.com/ccc?key=0Avwx9KUbsag4dEhLT3RDdUhyZXZXaVJYUE5tWlZRLWc&amp;hl=en">Spreadsheet on Google Docs</a> | <a href="http://www.squarefree.com/regressions-from-security-fixes.csv">Spreadsheet as CSV</a></p>
<p>Thanks to Murali Nandigama for helping with Bugzilla queries.  Dan Veditz, Melissa Shapiro, and Drew Ruderman provided valuable feedback on drafts of this post.</p>
<p>Jesse Ruderman<br />
Security bug hunter</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mozilla.org/security/2010/02/10/fixing-security-holes-without-introducing-new-bugs/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
