<?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>Observations from Uppsala &#187; security</title>
	<atom:link href="http://jakob.engbloms.se/archives/tag/security/feed" rel="self" type="application/rss+xml" />
	<link>http://jakob.engbloms.se</link>
	<description>Computer Technology: Simulation, Virtualization, Virtual Platforms, Embedded, Multicore and Multiprocessing (by Jakob Engblom)</description>
	<lastBuildDate>Sun, 29 Jan 2012 19:45:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<image>
    <title>Observations from Uppsala</title>
    <url>http://jakob.engbloms.se/favicon.png</url>
    <link>http://jakob.engbloms.se</link>
    <width>32</width>
    <height>32</height>
    <description>Observations from Uppsala - http://jakob.engbloms.se</description>
    </image>		<item>
		<title>Multicore Denial-of-Service Attack</title>
		<link>http://jakob.engbloms.se/archives/83?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/83#comments</comments>
		<pubDate>Tue, 04 Mar 2008 11:16:08 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[computer architecture]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[multicore]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/83</guid>
		<description><![CDATA[In a paper from USENIX 2007 by Microsoft Researchers Onur Mutlu and Thomas Moscibroda present a working &#8220;denial of service&#8221; attack for multicore processors. The idea is simple: since there is no fairness or security designed into current DRAM controllers, it is quite feasible for one program in a multicore system to hog almost all [...]]]></description>
			<content:encoded><![CDATA[<p>In a <a href="http://research.microsoft.com/~onur/pub/mph_usenix_security07.pdf">paper from USENIX 2007 by Microsoft Researchers Onur Mutlu and Thomas Moscibroda</a> present a working &#8220;<span style="font-weight: bold">denial of service&#8221; attack for multicore processors</span>.  The idea is simple: since there is no fairness or security designed into current DRAM controllers, it is quite feasible for one program in a multicore system to hog almost all memory bandwidth and thus reduce or deny service to the others. There is no direct attack on software programs, just stealing the resources that they all need to share for all to work.<br />
<span id="more-83"></span>The attack is baesd on the following:</p>
<ul>
<li>Several cores share the memory controller(s) &#8212; quite likely, since there is not room for more one controller per core in &gt;2 core machines. The limitation is both because memory controllers are large and complex beasts, and because the pins needed for each memory interface makes it hard to have more than a few on a single chip. While the real estate for processors easily lets us put 4, 8, or 16 cores on a chip today.</li>
<li> Modern DRAM controllers are not a strict fifo queue, but attempt to optimize memory bandwidth by prioritizing accesses that are directed to the currently open rows in the banks in the available DRAMs.</li>
<li>The scheduling strategy used today (as they claim) can be easily monopolized by a thread with a high rate of memory accesses and good sequential locality.  There is no attempt to provide fairness between cores or programs.</li>
</ul>
<p>A simple stream benchmark doing a sequential read through a large array is a simple example of what they term an MPH &#8212; Memory Performance Hog.  In experiments on real hardware and in simulation they show how it can kill the performance of simultaneously executing programs with somewhat more random access patterns.</p>
<p>So what to make of this?</p>
<p>First of all, this is a real attack, in the respect that this sort of thing can and do happen on current hardware with current software out in the field.  How dangerous it is in practice is hard to tell, but it could be an issue for various cases where users are sharing a computer. A bit like the old &#8220;<a href="http://en.wikipedia.org/wiki/Fork_bomb">fork bomb</a>&#8221; on Unix systems. I remember being thrown out of shared Solaris machines a few times due to these (several times unintended by beginning Unix programmers making honest mistakes).</p>
<p>It is more interesting in the context of embedded systems and integrated modular avionics (IMA). As I stated in a few earlier blog posts(<a href="http://jakob.engbloms.se/archives/63">63</a> and <a href="http://jakob.engbloms.se/archives/58">58</a>) I think that the best way to host multiple different applications on a multicore processor is to partition applications sparially across cores.  This should be more efficient, simpler, and safer than sharing all the cores across partitions using time sharing.<br />
However, this attack does reflect critically on that idea: if it is this simple to hog the memory and thus kill performance of other cores and applications, it might not be particularly safe to have each core run an independent set of applications of different criticalities.  It does mean that in order to ensure performance isolation between applications, you will need additional hardware support of one form or the other.  Could be a better DRAM scheduler (as the paper proposes), or a static allocation of a DRAM controller to each core (which is likely infeasible due to pin constraints), or DRAM controllers that do a slightly inefficient but safe allocation of a portion of their bandwidth to each core.</p>
<p>In the meantime, maybe the ugly temporal sharing of the entire chip is the &#8220;best&#8221; way ahead, as it at least is proof against this kind of attack based on parallel execution of partitions.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/83"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/83" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/83" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/83/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Off-Topic: Studying Malware Analysis at HUT.fi</title>
		<link>http://jakob.engbloms.se/archives/71?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/71#comments</comments>
		<pubDate>Sun, 03 Feb 2008 20:18:45 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[blog commentary]]></category>
		<category><![CDATA[off-topic]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/71</guid>
		<description><![CDATA[The F-Secure weblog is one of my regular reads, and today they presented one of the coolest industry-academia items for a long time: F-Secure are teaching an entire course at the Helsinki University of Technology, called &#8220;Malware Analysis and Antivirus Technologies&#8221;. Kudos to F-Secure for the time and money that must have gone into doing [...]]]></description>
			<content:encoded><![CDATA[<p> The F-Secure weblog is one of my regular reads, and today they presented one of the coolest industry-academia items for a long time: F-Secure are teaching an entire course at the <a href="http://www.f-secure.com/weblog/archives/00001370.html">Helsinki University of Technology, called &#8220;Malware Analysis and Antivirus Technologies&#8221;. </a>Kudos to F-Secure for the time and money that must have gone into doing that!</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/71"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/71" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/71" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/71/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FTF Paris: Debug connections threat to secure network devices</title>
		<link>http://jakob.engbloms.se/archives/38?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/38#comments</comments>
		<pubDate>Thu, 11 Oct 2007 12:18:34 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[blog commentary]]></category>
		<category><![CDATA[computer architecture]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[software tools]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/38</guid>
		<description><![CDATA[In a report from FTF Paris 2007, Info World makes some interesting comments on security and locking-down of mobile devices. Info World Â» Blog Archive Â» â€˜Flat IPâ€™ mobile networks face new security challenges: Freescale demonstrated a hardware reference platform with a number of security features for future mobile devices, its i.MX31 and i.MX31L multimedia [...]]]></description>
			<content:encoded><![CDATA[<p>In a report from FTF Paris 2007, Info World makes some interesting comments on security and locking-down of mobile devices.<a href="http://infoworld.bareinfo.com/archives/778"> Info World Â» Blog Archive Â» â€˜Flat IPâ€™ mobile networks face new security challenges:</a></p>
<blockquote><p><span id="more-38"></span><em>Freescale demonstrated a hardware reference platform with a number of security features for future mobile devices, its i.MX31 and i.MX31L multimedia applications processors. Based on the Arm 11 core designed by Arm Holdings, the chips have a run-time integrity checker that verifies the digital signature of code before executing it. This can help stop malware sneaking onto the device â€” although it could also be used to lock down a mobile device and prevent the installation of third-party applications, much as Apple has attempted to do with its iPhone.</em></p></blockquote>
<blockquote><p><em>Prototypes are often designed with additional standard circuitry to make it easier to observe their behavior under test. Probes applied to that circuitry, known as a JTAG interface, can even be used to issue debugging instructions to the microprocessor. The connections for the prototypeâ€™s JTAG interface often survive â€” in different positions on the circuit board â€” right through to final production. Identifying where these points were located on Appleâ€™s iPhone became one of the goals of those trying to unlock the devices as access to it might have allowed them to debug Appleâ€™s security code.</em></p></blockquote>
<p>This is the same concern that was expressed in <a href="http://www.strombergson.com/kryptoblog/">Strombergsons </a>comments to <a href="http://jakob.engbloms.se/archives/17">my post on hardware support for parallel programming</a>. Basically, that remnants of debug support for the development phase can be used in deployment to hack into the device.</p>
<p>And that is pretty hard to get around if you assume you want to do debugging on the device. Which I guess is needed for almost all devices, if nothing else in order to analyze performance on actual hardware. Otherwise, I do believe that virtual prototype platforms and simulators like Simics is a key technology to develop safe applications safely &#8212; using a virtual system for debug, you have no need for debug backdoors on the final hardware. That backdoor is only there in the virtual hardware, not in the physical manifestation of the hardware. Of course, it is then key that the virtual debugger cannot be used by bad guys to break into the software. I think that can be worked around by making it impossible to get a complete system image off of a target system, which is back to physical security.</p>
<p>I think we need some kind of thinking akin to the key tenet of crypto theory, that information should be safe even if all algorithms and mechanisms involved in encrypting it is known. The secrecy of the key is all that is needed. In the same vein, we need to ensure that a piece of software running on a particular piece of hardware is protected against access and intrusion, if the attacker gets access to the source code of the program and a simulator for the hardware or even debug hardware. There has to be some kind of &#8220;key&#8221; mechanism that can be used to ensure this.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/38"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/38" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/38" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/38/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ARM Cortex-A9, Trango, and Virtualization for Migration</title>
		<link>http://jakob.engbloms.se/archives/37?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/37#comments</comments>
		<pubDate>Sun, 07 Oct 2007 18:46:29 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[computer architecture]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[multicore]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[software tools]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/37</guid>
		<description><![CDATA[The new version of Trango&#8217;s embedded &#8220;secure virtualizer&#8221; for the ARM Cortex-A9 MPCore is an interesting solution in that it directly applies virtualization technology to the issue of migrating solutions (complete software stacks) from single-core to multicore. The details are a bit sketchy in just how this is done, there is some hardware support in [...]]]></description>
			<content:encoded><![CDATA[<p>The new version of <a href="http://www.eetimes.eu/scandinavia/202200973">Trango&#8217;s embedded &#8220;secure virtualizer&#8221;</a> for the ARM Cortex-A9 MPCore is an interesting solution in that it directly applies virtualization technology to the issue of migrating solutions (complete software stacks) from single-core to multicore. The details are a bit sketchy in just how this is done, there is some hardware support in recent ARM architectures, but a little bit of adaptation of a guest OS using paravirtual techniques are likely not a blocker. It also touches on security, implemented using ARM&#8217;s trustzone technology. All in all, I think this is a typical example of something that we are going to see much more of.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/37"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/37" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/37" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/37/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

