A Study on the Effect of Processor Stack Frame Mechanism on Secure Programming in C Language

C 언어에서 프로세서의 스택관리 형태가 프로그램 보안에 미치는 영향

  • 이형봉 (호남대학교 정보통신공학부) ;
  • 차홍준 (강원대학교 컴퓨터과학과) ;
  • 노희영 (강원대학교 컴퓨터과학과) ;
  • 이상민 (강원대학교 컴퓨터과학과)
  • Published : 2001.02.01

Abstract

There are several traditional factors of software quality. Some of them are such as correctness, reliability, efficiency, compatibility, portability, etc. In addition to them, security is required as another factor of software quality nowadays because some application programs are used as a way to attack information systems by stack frame manipulation. Each processor has its own peculiar stack frame mechanism and C language uses the characteristics of them. This paper explains the concept of security problem caused by stack frame manipulation, and the stack frame mechanism of Pentium, Alpha and SP ARC processor in detail. And then it examines the effect of stack frame mechanism on the security of programs in C language.

전통적으로 프로그램이 갖춰야 할 품질조건으로 정확성, 신뢰성, 효율성, 호환성, 이식성 등 여러 가지가 제안되어 왔지만, 최근에는 보안성이란 새로운 항목이 요구되고 있다. 보안성은 설계된 프로그램의 흐름을 사용자가 임의로 변경함으로써 보안 침해수단으로 사용하는 사례가 늘어나면서 그 중요성이 더욱 강조되고 있다. 이러한 보안 침해기법은 기본적으로 스택의 조작에서부터 출발한다. 스택과 관련된 일련의 동작들은 프로세서에 따라 고유하게 이루어지고, C 언어는 그러한 고유한 특성에 따라 스택을 관리한다. 본 논문에서는 스택 조작을 통한 보안침해의 개념을 살펴보고, 팬티엄(Pentium), 알파(Alpha), 스파크(SPARC) 등이 제공하는 스택 메커니즘을 자세히 조명해 본 후, 그 것들이 프로그램의 보안성에 어떻게 영향을 미치는지를 규명함으로써 안전 한 프로그램 작성을 위한 치침에 기여하도록 한다.

Keywords

References

  1. Brian W. Kernighan, Dennis M. Ritchie ; 'The C Programming Language', Prentice-Hall., 1978
  2. Terrence W. Pratt, 'Programming Languages : Design and Implementation,' PRENTICE-HALL, 1975
  3. Roger S. Pressman, 'Software Engineering, A Practitioner's Approach', 4th Ed, pp.519-521, McGraw-Hill, 1997
  4. 이형봉, 박현미, 박정현, '버퍼넘침을 사용한 해킹공격 기법 및 예방 방안', 한국정보처리학회200추계학술발표논문집(상), pp.129-132
  5. 박정현, 박현미, 임채호, '소스코드 보안취약점 분석 방법론에 관한 연구', 한국통신정보보호학회 2000종합학술발표회논문집, pp.733-738
  6. McClure, Scambray, Kurtz, 'Hacking Exposed,' OSBORNE, 1998
  7. David A. Wheeler, 'Secure Programming for Linux and Unix HOWTO,' GFDL, http://www.dwheeler._com/secure-programs, 2000
  8. Aleph One, 'Smashing the stack for fun and profit,' Phrack Magazine, 49(14), 1998
  9. Arash Baratloo and Navjot Singh, 'Transparent Run-Time Defense Against Stack Smashing Attacks,' Bell Labs Research, Lucent Technologies, 2000
  10. Openwall Project, 'Linux kernel patch from the openwall project,' http://www.openwall.com/linux
  11. Alexandre Snarskii, 'Increasing overall security,' http://www.lexa.ru:8100/snar/libparanoia, 1997
  12. Crispin Cowan, Calton Pu,..., 'Stack Guard : automatic adaptive detection and prevention of buffer-overflow attacks,' Proceeding of the 7th USENIX Security Conference, 1998
  13. David Evans, 'Static detection of dynamic memory errors,' Proceeding of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 1996 https://doi.org/10.1145/231379.231389
  14. Richard Jones, 'Bounds checking patches for gcc,' http://web.inter.NL.net/hcc/Haj.Ten.Brugge
  15. MAURICE J. BACH, 'The Design of the UNIX Operating System,' PRENTICE-HALL, 1986
  16. H. M. DEITEL, 'An Introduction to Operating Systems,' ADDISON-WESLEY, 1983
  17. Kai Hwang, 'Advanced Computer Architecture,' McGraw-Hill, 1996
  18. Intel, Pentium 'Processor Users's Manual(Volume 3 : Architecture and Programming Manual)', Intel, 1993
  19. Digital Equipment Corporation, 'Assembly Language Programmer's Guide,' Digital Press, 1996
  20. SunSoft, 'SPARC Assembly Language Reference Manual,' Sun Microsystems, 1995