<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: The Sad State of Computer Security</title>
	<atom:link href="http://indefinitestudies.org/2009/11/20/the-sad-state-of-computer-security/feed/" rel="self" type="application/rss+xml" />
	<link>http://indefinitestudies.org/2009/11/20/the-sad-state-of-computer-security/</link>
	<description>Academic ramblings about software security.</description>
	<lastBuildDate>Thu, 02 Feb 2012 14:37:29 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Matthieu</title>
		<link>http://indefinitestudies.org/2009/11/20/the-sad-state-of-computer-security/#comment-279</link>
		<dc:creator><![CDATA[Matthieu]]></dc:creator>
		<pubDate>Mon, 23 Nov 2009 09:19:12 +0000</pubDate>
		<guid isPermaLink="false">http://indefinitestudies.org/?p=395#comment-279</guid>
		<description><![CDATA[Dan is right, even if behaviors are not computable in most of programming languages, you can always compute an abstract interpretation. This interpretation does not provide the exact semantics but can help to decide some security policies.
Though, this is a white/black (green, yellow, purple...) list, it is sad, but I don&#039;t see any other way to do it. 
I still think that the problem is to design a specification language that would be abstract enough to be understandable and generic enough to cover most of use cases (and criptic enough to kick off ambigious malicious behovior). Dan are you thinking about yet an other thesis chapter? ;-)]]></description>
		<content:encoded><![CDATA[<p>Dan is right, even if behaviors are not computable in most of programming languages, you can always compute an abstract interpretation. This interpretation does not provide the exact semantics but can help to decide some security policies.<br />
Though, this is a white/black (green, yellow, purple&#8230;) list, it is sad, but I don&#8217;t see any other way to do it.<br />
I still think that the problem is to design a specification language that would be abstract enough to be understandable and generic enough to cover most of use cases (and criptic enough to kick off ambigious malicious behovior). Dan are you thinking about yet an other thesis chapter? ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dan</title>
		<link>http://indefinitestudies.org/2009/11/20/the-sad-state-of-computer-security/#comment-278</link>
		<dc:creator><![CDATA[dan]]></dc:creator>
		<pubDate>Mon, 23 Nov 2009 07:30:09 +0000</pubDate>
		<guid isPermaLink="false">http://indefinitestudies.org/?p=395#comment-278</guid>
		<description><![CDATA[I think that with open binaries, you can statically compute a safe superset of the program&#039;s behaviour. For instance you could say &quot;this program can delete files&quot; (you did not prove that it will, since it depends on lots of undecidable stuff but you proved that it has the potential to do so). 

Again, this does not solve the malware problem but at least it would be a step in the right direction. It would be possible to detect &quot;green binaries&quot; for instance, such as programs that only access the display and sound devices. Think Flash or Java applets, but in x86.]]></description>
		<content:encoded><![CDATA[<p>I think that with open binaries, you can statically compute a safe superset of the program&#8217;s behaviour. For instance you could say &#8220;this program can delete files&#8221; (you did not prove that it will, since it depends on lots of undecidable stuff but you proved that it has the potential to do so). </p>
<p>Again, this does not solve the malware problem but at least it would be a step in the right direction. It would be possible to detect &#8220;green binaries&#8221; for instance, such as programs that only access the display and sound devices. Think Flash or Java applets, but in x86.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Knyghte Hande</title>
		<link>http://indefinitestudies.org/2009/11/20/the-sad-state-of-computer-security/#comment-277</link>
		<dc:creator><![CDATA[Knyghte Hande]]></dc:creator>
		<pubDate>Sun, 22 Nov 2009 23:05:41 +0000</pubDate>
		<guid isPermaLink="false">http://indefinitestudies.org/?p=395#comment-277</guid>
		<description><![CDATA[&gt;&gt; So my questions are ‘How to guess program behaviors ?’ and more difficult ‘How to represent a behavior ?’

That&#039;s right, in my humble opinion: behaviour&#039;s not computable, and that&#039;s why we need heuristics so much. 

I love this post, by the way.]]></description>
		<content:encoded><![CDATA[<p>&gt;&gt; So my questions are ‘How to guess program behaviors ?’ and more difficult ‘How to represent a behavior ?’</p>
<p>That&#8217;s right, in my humble opinion: behaviour&#8217;s not computable, and that&#8217;s why we need heuristics so much. </p>
<p>I love this post, by the way.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Knyghte Hande</title>
		<link>http://indefinitestudies.org/2009/11/20/the-sad-state-of-computer-security/#comment-276</link>
		<dc:creator><![CDATA[Knyghte Hande]]></dc:creator>
		<pubDate>Sun, 22 Nov 2009 20:39:23 +0000</pubDate>
		<guid isPermaLink="false">http://indefinitestudies.org/?p=395#comment-276</guid>
		<description><![CDATA[&gt;&gt; But I still believe that if you find a way to specify certain classes of vulnerabilities, then you can have tools that decide if your program is correct with regards to the specification or not.

I&#039;d wish there would be a taxonomy for software ...

&gt;&gt; An other point is that a world without vulnerabilties would be better but not free of malware.

I subscribe to Matthieu&#039;s thought. It&#039;d be ideal to imprint speed, flexibility and a great cost-saver to threat analysis with an open specification.

But the bad guys can choose not to follow standards (have they even did?) and keep coding on current binaries architectures (PE, ELF). Hey Thomas More, can you help us here? (no offense intended)

I&#039;d suggest &quot;a new, fehacient, stable and trend-contemplative scriptable programming language, amongst other things.]]></description>
		<content:encoded><![CDATA[<p>&gt;&gt; But I still believe that if you find a way to specify certain classes of vulnerabilities, then you can have tools that decide if your program is correct with regards to the specification or not.</p>
<p>I&#8217;d wish there would be a taxonomy for software &#8230;</p>
<p>&gt;&gt; An other point is that a world without vulnerabilties would be better but not free of malware.</p>
<p>I subscribe to Matthieu&#8217;s thought. It&#8217;d be ideal to imprint speed, flexibility and a great cost-saver to threat analysis with an open specification.</p>
<p>But the bad guys can choose not to follow standards (have they even did?) and keep coding on current binaries architectures (PE, ELF). Hey Thomas More, can you help us here? (no offense intended)</p>
<p>I&#8217;d suggest &#8220;a new, fehacient, stable and trend-contemplative scriptable programming language, amongst other things.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dan</title>
		<link>http://indefinitestudies.org/2009/11/20/the-sad-state-of-computer-security/#comment-273</link>
		<dc:creator><![CDATA[dan]]></dc:creator>
		<pubDate>Sun, 22 Nov 2009 00:10:15 +0000</pubDate>
		<guid isPermaLink="false">http://indefinitestudies.org/?p=395#comment-273</guid>
		<description><![CDATA[&gt; I might be naive, but I think security research is on the right path. It just needs another 15 or 20 years to hit the big time.

this is probably true, but right now I&#039;m in a phase where I feel like a newcomer to things that seemed sophisticated, but then you see how stuff works under the hood and then you&#039;re like &quot;dammit, isn&#039;t that supposed to be computer *science* ?&quot; 

(I&#039;m talking about the fact that we have nothing that beats developing with empirical methods in antiquated system languages)]]></description>
		<content:encoded><![CDATA[<p>&gt; I might be naive, but I think security research is on the right path. It just needs another 15 or 20 years to hit the big time.</p>
<p>this is probably true, but right now I&#8217;m in a phase where I feel like a newcomer to things that seemed sophisticated, but then you see how stuff works under the hood and then you&#8217;re like &#8220;dammit, isn&#8217;t that supposed to be computer *science* ?&#8221; </p>
<p>(I&#8217;m talking about the fact that we have nothing that beats developing with empirical methods in antiquated system languages)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dan</title>
		<link>http://indefinitestudies.org/2009/11/20/the-sad-state-of-computer-security/#comment-272</link>
		<dc:creator><![CDATA[dan]]></dc:creator>
		<pubDate>Sun, 22 Nov 2009 00:02:34 +0000</pubDate>
		<guid isPermaLink="false">http://indefinitestudies.org/?p=395#comment-272</guid>
		<description><![CDATA[My scenario is more something like this: what if I give you a reasonably dev-friendly language with really nice safety propertie that outperforms everything out there? Ok this is über-optimism but hey... ^^]]></description>
		<content:encoded><![CDATA[<p>My scenario is more something like this: what if I give you a reasonably dev-friendly language with really nice safety propertie that outperforms everything out there? Ok this is über-optimism but hey&#8230; ^^</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dan</title>
		<link>http://indefinitestudies.org/2009/11/20/the-sad-state-of-computer-security/#comment-270</link>
		<dc:creator><![CDATA[dan]]></dc:creator>
		<pubDate>Sat, 21 Nov 2009 23:33:48 +0000</pubDate>
		<guid isPermaLink="false">http://indefinitestudies.org/?p=395#comment-270</guid>
		<description><![CDATA[&gt; we’ll NEVER create software without flaws of any type

sure, that&#039;s what I meant by &quot;correct&quot; programs. But I still believe that if you find a way to specify certain classes of vulnerabilities, then you can have tools that decide if your program is correct with regards to the specification or not. Of course you still have potential pitfalls (correctness of the model and the specification), but that would be a nice step away from empirical testing.]]></description>
		<content:encoded><![CDATA[<p>&gt; we’ll NEVER create software without flaws of any type</p>
<p>sure, that&#8217;s what I meant by &#8220;correct&#8221; programs. But I still believe that if you find a way to specify certain classes of vulnerabilities, then you can have tools that decide if your program is correct with regards to the specification or not. Of course you still have potential pitfalls (correctness of the model and the specification), but that would be a nice step away from empirical testing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dan</title>
		<link>http://indefinitestudies.org/2009/11/20/the-sad-state-of-computer-security/#comment-268</link>
		<dc:creator><![CDATA[dan]]></dc:creator>
		<pubDate>Sat, 21 Nov 2009 23:02:53 +0000</pubDate>
		<guid isPermaLink="false">http://indefinitestudies.org/?p=395#comment-268</guid>
		<description><![CDATA[&gt; An other point is that a world without vulnerabilties would be better but not free of malware

that&#039;s right. I like the &#039;open binaries&#039; denomination :) And I agree that open binaries don&#039;t solve the malware problem either, but at least we will be able to get out of the current quagmire.]]></description>
		<content:encoded><![CDATA[<p>&gt; An other point is that a world without vulnerabilties would be better but not free of malware</p>
<p>that&#8217;s right. I like the &#8216;open binaries&#8217; denomination :) And I agree that open binaries don&#8217;t solve the malware problem either, but at least we will be able to get out of the current quagmire.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matthieu</title>
		<link>http://indefinitestudies.org/2009/11/20/the-sad-state-of-computer-security/#comment-267</link>
		<dc:creator><![CDATA[Matthieu]]></dc:creator>
		<pubDate>Sat, 21 Nov 2009 14:55:46 +0000</pubDate>
		<guid isPermaLink="false">http://indefinitestudies.org/?p=395#comment-267</guid>
		<description><![CDATA[As you know I agree with you on both points but you miss some details. 
As you said the first way to get rid of memory corruption would be to move to a sound tool chain where programs can be proved safe with respect to memory corruption. There are many such frameworks, then why industry is still using poor old compilers. One answer is &#039;it would be too expensive&#039;. When MS releases a new MS Office, they re-use most of the old code and just add some new features. Moving office to a sound tool chain would require to review the whole code, and that would be really pain in the ...
That is why smart people such as Podelsky try to patch the tool chain. Providing a new components that would prove a C program to be safe and that would point out all ambiguous cases. This is also a good approach that would help reusing the old libraries. To sum up the Idea, I would like to be the one moving the STL from C++ to any other good language, I would prefer a prover to tell me &#039;OK just review theese few functions and the library is bug free&#039;.
An other point is that a world without vulnerabilties would be better but not free of malware. Vulnerabilties help on the propagation aspect but malware such as rogue AV don&#039;t need flaw to  exist. 
That is why we need &#039;open binaries&#039;, I mean binaries whose behavior can be soundly guessed. On this aspect, I think there is still much to do. Indeed you can ensure that a program follow some security politics and I hope that Google will enforce Nacl standards in Chrome OS. Nevertheless, it is not sufficient. Enforcing politics don&#039;t tell you what the program really do and since it is impossible to separe good from bad behaviors we are sill stuck with some kind of black listing but at an higher level. 
So my questions are &#039;How to guess program behaviors ?&#039; and more difficult &#039;How to represent a behavior ?&#039;. Those are old logician problems (Oops I did it again ;-)).]]></description>
		<content:encoded><![CDATA[<p>As you know I agree with you on both points but you miss some details.<br />
As you said the first way to get rid of memory corruption would be to move to a sound tool chain where programs can be proved safe with respect to memory corruption. There are many such frameworks, then why industry is still using poor old compilers. One answer is &#8216;it would be too expensive&#8217;. When MS releases a new MS Office, they re-use most of the old code and just add some new features. Moving office to a sound tool chain would require to review the whole code, and that would be really pain in the &#8230;<br />
That is why smart people such as Podelsky try to patch the tool chain. Providing a new components that would prove a C program to be safe and that would point out all ambiguous cases. This is also a good approach that would help reusing the old libraries. To sum up the Idea, I would like to be the one moving the STL from C++ to any other good language, I would prefer a prover to tell me &#8216;OK just review theese few functions and the library is bug free&#8217;.<br />
An other point is that a world without vulnerabilties would be better but not free of malware. Vulnerabilties help on the propagation aspect but malware such as rogue AV don&#8217;t need flaw to  exist.<br />
That is why we need &#8216;open binaries&#8217;, I mean binaries whose behavior can be soundly guessed. On this aspect, I think there is still much to do. Indeed you can ensure that a program follow some security politics and I hope that Google will enforce Nacl standards in Chrome OS. Nevertheless, it is not sufficient. Enforcing politics don&#8217;t tell you what the program really do and since it is impossible to separe good from bad behaviors we are sill stuck with some kind of black listing but at an higher level.<br />
So my questions are &#8216;How to guess program behaviors ?&#8217; and more difficult &#8216;How to represent a behavior ?&#8217;. Those are old logician problems (Oops I did it again ;-)).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Halvar</title>
		<link>http://indefinitestudies.org/2009/11/20/the-sad-state-of-computer-security/#comment-265</link>
		<dc:creator><![CDATA[Halvar]]></dc:creator>
		<pubDate>Sat, 21 Nov 2009 10:09:15 +0000</pubDate>
		<guid isPermaLink="false">http://indefinitestudies.org/?p=395#comment-265</guid>
		<description><![CDATA[Hmm... I am not sure whether I am quite so optimistic. I agree that we&#039;ll get the &#039;code execution&#039; problem sorted, but I am not sure whether we&#039;ll get &#039;memory corruption&#039; sorted. For straight ANSI C with limited indirection of control transfer, yes, but I do not see the same advances in static analysis for C++ code...]]></description>
		<content:encoded><![CDATA[<p>Hmm&#8230; I am not sure whether I am quite so optimistic. I agree that we&#8217;ll get the &#8216;code execution&#8217; problem sorted, but I am not sure whether we&#8217;ll get &#8216;memory corruption&#8217; sorted. For straight ANSI C with limited indirection of control transfer, yes, but I do not see the same advances in static analysis for C++ code&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

