오픈소스, 30년 묵은「보안 버그」박멸 성공
오픈BSD 프로젝트가 ‘버퍼 오버플로우’ 문제를 대폭 개선한 BSD 운영체제의 신버전을 출시할 예정이다. 소프트웨어의 메모리 관련 결함인 버퍼 오버플로우는 지난 30년간 보안 전문가들을 괴롭혀왔다.
Robert Lemos (Staff Writer, CNET News.com) 2003/04/15
오픈BSD 프로젝트의 리더 시오 드 라트는 오는 5월 1일 발매 예정인 BSD 유닉스 운영체제 신버전이 버퍼 오버플로우를 거의 발생시키지 않을 것이라고 밝혔다. 버퍼 오버플로우는 해커가 서버에 악성 프로그램을 수행할 수 있도록 하는 소프트웨어상의 메모리 결함이다.
지난 10일 개최된 캔섹웨스트(CanSecWest) 보안 전시회에서 드 라트는 참가자들에게 “버퍼 오버플로우 버그를 거의 완치했다고 말할 수 있다. 그러나 내가 속해있는 보안 공동체의 공식적인 발표는 아니다”라고 말했다.
메모리 버그는 거의 30년간 계속 발견돼 왔으며 드 라트는 오픈소스 그룹이 메모리 버그를 계속 유발시켜 왔다는 주장은 검증돼야 한다고 밝혔다.
캔섹웨스트 보안 전시회의 일부 참가자는 벌써 새 운영체제로 버퍼 오버플로우를 제거할 수 있을지 의구심을 표명하고 있다.
스위스 통신업체 콜트(Colt) 텔레콤의 보안관련 수석 매니저 니콜라스 피쉬바크는 “단지 보안에 또 다른 계층이 더해진 것에 불과하다. 소프트웨어에는 언제나 버그가 존재하기 마련이라 큰 차이는 없을 것”이라고 전했다.
해커는 프로그램에 과도한 정보를 요청하는 방법으로 오버플로우 버그를 악용할 수 있다. 해커가 보내는 요청 데이터에는 대부분 두 가지 구성요소가 포함돼 있다. 하나는 애플리케이션을 폭주시키는 요소이며 다른 하나는 해커가 실행하려는 프로그램이나 프로그램을 가리키는 메모리 주소다. 애플리케이션이 첫 번째 요소로 인해 폭주하게 되면 운영체제는 두 번째 데이터를 실행하게 된다.
메모리 기법 개선해 해킹 시도 차단
오픈BSD 팀은 해커의 공격을 막기 위해 세 가지 방법으로 운영체제를 강화했다.
오픈BSD 팀은 애플리케이션과 사용 데이터가 저장되는 ‘스택’ 구조의 위치를 난수화했다. 이로 인해 해당 시스템의 메모리 사용 형태를 알아야만 버퍼 오버플로우를 악용하는 코드를 만들 수 있게 됐다.
드 라트는 “버퍼 오버플로우 결함은 특정 메모리 배치에 편승하는 경향이 있다. 오픈BSD 그룹이 이용한 방식은 메모리 낭비가 거의 없고 추가 부담도 작지만 해킹을 꽤 어렵게 만드는 효과가 있다. 이 방식으로 인해 해커는 더 많은 작업을 수행해야 시스템을 공격할 수 있다”라고 말했다.
또한 오픈BSD 그룹은 스택에 중요 주소가 저장되는 방식을 재구성해 버퍼 오버플로우가 발생해도 새로운 프로그램을 수행하기가 어렵게 만들었다. 이 그룹은 카나리아(canary)라고 불리는 작은 표식을 스택에 첨부해 주소가 수정됐는지 감지할 수 있도록 했다. 주소변경은 해커들이 정상적인 프로그램에 악성코드를 실행시킬 때 자주 사용하는 기법이다.
마지막으로 오픈BSD 그룹은 BSD 파일 시스템을 해킹해 메인 메모리를 기록가능영역과 실행가능영역으로 나눌 수 있는 방법을 찾아냈다. 메모리에 기억된 프로그램과 데이터 조각들은 두 영역 중 하나에 저장되며 페이지라고 불린다.
드 라트는 “어떤 페이지도 기록과 실행이 동시에 가능하지 않도록 하는 것이 목표다. 코드를 메모리에 기록한 후 어떤 해커도 실행할 수 없도록 하기 위해서다”라고 설명했다.
그러나 오픈BSD 그룹은 64비트 프로세서가 메모리 보호 기법을 갖고 있는 반면 가장 대중화된 32비트 프로세서는 보호 기법을 갖고 있지 않다는 문제에 부딪혔다. 이 그룹은 문제를 해결하기 위해 접근 방법을 바꿨으며 결국 컴퓨터의 메모리를 쓰기가능과 실행가능 영역으로 분리하는 방안을 택했다.
드 라트는 “모래밭에 선을 그어 그 아래에서는 실행이 가능하지만 그 위에서는 못하도록 하는 것과 같다”고 설명했다.
인텔용 보안 기능 6개월 더 기다려야
새로운 BSD 운영체제의 보안 기능 대부분은 오는 5월 1일 출시와 동시에 제공되지만 인텔 x86 칩과 파워PC 칩과 같은 32비트 프로세서용 보호 메모리 페이지 구조는 앞으로 6개월이 지나야 이용할 수 있다고 그는 덧붙였다.
이번 연구는 DARPA(Defense Advanced Research Projects Agency)가 오픈BSD 프로젝트에 230만 달러를 지원하면서 이뤄졌다. 그러나 드 라트는 최신 변경사항이 프로젝트 자금이 마련됐을 때 요청된 사항을 뛰어넘었다고 덧붙였다.
그는 “버퍼 오버플로우 관련 사항은 DARPA가 요청한 부분이 아니지만 DARPA의 지원 자금이 있었기에 구현할 수 있었다”라고 밝히며 “사람들을 방에 모아 놓고 취할 때까지 공짜로 술을 먹을 수 있도록 하면 이런 의도하지 않았던 결과가 나온다”라고 비유했다. 그러나 드 라트는 오픈BSD 그룹이 마신 맥주값은 직접 지불했다고 조심스레 지적했다. @