[LLVMdev] [PROPOSAL] Adding support for -fstack-protector-strong

Magee, Josh Joshua.Magee at am.sony.com
Wed Oct 3 19:01:41 PDT 2012


At 1349203977 seconds past the Epoch, John Criswell wrote:
> If you're looking for a project to learn about LLVM and Clang, then I 
> think this is a great project.  If the LLVM  /Clang community wants this 
> feature so that it is feature-compatible with GCC, then I think 
> including this feature into LLVM/Clang makes sense.

Yes, this is one reason - it seems like a reasonable project to get more
involved with the LLVM and Clang community.  The other reason is that
this feature has been requested by developers at my place-of-work.

> 
> If you want to protect applications from attack, then I think there are 
> far more productive and interesting things to work on than stack 
> protectors.  Stack protectors are really a hack and, at best, only 
> protect against a single kind of attack (and with buffer overread 
> attacks, I'm not even sure if they do that very well).  Even if they 
> work against stack buffer overflows, stack protectors don't protect the 
> application from heap overflows, invalid free attacks, dangling pointer 
> attacks, and non-control data attacks.

I agree: Stack protectors only protect against one very specific kind of attack.

> 
> The fastest countermeasure that I think is worth looking at is Control 
> Flow Integrity (CFI); CFI adds checks to return instructions and 
> indirect jumps to ensure that they're jumping to a valid target 
> address.  As far as I know, there's no control-hijack attack that works 
> against it, although non-control data attacks are still possible.  The 
> fastest CFI implementation at present has an average overhead of 7.74% 
> on 32-bit x86, and by using a very conservative callgraph, you can use 
> it without whole program analysis.  I've got the LLVM implementation 
> from the authors at LeHigh and am updating the code for x86_64 and LLVM 
> 3.1 for use in one of my research projects.  If you're interested in the 
> code, I can ask them if they'd be willing to release the code as 
> open-source.

This sounds quite interesting - I'll definitely do some investigation into CFI.
If the authors are willing to release the source code as open-source
that would be great.

> Optimizations for memory safety tools like ASan, SAFECode, and SoftBound 
> would be even better since they also stop non-control data attacks.  
> Getting good performance out of them is difficult, though, and depending 
> on what sorts of overhead you're willing to tolerate, getting good 
> performance is still an open research question.
> 
> You might want to check out the memory safety menagerie 
> (http://sva.cs.illinois.edu/menagerie).  It has lots of papers on 
> various techniques and optimizations for those techniques.  You might 
> find something that will give you the security you want at the 
> performance you need.
> 
> In short, I think working on something that provides more comprehensive 
> protection is better than working on a partial hack.
> 
> My two (maybe four?) cents.

Thanks for the input.  I agree that there are better security techniques
and countermeasures than SSP.  At the end of the day SSP-strong is still
something I want to implement.  Still, you have given me some food for
thought and a number of interesting tools and techniques to explore.

- Josh




More information about the llvm-dev mailing list