벨 연구소, 리눅스용 '버퍼 넘침' 대책 라이브러리 공개

중앙일보

입력

루슨트 테크날리지(Lucent Technologies)사의 벨 연구소는 부정침입을 방지하는 "Libsafe" 라이브러리를 GNU LGPL로 공개했다. 이 라이브러리를 사용하면 버퍼 넘침을 악용한 공격을 막을 수 있다고 한다.

Libsafe는 리눅스 공유 라이브러리의 구조를 이용해 버퍼 넘침을 일으키기 쉬운 strcpy(), memcpy(), strcat() 등의 함수를 버퍼 넘침을 점검하는 같은 이름의 함수로 바꿔 안정성을 확보한다. 대응하는 함수가 많지는 않지만 표준 C 라이브러리에서 준비없이 사용되기 쉬운 함수를 골랐기 때문에 버퍼 넘침에 상당히 효과적이라고 한다.

버퍼 넘침이란

버퍼 넘침은 프로그램 오류의 한 종류다. 프로그램이 준비한 일정 길이의 버퍼보다 긴 데이터를 버퍼에 쓸 때 발생한다. 원래는 버퍼의 길이를 넘어서는 데이터를 쓰지 못하도록 입력 문자열의 길이를 점검하도록 해야 하는데 그렇지 못힐 경우에 발생하게 된다.

C 언어 등에서 일부 변수는 스택 영역에 확보된다. 스택영역에는 함수나 서브 루틴이 종료되었을 때에 "어느 번지에서 프로그램을 다시 시작할 것인가"를 알려주는 복귀 번지도 기록되어 있기 때문에 버퍼 넘침을 악용하면 이 복귀 값을 바꿔 임의의 프로그램을 실행시킬 수 있게 된다. 실행되는 프로그램은 버퍼 넘침을 일으킨 프로그램과 같은 권한으로 움직이기 때문에 예를 들면 루트 권한으로 움직이는 서버 프로그램에서 발생할 경우 루트 권한을 얻게 된다. 로그도 남지 않기 때문에 무단 침입을 받고도 알지 못하는 관리자도 많다.

ADVERTISEMENT
ADVERTISEMENT