[nycbug-talk] MS moves on. . .

Bob Ippolito bob
Thu May 20 11:40:33 EDT 2004

On May 20, 2004, at 10:31 AM, Dan Langille wrote:

> On Thu, 20 May 2004, Pete Wright wrote:
>> G.Rosamond wrote:
>>> However, one thing Theo mentioned in his Exploit Mitigation
>>> Techniques  talk was about OBSD's use of canaries to avoid buffer
>>> overflows.   Apparently, MS is doing the same, although their
>>> placement of canaries  does nothing.  It would be good if someone
>>> could elaborate on the role  of canaries. . .
>> from what i understood was that MS inserts the canaries at compile 
>> time,
>> not run time.  so the canarie is in the same location on each build of
>> windows.  still confused as to what a canarie is tho...
> It's not that it's in the same location, it's always the same value.  A
> canary refers to the practice of carrying them into mines.  If the 
> canary
> dies, the air is bad, get out.
> This canary is a random value.  If it changes, something has gone 
> wrong.
> Get out.  In this case, the value is created at compile time.  So 
> it'll be
> the same value every time it runs.  Which means it isn't random.

The thing that's interesting about OpenBSD's implementation is that 
it's used as a security measure.  In most other environments, code is 
generally trusted to work correctly, and these sorts are things are 
used only in debug builds of applications to help programmers fix their 
crappy code.

The same sort of technique is used to see if you're overflowing the 
heap too, by marking a couple bytes at the end of a buffer and checking 
to see if that canary has died when the allocation is freed.  A more 
aggressive technique (called MallocGuard on OS X, not sure what it's 
called elsewhere) is to do a page allocation for every malloc, and 
allocate the next page as unwritable, so that you get an exception 
exactly when the incorrect code is being run.  I don't think OpenBSD 
does either of these by default in production applications, since it 
has a pretty gnarly performance impact.  However, since the heap is 
going to be primarily W^X where available in OpenBSD, it's not as much 
of a concern.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2357 bytes
Desc: not available
Url : http://lists.nycbug.org/pipermail/talk/attachments/20040520/1db62cf5/attachment.bin 

More information about the talk mailing list