Eddies in the Space-Time Continuum
Peter Harvey's blog
Recent entries
Archives
« June 2005 »
MonTueWedThuFriSatSun
  
1
2
3
4
5
6
7
8
9
10
11
12
15
16
17
18
19
20
21
22
23
25
26
29
30
   
       
Today
Click me to subscribe
Search

Twitter

follow peteh at http://twitter.com
Google Reader
Technorati
My tags
aliases announcement birth book brompton children cloud computer croudsourcing damage datamining decision dtrace ethics family fun futurology gapminder geros goalfree goals happiness home human incentives intel internet ipod junk kepner-tregoe knowledge life loft losug mail making management mdb meme methodologies metro mice modelling morals mrgum network nfs nis+ nis_cachemgr nscd opensolaris performance philosophy photo pizza poverty process programming psychology rands review rodents rules security seedcamp sgrt sigbus signals sigsegv smart smf solaris sprcfb squirrels sun sunray superhero system ted teleworking terminal terminfo thinking troubleshooting trust wisdom
Flickr
www.flickr.com
This is a Flickr badge showing public photos from peteh. Make your own badge here.
del.icio.us links
del.icio.us tags
Bookmarks
RSS Feeds
XML
All
/Family
/General
/Internet
/Links
/Mac
/Management
/Palm
/Security
/Solaris
/Sun
Links
 
Licence
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.

Today's Page Hits: 320

« Previous day (Jun 26, 2005) | Main | Next day (Jun 27, 2005) »
Monday Jun 27, 2005
Buffer overflows and SPARC register windows
I found a report on "Code Injection in C and C++ : A Survey of Vulnerabilities and Countermeasures" (July 2004). At 70+ pages it's too early to say whether I'd recommend it as light reading but as I'm anticipating a long train journey in the next few days I should be able to get through it.

What set this off was a lunchtime discussion on how buffer overflows can affect processors with register windows. If you don't know what I'm talking about then check the Wikipedia article. Fascinating ... if you're technically minded.

The thing with register windows is that the return pointer you want to overflow may not be in memory. You have to overflow spilled register sets. I was struggling to find a reference to this and most people I've asked just give me a blank look. For sometime now I've been wondering if I've been missing something obvious.

Thankfully, Google came to the rescue and found a paper all about this. It contains this quote:

As long as register windows are available, it is not possible for an overflow to overwrite the function's return address or frame pointer as they will still be contained in registers. However when the oldest window is saved to the stack, they are again vulnerable to overwriting.

Apologies to the authors if I should not have quoted this article, I couldn't find any distribution or copyright notices

The paper discusses the state of the 'art'. That above quote came from a discussion on StackGhost which attempts to validate return addresses when filling the register window.

So it does appear that register windows do offer some protection but I've never managed to demonstrate this with simple overflow code. If anybody has an example to back me up I'd be very interested to try it.


Posted at 04:30PM Jun 27, 2005 by Peter Harvey in Solaris  |  Comments[4]  |  del.icio.us technorati digg