<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
	>
<channel>
	<title>Comments on: ARDAgent Exploit, MacOS X Malware, and Snow Leopard, Oh My!</title>
	<atom:link href="http://blog.trailofbits.com/2008/06/22/ardagent-exploit-macos-x-malware-and-snow-leopard-oh-my/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.trailofbits.com/2008/06/22/ardagent-exploit-macos-x-malware-and-snow-leopard-oh-my/</link>
	<description>4888 C3C4 099A 4240 9648  719B 84E0 A6FE 32AE 38F6</description>
	<pubDate>Wed, 07 Jan 2009 04:18:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Boyd Waters</title>
		<link>http://blog.trailofbits.com/2008/06/22/ardagent-exploit-macos-x-malware-and-snow-leopard-oh-my/#comment-81</link>
		<dc:creator>Boyd Waters</dc:creator>
		<pubDate>Mon, 30 Jun 2008 22:18:15 +0000</pubDate>
		<guid isPermaLink="false">http://trailofbits.wordpress.com/?p=26#comment-81</guid>
		<description>Is there any work currently being done on Mandatory Access Control?
Like
http://www.sedarwin.org/
?

Or Role-Based Access Control?</description>
		<content:encoded><![CDATA[<p>Is there any work currently being done on Mandatory Access Control?<br />
Like<br />
<a href="http://www.sedarwin.org/" rel="nofollow">http://www.sedarwin.org/</a><br />
?</p>
<p>Or Role-Based Access Control?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dino Dai Zovi</title>
		<link>http://blog.trailofbits.com/2008/06/22/ardagent-exploit-macos-x-malware-and-snow-leopard-oh-my/#comment-80</link>
		<dc:creator>Dino Dai Zovi</dc:creator>
		<pubDate>Thu, 26 Jun 2008 02:59:11 +0000</pubDate>
		<guid isPermaLink="false">http://trailofbits.wordpress.com/?p=26#comment-80</guid>
		<description>@Joanna

Even though, in your setup, it is the local exploit that you consider to be the damaging one, getting remote code running in your e-mail client or web browser is still bad.  I think it's getting the foot in the door that is the most serious on a single-user desktop because no matter what, at that point your privacy and security is violated.  On multi-user interactive servers, a local vulnerability is more critical, but still not as critical as a remote vulnerability in my mind.

I guess I was quick to write, "forget about protecting the kernel," but should have written "focus on securing the hypervisor over making a secure non-monolithic kernel."  I basically think that eventually the hypervisor will become what we think of as the "kernel" and our current kernels will become "servers" that run on top of it.  And what do we have then?  A microkernel!  In Tanenbaum and Torvolds' classic debate, Tanenbaum finally wins!</description>
		<content:encoded><![CDATA[<p>@Joanna</p>
<p>Even though, in your setup, it is the local exploit that you consider to be the damaging one, getting remote code running in your e-mail client or web browser is still bad.  I think it&#8217;s getting the foot in the door that is the most serious on a single-user desktop because no matter what, at that point your privacy and security is violated.  On multi-user interactive servers, a local vulnerability is more critical, but still not as critical as a remote vulnerability in my mind.</p>
<p>I guess I was quick to write, &#8220;forget about protecting the kernel,&#8221; but should have written &#8220;focus on securing the hypervisor over making a secure non-monolithic kernel.&#8221;  I basically think that eventually the hypervisor will become what we think of as the &#8220;kernel&#8221; and our current kernels will become &#8220;servers&#8221; that run on top of it.  And what do we have then?  A microkernel!  In Tanenbaum and Torvolds&#8217; classic debate, Tanenbaum finally wins!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joanna Rutkowska</title>
		<link>http://blog.trailofbits.com/2008/06/22/ardagent-exploit-macos-x-malware-and-snow-leopard-oh-my/#comment-79</link>
		<dc:creator>Joanna Rutkowska</dc:creator>
		<pubDate>Tue, 24 Jun 2008 14:44:57 +0000</pubDate>
		<guid isPermaLink="false">http://trailofbits.wordpress.com/?p=26#comment-79</guid>
		<description>Dino wrote:

"But if we treat every local privilege escalation as critical, how do we treat remote (including client-side) exploits? Ultra-double-plus critical?"

;)

Ok, so here's an example of why a local-root exploit might be sometimes more dangerous then a remote-browser one. Before I switched to Mac, I used to use Vista system on my primary laptop. In order to somewhat secure it I used to run various programs using different accounts, e.g. my Web-browser (used for non-critical tasks) used to run as 'joanna.web', while my email client as 'joanna.email', etc. I also made use of some other sandboxing technologies available on Vista.

So, in that case I didn't care much about a bug in my browser, because all the attacker could get, theoretically, was just joanna.web's privileges which pretty much meant only an access to my c:/tmp directory.

But if somebody could use an exploit to elevate from joanna.web to admin/kernel, then all my clever security setup turned out being useless.

Right now I'm using VMWare Fusion to run my browser and the situation is similar, with the difference that now an attacker needs to have a VMWare Fusion escape exploit, which I believe are a bit harder to find then local kernel exploits for Vista or Mac. Although, I must say, running a bowser inside VMWare Fusion sucks for various reasons (and the same for Parallels).

Should we give up on securing guest OSes and focus only on securing hypervisors? If we followed this way of thinking then we should remove all the security mechanisms from the OS (ACLs, different user accounts, etc). I don't like this approach -- it's inelegant, although I do think that secure hypervisors can be used as a remedy for current OS security problems. Heck, we even are engaged in a project in this area, but still  I think we should not give up on securing guest OSes.</description>
		<content:encoded><![CDATA[<p>Dino wrote:</p>
<p>&#8220;But if we treat every local privilege escalation as critical, how do we treat remote (including client-side) exploits? Ultra-double-plus critical?&#8221;</p>
<p> <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Ok, so here&#8217;s an example of why a local-root exploit might be sometimes more dangerous then a remote-browser one. Before I switched to Mac, I used to use Vista system on my primary laptop. In order to somewhat secure it I used to run various programs using different accounts, e.g. my Web-browser (used for non-critical tasks) used to run as &#8216;joanna.web&#8217;, while my email client as &#8216;joanna.email&#8217;, etc. I also made use of some other sandboxing technologies available on Vista.</p>
<p>So, in that case I didn&#8217;t care much about a bug in my browser, because all the attacker could get, theoretically, was just joanna.web&#8217;s privileges which pretty much meant only an access to my c:/tmp directory.</p>
<p>But if somebody could use an exploit to elevate from joanna.web to admin/kernel, then all my clever security setup turned out being useless.</p>
<p>Right now I&#8217;m using VMWare Fusion to run my browser and the situation is similar, with the difference that now an attacker needs to have a VMWare Fusion escape exploit, which I believe are a bit harder to find then local kernel exploits for Vista or Mac. Although, I must say, running a bowser inside VMWare Fusion sucks for various reasons (and the same for Parallels).</p>
<p>Should we give up on securing guest OSes and focus only on securing hypervisors? If we followed this way of thinking then we should remove all the security mechanisms from the OS (ACLs, different user accounts, etc). I don&#8217;t like this approach &#8212; it&#8217;s inelegant, although I do think that secure hypervisors can be used as a remedy for current OS security problems. Heck, we even are engaged in a project in this area, but still  I think we should not give up on securing guest OSes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dino Dai Zovi</title>
		<link>http://blog.trailofbits.com/2008/06/22/ardagent-exploit-macos-x-malware-and-snow-leopard-oh-my/#comment-78</link>
		<dc:creator>Dino Dai Zovi</dc:creator>
		<pubDate>Tue, 24 Jun 2008 12:35:23 +0000</pubDate>
		<guid isPermaLink="false">http://trailofbits.wordpress.com/?p=26#comment-78</guid>
		<description>Hi Joanna,

I agree with you that having more defense-in-depth on individual systems would be good.  But if we treat every local privilege escalation as critical, how do we treat remote (including client-side) exploits?  Ultra-double-plus critical?  I think with any system, once an attacker has remote code execution (even unprivileged), you have begun to lose the battle.  

I know that you love going straight to the kernel, but there is still a lot of badness that can be done without even obtaining root access, especially the kind that most malware would be interested in (showing ads, stealing passwords, data, etc).  It's just not as stealthy and not nearly as interesting.

As for your attacks against Vista, I believed from the beginning that MS should have just encrypted their swap files, which would have stopped that specific attack as well as better protected the users data.  I agree with you that protecting a monolithic kernel can be very difficult, especially when third parties are writing drivers for it, which as you also demonstrated, can be abused by attackers to get into the kernel also.

Maybe we should just forget about protecting the kernel and just try to secure the hypervisors.  There is no legacy code there, the entire thing can be written with modern secure coding techniques and have a smaller attack surface by design.</description>
		<content:encoded><![CDATA[<p>Hi Joanna,</p>
<p>I agree with you that having more defense-in-depth on individual systems would be good.  But if we treat every local privilege escalation as critical, how do we treat remote (including client-side) exploits?  Ultra-double-plus critical?  I think with any system, once an attacker has remote code execution (even unprivileged), you have begun to lose the battle.  </p>
<p>I know that you love going straight to the kernel, but there is still a lot of badness that can be done without even obtaining root access, especially the kind that most malware would be interested in (showing ads, stealing passwords, data, etc).  It&#8217;s just not as stealthy and not nearly as interesting.</p>
<p>As for your attacks against Vista, I believed from the beginning that MS should have just encrypted their swap files, which would have stopped that specific attack as well as better protected the users data.  I agree with you that protecting a monolithic kernel can be very difficult, especially when third parties are writing drivers for it, which as you also demonstrated, can be abused by attackers to get into the kernel also.</p>
<p>Maybe we should just forget about protecting the kernel and just try to secure the hypervisors.  There is no legacy code there, the entire thing can be written with modern secure coding techniques and have a smaller attack surface by design.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joanna Rutkowska</title>
		<link>http://blog.trailofbits.com/2008/06/22/ardagent-exploit-macos-x-malware-and-snow-leopard-oh-my/#comment-77</link>
		<dc:creator>Joanna Rutkowska</dc:creator>
		<pubDate>Tue, 24 Jun 2008 10:27:31 +0000</pubDate>
		<guid isPermaLink="false">http://trailofbits.wordpress.com/?p=26#comment-77</guid>
		<description>Hi Dino,

I would argue that any kind of bug that allows for local-root-priv-escalation is should be treated as a critical. If we could eliminate all priv-escalation bugs, then we would be able to solve a lot of security problems on consumer OSes, e.g. Windows, that we have today. All those personal firewalls, and Host IDS/IPS systems would actually make sens then. Right now they don't, just because malware is able to get into kernel (and right getting the root access on OSX is equivalent with getting into kernel).

After all, you wrote it yourself that you wish to see more "Sandbox policies for Safari, Mail.app, and third-party applications." -- and what is sandboxing if not protecting the root/kernel from malware in the first place?

I totally agree with you on the kernel component mandatory signing, more over, I think this should be extended to cover also all the usermode apps as well. However, assuming that this would protect the kernel from compromises is a wrong. Alex and myself has demonstrated this at Black Hat 2006 and 2007, taking Vista and its mandatory kernel code signing scheme as an example. One can't effectively protect a monolithic kernel -- the potential attack space is just too large. Especially, if we allow root-escalation attacks.</description>
		<content:encoded><![CDATA[<p>Hi Dino,</p>
<p>I would argue that any kind of bug that allows for local-root-priv-escalation is should be treated as a critical. If we could eliminate all priv-escalation bugs, then we would be able to solve a lot of security problems on consumer OSes, e.g. Windows, that we have today. All those personal firewalls, and Host IDS/IPS systems would actually make sens then. Right now they don&#8217;t, just because malware is able to get into kernel (and right getting the root access on OSX is equivalent with getting into kernel).</p>
<p>After all, you wrote it yourself that you wish to see more &#8220;Sandbox policies for Safari, Mail.app, and third-party applications.&#8221; &#8212; and what is sandboxing if not protecting the root/kernel from malware in the first place?</p>
<p>I totally agree with you on the kernel component mandatory signing, more over, I think this should be extended to cover also all the usermode apps as well. However, assuming that this would protect the kernel from compromises is a wrong. Alex and myself has demonstrated this at Black Hat 2006 and 2007, taking Vista and its mandatory kernel code signing scheme as an example. One can&#8217;t effectively protect a monolithic kernel &#8212; the potential attack space is just too large. Especially, if we allow root-escalation attacks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Improving OS X Security &#124; securosis.com</title>
		<link>http://blog.trailofbits.com/2008/06/22/ardagent-exploit-macos-x-malware-and-snow-leopard-oh-my/#comment-71</link>
		<dc:creator>Improving OS X Security &#124; securosis.com</dc:creator>
		<pubDate>Mon, 23 Jun 2008 19:07:49 +0000</pubDate>
		<guid isPermaLink="false">http://trailofbits.wordpress.com/?p=26#comment-71</guid>
		<description>[...] and more extensive use of DEP. I&#8217;m not bothering to lay this out in any more depth, because Dino Dai Zovi did a much better job of describing them over on his blog. Dino&#8217;s one of the top Mac security researchers out there, so I highly suggest you read his [...]</description>
		<content:encoded><![CDATA[<p>[...] and more extensive use of DEP. I&#8217;m not bothering to lay this out in any more depth, because Dino Dai Zovi did a much better job of describing them over on his blog. Dino&#8217;s one of the top Mac security researchers out there, so I highly suggest you read his [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: john fsck</title>
		<link>http://blog.trailofbits.com/2008/06/22/ardagent-exploit-macos-x-malware-and-snow-leopard-oh-my/#comment-67</link>
		<dc:creator>john fsck</dc:creator>
		<pubDate>Mon, 23 Jun 2008 07:26:26 +0000</pubDate>
		<guid isPermaLink="false">http://trailofbits.wordpress.com/?p=26#comment-67</guid>
		<description>Sorry dino, I should have been more clear on that. Thats what you get for posting on blogs from work :P

I think that is probably part of the reason Apple didn't spend the $$ or engineering man power on getting ASLR terribly right. In fact their ASLR is a bit of a token effort to say "We have ASLR".</description>
		<content:encoded><![CDATA[<p>Sorry dino, I should have been more clear on that. Thats what you get for posting on blogs from work <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>I think that is probably part of the reason Apple didn&#8217;t spend the $$ or engineering man power on getting ASLR terribly right. In fact their ASLR is a bit of a token effort to say &#8220;We have ASLR&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dino Dai Zovi</title>
		<link>http://blog.trailofbits.com/2008/06/22/ardagent-exploit-macos-x-malware-and-snow-leopard-oh-my/#comment-66</link>
		<dc:creator>Dino Dai Zovi</dc:creator>
		<pubDate>Mon, 23 Jun 2008 07:19:28 +0000</pubDate>
		<guid isPermaLink="false">http://trailofbits.wordpress.com/?p=26#comment-66</guid>
		<description>@Chris

This exploit requires that the user running it is the *same* user as who is logged in.  Any user logging in remotely as the user who has access to Retrospect most likely already has all the access that they need :).

@john

You are right, x86-64 actually has a non-executable heap, but it is more the fact that all writable memory is non-executable.  This is not due to NX, which is a x86 PAE thing, it is due to the fact that on x86-64 page permissions are actually meaningful and Apple has been careful to restrict page permissions to the minimum necessary.  On x86, a page of memory is executable if it is marked readable (hence the need for the dedicated NX bit).  Running vmmap on a 64-bit process like httpd shows that not a single page of memory is readable, writable, and executable at the same time.</description>
		<content:encoded><![CDATA[<p>@Chris</p>
<p>This exploit requires that the user running it is the *same* user as who is logged in.  Any user logging in remotely as the user who has access to Retrospect most likely already has all the access that they need :).</p>
<p>@john</p>
<p>You are right, x86-64 actually has a non-executable heap, but it is more the fact that all writable memory is non-executable.  This is not due to NX, which is a x86 PAE thing, it is due to the fact that on x86-64 page permissions are actually meaningful and Apple has been careful to restrict page permissions to the minimum necessary.  On x86, a page of memory is executable if it is marked readable (hence the need for the dedicated NX bit).  Running vmmap on a 64-bit process like httpd shows that not a single page of memory is readable, writable, and executable at the same time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: john fsck</title>
		<link>http://blog.trailofbits.com/2008/06/22/ardagent-exploit-macos-x-malware-and-snow-leopard-oh-my/#comment-65</link>
		<dc:creator>john fsck</dc:creator>
		<pubDate>Mon, 23 Jun 2008 06:56:18 +0000</pubDate>
		<guid isPermaLink="false">http://trailofbits.wordpress.com/?p=26#comment-65</guid>
		<description>Hey,

WRT NX, I believe 64bit binaries have a non executable heap on OSX?
For instance this covers httpd and some other daemons on OSX Leopard.</description>
		<content:encoded><![CDATA[<p>Hey,</p>
<p>WRT NX, I believe 64bit binaries have a non executable heap on OSX?<br />
For instance this covers httpd and some other daemons on OSX Leopard.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Pepper</title>
		<link>http://blog.trailofbits.com/2008/06/22/ardagent-exploit-macos-x-malware-and-snow-leopard-oh-my/#comment-64</link>
		<dc:creator>Chris Pepper</dc:creator>
		<pubDate>Mon, 23 Jun 2008 04:57:06 +0000</pubDate>
		<guid isPermaLink="false">http://trailofbits.wordpress.com/?p=26#comment-64</guid>
		<description>FYI: Many Mac servers are always logged in because the Rerospect extension only runs with a user logged in. Yes, Legato (EMC) is sad.</description>
		<content:encoded><![CDATA[<p>FYI: Many Mac servers are always logged in because the Rerospect extension only runs with a user logged in. Yes, Legato (EMC) is sad.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
