> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED]
> Behalf Of Crispin Cowan
> Sent: 15 April 2005 20:58
> To: David Crocker
> Cc: SC-L@securecoding.org
> Subject: Re: [SC-L] Theoretical question about vulnerabilities
> 
> 
> David Crocker wrote:
> 
> >Well, that approach is certainly better than not guarding 
> against buffer
> >overflows at all. However, I maintain it is grossly inferior 
> to the approach we
> >use, which is to prove that all array accesses are within bounds.
> >
> Proving that all array accesses are within bounds would seem to be 
> Turing undecidable. Either you are not proving what you way you are 
> proving, or your programs are not full Turing machines.

Since we do it and have been doing it for years then there must be some 
explanation.  I suspect the answer is that the programs for which we perform 
such proofs are indeed "not full Turing machines".  Typically they are jet 
engine controllers, crypto switches or other rather less generalised devices.

I am willing to agree that there may be a class of programs that are free from 
buffer overflows which cannot show to be so; however, this does not matter.  We 
are interested in avoiding the class of programs which _do_ have a buffer 
overflow vulnerabilities and those we can indeed find.  If we encounter 
something that is in the first class, the only effect is that we might have to 
strengthen the code in some, strictly unnecessary, way in order to complete the 
proof.

> 
> Proof: <insert diagonalization argument here :>
> 
> Issue: Some people may regard diagonalized programs are a 
> contrivance, 
> and are only interested in correctness proofs for real programs (for 
> some value of "real").

Correct, I am only interested in real cases but for an extremely large set of 
values of "real" (into which set has fitted every real-world program that I 
have been involved in in the last 10+ years).  Furthermore, as discussed above, 
the cases which fall outside "real" fall outside in a safe way.

> 
> Crispin's rebuttal: Suppose I want to prove that your program checker 
> does not have any illegal array references ...

Well you can't other than by applying pragamatic means such as analysing 
itself, using someone else's tool to analyse it or, of course, testing it a lot 
(none of which constitute proof).  This point is, firstly, a quite separate one 
from theoretical limitations of proof, it is a question about tool 
trustworthiness which applies to compilers, linkers and microprocessors equally 
well.  And, secondly, it is largely irrelevent to the question of whether proof 
techniques help us build better programs and can provide protection against the 
kinds of error that we know are significant in safety and security.  To 
suggest, as some people seem to, that application of the Entscheidungs 
principle somehow eliminates proof from consideration is risible.  There are 
equally good proofs (from Bev Littlewood and Butler and Finelli) that dynamic 
testing is incapable of giving confidence in the reliablity of software beyond 
certain rather low limits; however,  I don't here people arguing that we!
  should stop testing! 


[snip]
> 
> Crispin
> 


regards

Peter


**********************************************************************

This email is confidential and intended solely for the use of the individual to 
whom it is addressed.  If you are not the intended recipient, be advised that 
you have received this email in error and that any use, disclosure, copying or 
distribution or any action taken or omitted to be taken in reliance on it is 
strictly prohibited.  If you have received this email in error please contact 
the sender.  Any views or opinions presented in this email are solely those of 
the author and do not necessarily represent those of Praxis High Integrity 
Systems Ltd (Praxis HIS). 

 Although this email and any attachments are believed to be free of any virus 
or other defect, no responsibility is accepted by Praxis HIS or any of its 
associated companies for any loss or damage arising in any way from the receipt 
or use thereof.  The IT Department at Praxis HIS can be contacted at [EMAIL 
PROTECTED]

**********************************************************************




Reply via email to