A Study on the Effect of Format String on Secure Programming in C Language

C언어에서 포맷 스트링이 프로그램 보안에 미치는 영향

  • 이형봉 (호남대학교 정보통신공학부) ;
  • 차홍준 (강원대학교 컴퓨터과학과) ;
  • 최형진 (강원대학교 컴퓨터과학과)
  • Published : 2001.12.01

Abstract

One of the major characteristics of C language is that it allows us to use pointer type variables to access any area of virtual address space. So, we can read/write/execute from/to virtual memory area not controlled delicately by operating system. We can access such memory area by using format string and it can be a vulnerability of C language from the point of secure programming. In this paper, we analyze in detail the process of security attack based on format string and then exploit a new virus style attack which is stepwise and durable with some actual scenarios to warn the severity of it, and grope for some preliminary responding actions.

C 언어가 가지고 있는 특징 중의 하나는 포인터형 변수를 제공하여, 프로그램 작성자가 임의의 주소영역에 쉽게 접근할 수 있다는 점이다. 따라서 운영체제에 의해서 세부적으로 통제되지 못한 메모리 영역은 C 언어를 통해서 읽기·쓰기·수행이 가능해 진다. C 언어의 포맷스트링은 이러한 C 언어의 특성에 따라 임의의 메모리를 접근할 수 있는 통로 역할을 할 수 있고, 따라서 프로그램 보안침해 수단으로 악용될 수 있다. 본 논문에서는 이러한 C 언어의 포맷스트링이 프로그램 보안침해에 적용되는 과정을 심층적으로 규명한 후, 지금까지 알려진 보편적인 수법보다 더욱 위협적인 단계적 지속적 바이러스 형태의 새로운 침해수법 가능성을 실증적 시나리오와 함께 증명함으로써 포맷스트링의 위험성에 대한 경각성을 높이고 대응방안 모색에 기여하고자 한다.

Keywords

References

  1. Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language, Prentice-Hall., 1978
  2. McClure, Scambray, Kurtz 'Hacking Exposed,' OSBORNE, 1998
  3. Arash Baratloo, Timothy Tasi, Navjot Singh, 'Libsafe : Protecting Critical Elements of Statcks,' Bell Labs, Lucent Technologies, 1999.12
  4. 이형봉, 박현미, 박정현, 버퍼넘침을 사용한 해킹공격 기법 및 예방 방안, 한국정보처리학회, 2000추계학술발표논문집(상), pp.129-132, 2000
  5. Aleph One, 'Smashing the stack for fun and profit,' Phrack Magazine, 49(14), 1998
  6. Pascal Bouchareine, '[Paper] Format bugs,' BugTraq Archive, 2000. http://www.securityfocus.com/archive/1/70552
  7. 이형봉, 'UNIX/LINUX 커널의 설계 및 구현,' 홍릉과학출판사, 2000.1
  8. 이형봉, 차흥준, 노희영, 이상민, 'C 언어에서 프로세서의 스택관리 형태가 프로그램 보안에 미치는 영향', 정보처리학회 학술논문지 제8-C권 제1호, pp.1-13
  9. CERT, 'Two Input Validation Problems in FTPD,' CERT Advisory CA-2000-13, 2000. http://www.cert.org/advisories/CA-2000-13.html
  10. Digital Equipment Corporation, 'Reference Pages Section 3,' Digital Press, 1996
  11. Intel, 'Pentium Processor Users's Manual(Vol.3 : Architecture and Programming Manual),' Intel, 1993
  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