This Article 
 Bibliographic References 
 Add to: 
Security Protection and Checking for Embedded System Integration against Buffer Overflow Attacks via Hardware/Software
April 2006 (vol. 55 no. 4)
pp. 443-453
With more embedded systems networked, it becomes an important problem to effectively defend embedded systems against buffer overflow attacks. Due to the increasing complexity and strict requirements, off-the-shelf software components are widely used in embedded systems, especially for military and other critical applications. Therefore, in addition to effective protection, we also need to provide an approach for system integrators to efficiently check whether software components have been protected. In this paper, we propose the HSDefender (Hardware/Software Defender) technique to perform protection and checking together. Our basic idea is to design secure call instructions so systems can be secured and checking can be easily performed. In the paper, we classify buffer overflow attacks into two categories and provide two corresponding defending strategies. We analyze the HSDefender technique with respect to hardware cost, security, and performance. We experiment with our HSDefender technique on the SimpleScalar/ARM simulator with benchmarks from MiBench, an embedded benchmark suite. The results show that our HSDefender technique can defend a system against more types of buffer overflow attacks with less overhead compared with the previous work.

[1] Z. Shao, Q. Zhuge, Y. He, and E.H.-M. Sha, “Defending Embedded Systems against Buffer Overflow via Hardware/Software,” Proc. IEEE 19th Ann. Computer Security Applications Conf., Dec. 2003.
[2] E.H. Spafford, “The Internet Worm Program: An Analysis,” Technical Report TR823, Purdue Univ., 1988.
[3] Solar Designer, “Kernel Patches from the Openwall Project,” http://www.openwall.comlinux, 2002.
[4] A. Baratloo, T. Tsai, and N. Singh, “Transparent Run-Time Defense against Stack Smashing Attacks,” Proc. USENIX Ann. Technical Conf., June 2000.
[5] C. Cowan, C. Pu, D. Maier, H. Hinton, J. Walpole, P. Bakke, S. Beattie, A. Grie, P. Wagle, and Q. Zhang, “Stackguard: Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks,” Proc. USENIX Security Symp., Jan. 1998.
[6] H. Etoh and K. Yoda, “Protecting from Stack-Smashing Attacks,” sspmain.html, May 2002.
[7] J. Xu, Z. Kalbarczyk, S. Patel, and R.K. Iyer, “Architecture Support for Defending against Buffer Overflow Attacks,” Proc. Second Workshop Evaluating and Architecting System Dependability, Oct. 2002.
[8] R.B. Lee, D.K. Karig, J.P. McGregor, and Z. Shi, “Enlisting Hardware Architecture to Thwart Malicious Code Injection,” Proc. Int'l Conf. Security in Pervasive Computing, Mar. 2003.
[9] H. Özdoganoglu, T.N. Vijaykumar, C.E. Brodley, and A. Jalote, “Smashguard: A Hardware Solution to Prevent Security Attacks on the Function Return Address,” Technical Report TR-ECE 03-13, Purdue Univ., Feb. 2004.
[10] Bulba and Kil3r, “Bypassing Stackguard and Stackshield,” Phrack, vol. 5, no. 56, May 2000.
[11] Z. Shao, Q. Zhuge, and E.H.-M. Sha, “Defending Embedded Systems against Buffer Overflow via Hardware/Software (Extended Abstract),” Proc. 2003 South Central Information Security Symp., Apr. 2003.
[12] C. Cowan, S. Beattie, J. Johansen, and P. Wagle, “Pointguard: Protecting Pointers from Buffer-Overflow Vulnerabilities,” Proc. USENIX Security Symp., Aug. 2003.
[13] S. Bhatkar, D.C. DuVarney, and R. Sekar, “Address Obfuscation: An Efficient Approach to Combat a Broad Range of Memory Error Exploits,” Proc. 12th USENIX Security Symp., pp. 105-120, Aug. 2003.
[14] T.M. Austin, E.B. Scott, and S.S. Gurindar, “Efficient Detection of All Pointer and Array Access Errors,” Proc. ACM SIGPLAN '94 Conf. Programming Language Design and Implementation, pp. 290-301, June 1994.
[15] R.W.M. Jones and P.H.J. Kelly, “Backwards-Compatible Bounds Checking for Arrays and Pointers in C Programs,” Proc. Third Int'l Workshop Automated and Algorithmic Debugging, pp. 13-26, 1997.
[16] D. Wagner, J.S. Foster, E.A. Brewer, and A. Aiken, “A First Step towards Automated Detection of Buffer Overrun Vulnerabilities,” Proc. Network and Distributed System Security Symp., pp. 3-17, Feb. 2000.
[17] E. Haugh and M. Bishop, “Testing C Programs for Buffer Overflow Vulnerabilities,” Proc. Network and Distributed System Security Symp., Feb. 2003.
[18] SimpleScalar LLC, “SimpleScalar/ARM,” http://www.eecs. armsimplesim-arm-0.2.tar.gz, 2000.
[19] klog, “The Frame Pointer Overwrite,” Phrack, vol. 8, no. 55, Sept. 1999.
[20] G. Richarte, “Four Different Tricks to Bypass Stackshield and Stackguard Protection,” , Apr. 2002.
[21] Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification Version 1.2, TIS Committee, May 1995.
[22] the gruqp, “Cheating the ELF: Subversive Dynamic Linking to Libraries,” subversiveld.pdf, 2001.
[23] J.R. Levine, Linkers and Loaders. Morgan Kauffman, Oct. 1999.
[24] D.A. Patterson and J.L. Hennessy, Computer Architecture: A Quantitative Approach. Morgan Kaufmann, 1996.
[25] M.R. Guthaus, J.S. Ringenberg, D. Ernst, T.M. Austin, T. Mudge, and R.B. Brown, “Mibench: A Free, Commercially Representative Embedded Benchmark Suite,” Proc. IEEE Fourth Ann. Workshop Workload Characterization, Dec. 2001.
[26] SimpleScalar LLC, “SimpleScalar/ARM Corss Compiler Kit,” gcc-2.95.2.tar.gz, binutils-2.10.tar.gz, glibc-2.1.3.tar.gz, 2000.

Index Terms:
Security, buffer overflow attack, embedded system, hardware/software, protection.
Zili Shao, Chun Xue, Qingfeng Zhuge, Meikang Qiu, Bin Xiao, Edwin H.-M. Sha, "Security Protection and Checking for Embedded System Integration against Buffer Overflow Attacks via Hardware/Software," IEEE Transactions on Computers, vol. 55, no. 4, pp. 443-453, April 2006, doi:10.1109/TC.2006.59
Usage of this product signifies your acceptance of the Terms of Use.