<?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: More on Null Tag</title>
	<atom:link href="http://spiresecurity.com/?feed=rss2&#038;p=572" rel="self" type="application/rss+xml" />
	<link>http://spiresecurity.com/?p=572</link>
	<description>Risk and Cybersecurity Analysis</description>
	<lastBuildDate>Wed, 21 Aug 2013 23:28:51 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>By: A. Nonymous</title>
		<link>http://spiresecurity.com/?p=572&#038;cpage=1#comment-862</link>
		<dc:creator>A. Nonymous</dc:creator>
		<pubDate>Wed, 10 Aug 2005 07:12:09 +0000</pubDate>
		<guid isPermaLink="false">http://spiresecurity.com/blog/?p=572#comment-862</guid>
		<description><![CDATA[There has been an ongoing (and at this point it&#039;s probably safe to say: Age Old) debate amongst security researchers as to whether or not it&#039;s the Operating System&#039;s job to prevent insecure programming practices, that inevitably result in software vulnerabilities, from adversely affecting the overall state of system integrity.  Any hacker worth his salt will tell you that it&#039;s the programmer&#039;s job to implement and use API&#039;s in a sane, efficient, and secure manner, but in all reality this is really a shortcut to thinking.  I have always been of the personal opinion that in order to minimize the effect that &quot;0day/NullTag/P.reviously U.ndisclosed V.ulnerabilities (see, you too can create security terminology, I think this plays into Lindstrom&#039;s point)&quot; have on system integrity the Operating Systems themselves need to protect their own f!cking memory.

At the risk of getting too technical, is it too much to ask that programs not store procedure redirection tables for shared library routines in writable memory, for applications running with privileged credentials?  That an access violation is thrown when a process&#039; runtime registers are overwritten, or maybe that user definable data is never put in an area in memory where the runtime registers can be altered?

Ok, so that last case is a bit far fetched as the programmer is the only one that knows which memory will contain user supplied data, but the fact of the matter remains, if the OS is doing its job, none of these conditions should result in system compromise in the first place.

I mean sure the advent of Perl brought to light the concept of TMTOWTDI, and any hacker will tell you that the same holds true in vulnerability exploitation.  This, however, doesn&#039;t change the fact that the majority of system compromises are the result of the same old techniques be used to exploit the same types of vulnerabilities that have existed from the inception of the modern computing base.

The more startling realization one should come to at this point is that Operating System developers have had to use the crutch of PaX, grsecurity, and other system integrity validation software to &quot;stop the bleeding&quot; out of their own lack of motivation to redesign their memory management in a secure fashion themselves.  Halvar Flake brought up an excellent point in one of his recent Daily Dave posts by saying the current Cisco IOS heap exploitation techniques are based around a single design flaw in the memory management.  This is where 99.9999999% of software vulnerabilities that are widely exploited stem from [flaws in memory management].

Granted we live in a world where database contents need to be made available to publicly accessable web sites, which gives rise to input validation problems; and web-based CGI applications do need to be able to run external applications to support their functionalities, and these are problems which can not be solved at the OS level.  The fact remains that, more often than not, a machine is made vulnerable by the design and implementation of its OS and shared libraries than it is by the ignorance and/or incompetence (in terms of secure practices) of the application programmers, system administrators, and end users.

With all that being said, and to summarize a very long and convoluted point here, the only way to mitigate the impact that PUVs have on system integrity is with modifications to the design and implementation of Operating Systems to prevent them from being useful.
]]></description>
		<content:encoded><![CDATA[<p>There has been an ongoing (and at this point it&#8217;s probably safe to say: Age Old) debate amongst security researchers as to whether or not it&#8217;s the Operating System&#8217;s job to prevent insecure programming practices, that inevitably result in software vulnerabilities, from adversely affecting the overall state of system integrity.  Any hacker worth his salt will tell you that it&#8217;s the programmer&#8217;s job to implement and use API&#8217;s in a sane, efficient, and secure manner, but in all reality this is really a shortcut to thinking.  I have always been of the personal opinion that in order to minimize the effect that &#8220;0day/NullTag/P.reviously U.ndisclosed V.ulnerabilities (see, you too can create security terminology, I think this plays into Lindstrom&#8217;s point)&#8221; have on system integrity the Operating Systems themselves need to protect their own f!cking memory.</p>
<p>At the risk of getting too technical, is it too much to ask that programs not store procedure redirection tables for shared library routines in writable memory, for applications running with privileged credentials?  That an access violation is thrown when a process&#8217; runtime registers are overwritten, or maybe that user definable data is never put in an area in memory where the runtime registers can be altered?</p>
<p>Ok, so that last case is a bit far fetched as the programmer is the only one that knows which memory will contain user supplied data, but the fact of the matter remains, if the OS is doing its job, none of these conditions should result in system compromise in the first place.</p>
<p>I mean sure the advent of Perl brought to light the concept of TMTOWTDI, and any hacker will tell you that the same holds true in vulnerability exploitation.  This, however, doesn&#8217;t change the fact that the majority of system compromises are the result of the same old techniques be used to exploit the same types of vulnerabilities that have existed from the inception of the modern computing base.</p>
<p>The more startling realization one should come to at this point is that Operating System developers have had to use the crutch of PaX, grsecurity, and other system integrity validation software to &#8220;stop the bleeding&#8221; out of their own lack of motivation to redesign their memory management in a secure fashion themselves.  Halvar Flake brought up an excellent point in one of his recent Daily Dave posts by saying the current Cisco IOS heap exploitation techniques are based around a single design flaw in the memory management.  This is where 99.9999999% of software vulnerabilities that are widely exploited stem from [flaws in memory management].</p>
<p>Granted we live in a world where database contents need to be made available to publicly accessable web sites, which gives rise to input validation problems; and web-based CGI applications do need to be able to run external applications to support their functionalities, and these are problems which can not be solved at the OS level.  The fact remains that, more often than not, a machine is made vulnerable by the design and implementation of its OS and shared libraries than it is by the ignorance and/or incompetence (in terms of secure practices) of the application programmers, system administrators, and end users.</p>
<p>With all that being said, and to summarize a very long and convoluted point here, the only way to mitigate the impact that PUVs have on system integrity is with modifications to the design and implementation of Operating Systems to prevent them from being useful.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
