[SC-L] GCC and pointer overflows [LWN.net]

2008-05-01 Thread Kenneth Van Wyk
FYI, here's an interesting article (and follow-on discussions) about a  
recent bug in the GCC compiler collection.


http://lwn.net/Articles/278137/

The bug, which has been documented in a CERT advisory, affects C code  
in which, under some circumstances, buffer bounds checking can be  
optimized out to produce binaries that are susceptible to buffer  
overflows.  The article includes a couple examples that really help  
illustrate the issue -- very interesting reading, IMHO.


Of course, many/most SC-Lers will no doubt jump on this as another  
example of why C is such a dangerous language to write (secure) code  
in, and that's fine.  But, I see the issue at least a little  
differently: a compiler making decisions for the programmer and  
producing executable code that does not accurately conform to what the  
programmer coded.  We've all heard of security-related optimizing  
issues for years, right?  Well, here's a prime example of one in action.



Cheers,

Ken

-
Kenneth R. van Wyk
KRvW Associates, LLC
http://www.KRvW.com







smime.p7s
Description: S/MIME cryptographic signature
___
Secure Coding mailing list (SC-L) SC-L@securecoding.org
List information, subscriptions, etc - http://krvw.com/mailman/listinfo/sc-l
List charter available at - http://www.securecoding.org/list/charter.php
SC-L is hosted and moderated by KRvW Associates, LLC (http://www.KRvW.com)
as a free, non-commercial service to the software security community.
___


Re: [SC-L] GCC and pointer overflows [LWN.net]

2008-05-01 Thread Robert C. Seacord
Ken,

Comment below.
 FYI, here's an interesting article (and follow-on discussions) about a 
 recent bug in the GCC compiler collection.

 http://lwn.net/Articles/278137/

 The bug, which has been documented in a CERT advisory, affects C code 
 in which, under some circumstances, buffer bounds checking can be 
 optimized out to produce binaries that are susceptible to buffer 
 overflows.  The article includes a couple examples that really help 
 illustrate the issue -- very interesting reading, IMHO.

 Of course, many/most SC-Lers will no doubt jump on this as another 
 example of why C is such a dangerous language to write (secure) code 
 in, and that's fine.  But, I see the issue at least a little 
 differently: a compiler making decisions for the programmer and 
 producing executable code that does not accurately conform to what the 
 programmer coded.  We've all heard of security-related optimizing 
 issues for years, right?  Well, here's a prime example of one in action.
To be fair to gcc, the code in question is undefined behavior which 
means that the C standard gives the compiler lease to deal with the code 
in any manner they wish.  This means that they do not need to diagnose 
the problem, generate object code, or generate correct code.  This is a 
problem with the C language--the onus is on the developer to write 
conforming applications.

The reason we dinged gcc in this case was because versions of the 
compiler prior to v 4.2 did generate object code in this case that was 
consistent with the user model (e.g., that adding a pointer to a integer 
could result in wrapping).  Version 4.2 silently changed this behavior 
without providing a flag or option to diagnose the issue.  They have 
since modified their compiler to warn on this issue, and once this 
version of the compiler is released we will update the vul note to 
recommend this version of the compiler be used.

We are looking at this as a prototype for similar vulnerability notes 
dealing with erroneous or unexpected behavior in tools that can lead to 
the introduction of vulnerabilities in software, so I would be 
interested in feedback as to if vulnerability notes of this sort are of 
value.

rCs


___
Secure Coding mailing list (SC-L) SC-L@securecoding.org
List information, subscriptions, etc - http://krvw.com/mailman/listinfo/sc-l
List charter available at - http://www.securecoding.org/list/charter.php
SC-L is hosted and moderated by KRvW Associates, LLC (http://www.KRvW.com)
as a free, non-commercial service to the software security community.
___


Re: [SC-L] GCC and pointer overflows [LWN.net]

2008-05-01 Thread der Mouse
 The bug, which has been documented in a CERT advisory, affects C code
 in which, under some circumstances, buffer bounds checking can be
 optimized out to produce binaries that are susceptible to buffer
 overflows.  [...]

 Of course, many/most SC-Lers will no doubt jump on this as another
 example of why C is such a dangerous language to write (secure) code
 in, and that's fine.

Actually, it isn't.  It's a dangerous language to write sloppy, buggy
code in.  Go read the advisory - it's only severely broken tests that
are affected.  Such code has always been broken; the recent change just
changes the behaviour produced by such broken code, and I have trouble
getting worked up about it.

 But, I see the issue at least a little differently: a compiler making
 decisions for the programmer and producing executable code that does
 not accurately conform to what the programmer coded.

It accurately conforms to what the programmer coded, just not to what
the programmer intended to code.  The problem affects only code that
depends on certain pointer computations whose behaviour has never been
promised by C.

/~\ The ASCII   der Mouse
\ / Ribbon Campaign
 X  Against HTML   [EMAIL PROTECTED]
/ \ Email!   7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B
___
Secure Coding mailing list (SC-L) SC-L@securecoding.org
List information, subscriptions, etc - http://krvw.com/mailman/listinfo/sc-l
List charter available at - http://www.securecoding.org/list/charter.php
SC-L is hosted and moderated by KRvW Associates, LLC (http://www.KRvW.com)
as a free, non-commercial service to the software security community.
___


Re: [SC-L] GCC and pointer overflows [LWN.net]

2008-05-01 Thread Epstein, Jeremy
Ken, a good example.  For those of you who want to reach much further
back, Paul Karger told me of a similar problem in the compiler (I don't
remember the language) used for compiling the A1 VAX VMM kernel, that
optimized out a check in the Mandatory Access Control enforcement, which
separates information of different classifications (*).  [For those not
familiar with it, this was a provably secure kernel on which you could
host multiple untrusted operating systems.  Despite what some young-uns
seem to think, VMs are not a new concept - they go back at least three
decades that I know of, and possibly longer.  The A1 VAX effort ended
roughly 20-25 years ago, to give a timeframe for this particular
compiler issue.]

--Jeremy

(*) At least that's what my memory tells me - if Paul is on this list,
perhaps he can verify or correct.

 -Original Message-
 From: [EMAIL PROTECTED] 
 [mailto:[EMAIL PROTECTED] On Behalf Of Kenneth Van Wyk
 Sent: Thursday, May 01, 2008 9:14 AM
 To: Secure Coding
 Subject: [SC-L] GCC and pointer overflows [LWN.net]
 
 FYI, here's an interesting article (and follow-on 
 discussions) about a recent bug in the GCC compiler collection.
 
 http://lwn.net/Articles/278137/
 
 The bug, which has been documented in a CERT advisory, 
 affects C code in which, under some circumstances, buffer 
 bounds checking can be optimized out to produce binaries that 
 are susceptible to buffer overflows.  The article includes a 
 couple examples that really help illustrate the issue -- very 
 interesting reading, IMHO.
 
 Of course, many/most SC-Lers will no doubt jump on this as 
 another example of why C is such a dangerous language to 
 write (secure) code in, and that's fine.  But, I see the 
 issue at least a little
 differently: a compiler making decisions for the programmer 
 and producing executable code that does not accurately 
 conform to what the programmer coded.  We've all heard of 
 security-related optimizing issues for years, right?  Well, 
 here's a prime example of one in action.
 
 
 Cheers,
 
 Ken
 
 -
 Kenneth R. van Wyk
 KRvW Associates, LLC
 http://www.KRvW.com
 
 
 
 
 
 

___
Secure Coding mailing list (SC-L) SC-L@securecoding.org
List information, subscriptions, etc - http://krvw.com/mailman/listinfo/sc-l
List charter available at - http://www.securecoding.org/list/charter.php
SC-L is hosted and moderated by KRvW Associates, LLC (http://www.KRvW.com)
as a free, non-commercial service to the software security community.
___


Re: [SC-L] GCC and pointer overflows [LWN.net]

2008-05-01 Thread ljknews
At 1:00 PM -0400 5/1/08, Epstein, Jeremy wrote:

 Ken, a good example.  For those of you who want to reach much further
 back, Paul Karger told me of a similar problem in the compiler (I don't
 remember the language)

VAX Pascal, before VMS was on Alpha (and long before Itanium).

 used for compiling the A1 VAX VMM kernel, that
 optimized out a check in the Mandatory Access Control enforcement, which
 separates information of different classifications (*).  [For those not
 familiar with it, this was a provably secure kernel on which you could
 host multiple untrusted operating systems.  Despite what some young-uns
 seem to think, VMs are not a new concept - they go back at least three
 decades that I know of, and possibly longer.  The A1 VAX effort ended
 roughly 20-25 years ago, to give a timeframe for this particular
 compiler issue.]

-- 
Larry Kilgallen
___
Secure Coding mailing list (SC-L) SC-L@securecoding.org
List information, subscriptions, etc - http://krvw.com/mailman/listinfo/sc-l
List charter available at - http://www.securecoding.org/list/charter.php
SC-L is hosted and moderated by KRvW Associates, LLC (http://www.KRvW.com)
as a free, non-commercial service to the software security community.
___


Re: [SC-L] GCC and pointer overflows [LWN.net]

2008-05-01 Thread ljknews
At 3:12 PM -0400 5/1/08, Leichter, Jerry wrote:

 The VAX VMM effort died with the announcement of the Alpha, in late 1992
 - though obviously the death was decided internally once the move to
 Alpha was decided, which would have been somewhat earlier.  The origins
 of the VAX VMM effort date back to the early 80's.

My understanding is that DEC pulled the plug on the VMM project
(called SVS) during a successful field test when they discovered
that while the NSA division that handled trusted computing was
really gung ho about the project, none of the government units
which might actually make purchases were interested in multilevel
secure machines.  Remember that the MicroVAX II was available at
the time and from many perspectives (including that of taxpayers)
it was a lot nicer to use separate machines for various security
classifications.
-- 
Larry Kilgallen
___
Secure Coding mailing list (SC-L) SC-L@securecoding.org
List information, subscriptions, etc - http://krvw.com/mailman/listinfo/sc-l
List charter available at - http://www.securecoding.org/list/charter.php
SC-L is hosted and moderated by KRvW Associates, LLC (http://www.KRvW.com)
as a free, non-commercial service to the software security community.
___