Abstract:
Boundary Bit is a new architectural bound-checking approach for preventing against buffer-overflow attacks. It adds an associated bit to each memory entry to support bound checking. To make a boundary, software can simply set a (boundary) bit. On memory writing, hardware will dynamically validate limit using the boundary bit. With a minimal hint from software (compiler), our architectural design eliminates most (if not all) types of buffer-overflow attacks, including attacks on non-control data (variables and arguments) and array-indexing errors. Software can easily support Boundary Bit with few (minor) modification. Boundary Bit is secure and efficient with few (none) performance degradation. Our implementation shows that hardware can absorbed most bit-scanning overhead by using bitmap. An 1-level bitmap with proper size is better than a 2-level bitmap.