<?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: Buffer Overflows and History: a request</title>
	<atom:link href="http://emergentchaos.com/archives/2008/10/buffer-overflows-and-history-a-request.html/feed" rel="self" type="application/rss+xml" />
	<link>http://emergentchaos.com/archives/2008/10/buffer-overflows-and-history-a-request.html</link>
	<description>The Emergent Chaos Jazz Combo</description>
	<lastBuildDate>Mon, 15 Mar 2010 15:02:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Pete</title>
		<link>http://emergentchaos.com/archives/2008/10/buffer-overflows-and-history-a-request.html/comment-page-1#comment-5158</link>
		<dc:creator>Pete</dc:creator>
		<pubDate>Tue, 28 Oct 2008 14:26:29 +0000</pubDate>
		<guid isPermaLink="false">http://emergentchaos.com/?p=2924#comment-5158</guid>
		<description>@Adam -
Sure there were people who understood it, and in the aftermath of the Morris worm, a number of folks wrote about it, including Gene Spafford in 1991. I am not sure why these don&#039;t qualify as public information - what people knew about buffer overflows was published. (There is a more interesting question here about distribution of information in pre-Internet days, I think).
Regarding the cost model, we are caught in a chicken/egg causation question. My model would include the costs associated with incidents prior to Aleph One&#039;s paper (e.g. Morris worm) to the costs after the paper (e.g. almost everything else). In addition, I would factor in the costs of patch development and application. I think maybe your patch timing paper could be used at a macro level as well to help flesh this out.
In any case, it seems to me that the costs after the paper were many times more than the costs prior to publication. What am I missing?
</description>
		<content:encoded><![CDATA[<p>@Adam -<br />
Sure there were people who understood it, and in the aftermath of the Morris worm, a number of folks wrote about it, including Gene Spafford in 1991. I am not sure why these don&#8217;t qualify as public information &#8211; what people knew about buffer overflows was published. (There is a more interesting question here about distribution of information in pre-Internet days, I think).<br />
Regarding the cost model, we are caught in a chicken/egg causation question. My model would include the costs associated with incidents prior to Aleph One&#8217;s paper (e.g. Morris worm) to the costs after the paper (e.g. almost everything else). In addition, I would factor in the costs of patch development and application. I think maybe your patch timing paper could be used at a macro level as well to help flesh this out.<br />
In any case, it seems to me that the costs after the paper were many times more than the costs prior to publication. What am I missing?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam</title>
		<link>http://emergentchaos.com/archives/2008/10/buffer-overflows-and-history-a-request.html/comment-page-1#comment-5157</link>
		<dc:creator>Adam</dc:creator>
		<pubDate>Tue, 28 Oct 2008 10:36:49 +0000</pubDate>
		<guid isPermaLink="false">http://emergentchaos.com/?p=2924#comment-5157</guid>
		<description>Pete,
There were clearly people who understood the technique and could exploit it.  For example, Robert Morris Jr.
Feel free to attempt to flesh out the cost model.  From where I sit, it&#039;s pretty overwhelmingly obvious that a tutorial on writing X makes it easier for more people to do X, and that not discussing X meant that the problem was harder to prevent.
</description>
		<content:encoded><![CDATA[<p>Pete,<br />
There were clearly people who understood the technique and could exploit it.  For example, Robert Morris Jr.<br />
Feel free to attempt to flesh out the cost model.  From where I sit, it&#8217;s pretty overwhelmingly obvious that a tutorial on writing X makes it easier for more people to do X, and that not discussing X meant that the problem was harder to prevent.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pete</title>
		<link>http://emergentchaos.com/archives/2008/10/buffer-overflows-and-history-a-request.html/comment-page-1#comment-5156</link>
		<dc:creator>Pete</dc:creator>
		<pubDate>Tue, 28 Oct 2008 10:05:12 +0000</pubDate>
		<guid isPermaLink="false">http://emergentchaos.com/?p=2924#comment-5156</guid>
		<description>This is a tricky topic, but I tend to agree with Anonymous Geek. Also, I think it is worth considering that this might not have been a &quot;festering secret&quot; as much as nobody bothered to develop/control the weakness for &quot;fun and profit&quot; as it were. It&#039;s sort of like saying electricity was a festering secret for hundreds of years before we figured out how to use it.
It may also be worth really fleshing out the cost model - I don&#039;t see how Aleph One&#039;s paper reduced costs nor how secrecy increased them.
</description>
		<content:encoded><![CDATA[<p>This is a tricky topic, but I tend to agree with Anonymous Geek. Also, I think it is worth considering that this might not have been a &#8220;festering secret&#8221; as much as nobody bothered to develop/control the weakness for &#8220;fun and profit&#8221; as it were. It&#8217;s sort of like saying electricity was a festering secret for hundreds of years before we figured out how to use it.<br />
It may also be worth really fleshing out the cost model &#8211; I don&#8217;t see how Aleph One&#8217;s paper reduced costs nor how secrecy increased them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam</title>
		<link>http://emergentchaos.com/archives/2008/10/buffer-overflows-and-history-a-request.html/comment-page-1#comment-5155</link>
		<dc:creator>Adam</dc:creator>
		<pubDate>Wed, 22 Oct 2008 11:17:23 +0000</pubDate>
		<guid isPermaLink="false">http://emergentchaos.com/?p=2924#comment-5155</guid>
		<description>Anonymous geek,
Thanks for checking through that for us!
As to the question of &quot;Is Aleph&#039;s paper the best illustration?&quot;  I chose it very intentionally.   Yes, the paper led to a massive and unfortunate rise in stack smashing for fun and profit.  However, we&#039;re now in a decline of such things, and most modern OSs now have explicit defenses.  Had the paper come out in &#039;85, most of those defenses would have been in place when the Internet came along.  We&#039;d have a lot less code to comb through.
</description>
		<content:encoded><![CDATA[<p>Anonymous geek,<br />
Thanks for checking through that for us!<br />
As to the question of &#8220;Is Aleph&#8217;s paper the best illustration?&#8221;  I chose it very intentionally.   Yes, the paper led to a massive and unfortunate rise in stack smashing for fun and profit.  However, we&#8217;re now in a decline of such things, and most modern OSs now have explicit defenses.  Had the paper come out in &#8216;85, most of those defenses would have been in place when the Internet came along.  We&#8217;d have a lot less code to comb through.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: anonymous geek</title>
		<link>http://emergentchaos.com/archives/2008/10/buffer-overflows-and-history-a-request.html/comment-page-1#comment-5154</link>
		<dc:creator>anonymous geek</dc:creator>
		<pubDate>Wed, 22 Oct 2008 01:59:29 +0000</pubDate>
		<guid isPermaLink="false">http://emergentchaos.com/?p=2924#comment-5154</guid>
		<description>I read pages 4-4 to 4-10 of B5500 Reference Manual 1021326.  I don&#039;t see how this is relevant to Adam&#039;s request.  I don&#039;t see any warning that overflow of user-supplied data can alter the program&#039;s control flow and thereby breach security.  I don&#039;t see any warning that overruns of user data buffers can be used by an attacker to take control of the running code.  This is nothing like the Aleph One paper.  I&#039;m unimpressed.
</description>
		<content:encoded><![CDATA[<p>I read pages 4-4 to 4-10 of B5500 Reference Manual 1021326.  I don&#8217;t see how this is relevant to Adam&#8217;s request.  I don&#8217;t see any warning that overflow of user-supplied data can alter the program&#8217;s control flow and thereby breach security.  I don&#8217;t see any warning that overruns of user data buffers can be used by an attacker to take control of the running code.  This is nothing like the Aleph One paper.  I&#8217;m unimpressed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andy Steingruebl</title>
		<link>http://emergentchaos.com/archives/2008/10/buffer-overflows-and-history-a-request.html/comment-page-1#comment-5153</link>
		<dc:creator>Andy Steingruebl</dc:creator>
		<pubDate>Tue, 21 Oct 2008 19:11:59 +0000</pubDate>
		<guid isPermaLink="false">http://emergentchaos.com/?p=2924#comment-5153</guid>
		<description>Got another update on this:
&quot;If they would look at the B5500 Reference Manual 1021326 and go to pages 4-4 to 4-10 there is information on the Interrupt Controller.  In particular they should refer to the Stack Overflow, Invalid Address and Invalid Index interrupts.
Section 3 of the manual talks about how the stack concept worked in the system.  In there are explanations of the various registers and how their error detection would cause these interrupts to be set.
Normally you would not expect these interrupts to be set because they caused a job to abort.  Since this was a multi-tasking system you only lost the one job and the system continued to run and start the next job in the queue.  If you had a two processor system, they worked in a master/slave configuration and you actually ran two independent jobs simultaneously while sharing a common memory and I/O system&quot;
</description>
		<content:encoded><![CDATA[<p>Got another update on this:<br />
&#8220;If they would look at the B5500 Reference Manual 1021326 and go to pages 4-4 to 4-10 there is information on the Interrupt Controller.  In particular they should refer to the Stack Overflow, Invalid Address and Invalid Index interrupts.<br />
Section 3 of the manual talks about how the stack concept worked in the system.  In there are explanations of the various registers and how their error detection would cause these interrupts to be set.<br />
Normally you would not expect these interrupts to be set because they caused a job to abort.  Since this was a multi-tasking system you only lost the one job and the system continued to run and start the next job in the queue.  If you had a two processor system, they worked in a master/slave configuration and you actually ran two independent jobs simultaneously while sharing a common memory and I/O system&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: anonymous geek</title>
		<link>http://emergentchaos.com/archives/2008/10/buffer-overflows-and-history-a-request.html/comment-page-1#comment-5152</link>
		<dc:creator>anonymous geek</dc:creator>
		<pubDate>Tue, 21 Oct 2008 13:18:42 +0000</pubDate>
		<guid isPermaLink="false">http://emergentchaos.com/?p=2924#comment-5152</guid>
		<description>As I read the blog post, Adam isn&#039;t asking for a reference to defenses like array bounds checking; &lt;b&gt;he&#039;s asking for a reference to a clear description of the attack -- namely, something that makes clear just how easily, and how thoroughly, systems can be exploited if they contain a buffer overrun / array out-of-bounds error.&lt;/b&gt;  [Bold added by Adam: Yes!]
Of course it was well known that array bounds checking can help prevent some kinds of bugs -- e.g., bugs that might cause your program to crash or cause random memory corruption.  But this misses the point.  The eye-opener about Aleph One&#039;s paper is that it shows how easy it is to inject malicious code and cause the system to transfer control to the malicious code.  That was truly eye-opening.
I don&#039;t recall seeing this clearly documented decades earlier.  Yes, there are the Karger papers, but based on my memory, I don&#039;t believe they clearly explain the stack-smashing attack.
A clear description of the stack-smashing exploit was important: it changed people&#039;s thinking about the severity of buffer overrun bugs.  Aleph One&#039;s paper made very clear, in a way that earlier papers did not, how serious these bugs are.
P.S. Adam, while it&#039;s probably fair to say that Aleph One&#039;s paper led to significant improvements to buffer overrun defense, it&#039;s also my impression that it led to a tremendous increase in exploitation of buffer overrun vulnerabilities for malice.  It&#039;s not clear to me if it was the publication of Aleph One&#039;s paper that led to better defenses -- or if it was the significant uptick in malicious buffer overrun attacks following publication of Aleph One&#039;s paper that stimulated work on better defenses.  I&#039;m not sure how we would tell.  So while I agree with your general thesis, I wonder whether Aleph One&#039;s paper is the best illustration of it.
For other illustrations of this thesis, see the foreword and endnote to Bellovin&#039;s paper on DNS security (http://www.cs.columbia.edu/~smb/papers/dnshack.pdf), which covers the flip side: Bellovin decided not to disclose the vulnerability for fear of making things worse, but attackers learned of it anyway and this probably delayed deployment of defenses.  See also the story about DDoS with reflectors: if I recall correctly, Vern Paxson discovered the threat (I think?), but didn&#039;t publish because he couldn&#039;t come up with any way to defend against the threat, so publishing seemed like it would only make things worse.  Years later, Barros rediscovered the problem and found a clever defense (http://web.archive.org/web/20060331022605/http://www.research.att.com/lists/ietf-itrace/2000/09/msg00044.html is the message, I think) that stimulated new work on defenses against this kind of attack.  It turns out that reflector-based DDoS probably isn&#039;t very important today, because of the rise of botnets, but that&#039;s a story &quot;that could have been&quot;.  And ask David Jefferson or David Wagner sometime about the story with the Diebold virus vulnerability (the &quot;Hursti II&quot; hack) and how much delayed disclosure helped, for another example of the flip side of the story.
</description>
		<content:encoded><![CDATA[<p>As I read the blog post, Adam isn&#8217;t asking for a reference to defenses like array bounds checking; <b>he&#8217;s asking for a reference to a clear description of the attack &#8212; namely, something that makes clear just how easily, and how thoroughly, systems can be exploited if they contain a buffer overrun / array out-of-bounds error.</b>  [Bold added by Adam: Yes!]<br />
Of course it was well known that array bounds checking can help prevent some kinds of bugs &#8212; e.g., bugs that might cause your program to crash or cause random memory corruption.  But this misses the point.  The eye-opener about Aleph One&#8217;s paper is that it shows how easy it is to inject malicious code and cause the system to transfer control to the malicious code.  That was truly eye-opening.<br />
I don&#8217;t recall seeing this clearly documented decades earlier.  Yes, there are the Karger papers, but based on my memory, I don&#8217;t believe they clearly explain the stack-smashing attack.<br />
A clear description of the stack-smashing exploit was important: it changed people&#8217;s thinking about the severity of buffer overrun bugs.  Aleph One&#8217;s paper made very clear, in a way that earlier papers did not, how serious these bugs are.<br />
P.S. Adam, while it&#8217;s probably fair to say that Aleph One&#8217;s paper led to significant improvements to buffer overrun defense, it&#8217;s also my impression that it led to a tremendous increase in exploitation of buffer overrun vulnerabilities for malice.  It&#8217;s not clear to me if it was the publication of Aleph One&#8217;s paper that led to better defenses &#8212; or if it was the significant uptick in malicious buffer overrun attacks following publication of Aleph One&#8217;s paper that stimulated work on better defenses.  I&#8217;m not sure how we would tell.  So while I agree with your general thesis, I wonder whether Aleph One&#8217;s paper is the best illustration of it.<br />
For other illustrations of this thesis, see the foreword and endnote to Bellovin&#8217;s paper on DNS security (<a href="http://www.cs.columbia.edu/~smb/papers/dnshack.pdf" rel="nofollow">http://www.cs.columbia.edu/~smb/papers/dnshack.pdf</a>), which covers the flip side: Bellovin decided not to disclose the vulnerability for fear of making things worse, but attackers learned of it anyway and this probably delayed deployment of defenses.  See also the story about DDoS with reflectors: if I recall correctly, Vern Paxson discovered the threat (I think?), but didn&#8217;t publish because he couldn&#8217;t come up with any way to defend against the threat, so publishing seemed like it would only make things worse.  Years later, Barros rediscovered the problem and found a clever defense (<a href="http://web.archive.org/web/20060331022605/http://www.research.att.com/lists/ietf-itrace/2000/09/msg00044.html" rel="nofollow">http://web.archive.org/web/20060331022605/http://www.research.att.com/lists/ietf-itrace/2000/09/msg00044.html</a> is the message, I think) that stimulated new work on defenses against this kind of attack.  It turns out that reflector-based DDoS probably isn&#8217;t very important today, because of the rise of botnets, but that&#8217;s a story &#8220;that could have been&#8221;.  And ask David Jefferson or David Wagner sometime about the story with the Diebold virus vulnerability (the &#8220;Hursti II&#8221; hack) and how much delayed disclosure helped, for another example of the flip side of the story.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Arthur</title>
		<link>http://emergentchaos.com/archives/2008/10/buffer-overflows-and-history-a-request.html/comment-page-1#comment-5151</link>
		<dc:creator>Arthur</dc:creator>
		<pubDate>Tue, 21 Oct 2008 11:28:15 +0000</pubDate>
		<guid isPermaLink="false">http://emergentchaos.com/?p=2924#comment-5151</guid>
		<description>I seem to recall Peter Neumann talking on comp.risks about finding buffer overflows in Multix back in the mid-60s, but I can&#039;t find a reference to it at the moment.
</description>
		<content:encoded><![CDATA[<p>I seem to recall Peter Neumann talking on comp.risks about finding buffer overflows in Multix back in the mid-60s, but I can&#8217;t find a reference to it at the moment.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: anonymous canuck</title>
		<link>http://emergentchaos.com/archives/2008/10/buffer-overflows-and-history-a-request.html/comment-page-1#comment-5150</link>
		<dc:creator>anonymous canuck</dc:creator>
		<pubDate>Tue, 21 Oct 2008 06:55:38 +0000</pubDate>
		<guid isPermaLink="false">http://emergentchaos.com/?p=2924#comment-5150</guid>
		<description>Bounds checking was the ticket.  I recall seeing this problem with standard Fortran and variations called WATFOR and WATFIV from the University of Waterloo back around 1976-1978.  In normal Fortran the problem could happen anytime unless you compiled with bounds checking. WATFOR/WATFIV were designed for students and did this automatically, except you could bypass it when using call by reference to pass arrays of arbitary sizes.  Some students had programs that would dump arbitrary core or write and execute arbitrary instructions.  I don&#039;t recall anyone smashing a stack but then you didn&#039;t need to.
</description>
		<content:encoded><![CDATA[<p>Bounds checking was the ticket.  I recall seeing this problem with standard Fortran and variations called WATFOR and WATFIV from the University of Waterloo back around 1976-1978.  In normal Fortran the problem could happen anytime unless you compiled with bounds checking. WATFOR/WATFIV were designed for students and did this automatically, except you could bypass it when using call by reference to pass arrays of arbitary sizes.  Some students had programs that would dump arbitrary core or write and execute arbitrary instructions.  I don&#8217;t recall anyone smashing a stack but then you didn&#8217;t need to.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Blenney</title>
		<link>http://emergentchaos.com/archives/2008/10/buffer-overflows-and-history-a-request.html/comment-page-1#comment-5149</link>
		<dc:creator>Blenney</dc:creator>
		<pubDate>Mon, 20 Oct 2008 20:13:46 +0000</pubDate>
		<guid isPermaLink="false">http://emergentchaos.com/?p=2924#comment-5149</guid>
		<description>It was known as &quot;array bounds checking&quot; - if you search on that you may have more luck. If all compilers had it these days, we&#039;d all be a lot safer.
But I think it became very unpopular as languages started to deal less with arrays of defined size, and more with strings of undefined size.
</description>
		<content:encoded><![CDATA[<p>It was known as &#8220;array bounds checking&#8221; &#8211; if you search on that you may have more luck. If all compilers had it these days, we&#8217;d all be a lot safer.<br />
But I think it became very unpopular as languages started to deal less with arrays of defined size, and more with strings of undefined size.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
