팀명
트위저
팀원 명단
노유정 이주영
지도교수
조은선 교수님
작품 배경 및 목적
최근 엣지에서 동작하는 프로그램이 많아짐에 따라 저전력, 경량화된 코드 등을 위해 C, C++ 언어가 중요한 역할을 하고 있다. 하지만, C 언어 특성상 메모리와 관련된 취약점들이 꽤 자주 발생한다. 취약점은 시스템 설계, 구현 또는 운영 관리의 결함 및 약점으로, 프로그램 제어를 변형시킬 수 있고, 공격자에 의해 해킹당하는 등 보안 위협을 초래할 수 있다. 따라서 취약점을 개발 단계에서 효과적으로 피할 수 있다면 프로그램의 안전성을 높일 수 있다. 메모리 취약점 탐지에 사용되는 기존 도구는 구현 특성상 메모리 오버헤드가 많이 발생한다. 이에 본 논문에서는 메모리 오버헤드가 비교적 적은 방식으로 코드를 검사하고, 취약점이 탐지된 경우 예외(exception)처럼 처리할 수 있도록 지원하는 도구를 제안한다.
작품 내용
본 프로젝트에서는 위와 같이 버그 탐색에 드는 메모리 오버헤드를 줄이고, 보다 효과적이고, 비용 효율적인 취약점 탐지를 목표로 한다. 이에 제안하는 도구는 컴파일 타임 코드 조작을 이용하여 간편하게 탐지를 진행하되, 메모리 오버헤드가 비교적 적은 검사를 지원한다. 또한, 취약점을 발견한 경우 예외처럼 처리하도록 지원하여 C 언어를 보다 안전하게 사용할 수 있도록 확장하였다. LLVM은 컴파일러 및 도구 모음으로, 프로그램을 컴파일 타임에 변환하거나 최적화, 혹은 분석을 가능하게 하는 프레임워크인 LLVM Pass를 지원한다. 이러한 LLVM 컴파일러의 Pass를 제작하여 취약점이 발생할 가능성이 있는 곳에, 코드 조작을 통해 자체 알고리즘 코드를 생성하고, 런타임에 취약점을 탐지한다. 취약점이 탐지된 경우 개발자가 구현한 예외처리 함수가 실행되도록 제어를 이동시킨다.
コメント