[논문 리뷰] Finding Tizen security bugs through whole-system static analysis
이 논문은 Tizen, 소비자 기기용 리눅스 기반 오픈소스 플랫폼에서 보안 취약점을 탐지하기 위해 LLVM 기반의 전체 시스템 정적 분석 프레임워크를 제안한다. LLVM에 정밀한 정보 흐름 분석 및 제어 흐름 분석을 통합함으로써, 저자들은 시스템 라이브러리에서 누락된 보안 검사와 앱 내 위험한 데이터 흐름을 식별하여, 패치되지 않은 채로 존재할 경우 악용될 수 있는 이전에 알려지지 않은 결함을 드러냈다.
Tizen is a new Linux-based open source platform for consumer devices including smartphones, televisions, vehicles, and wearables. While Tizen provides kernel-level mandatory policy enforcement, it has a large collection of libraries, implemented in a mix of C and C++, which make their own security checks. In this research, we describe the design and engineering of a static analysis engine which drives a full information flow analysis for apps and a control flow analysis for the full library stack. We implemented these static analyses as extensions to LLVM, requiring us to improve LLVM's native analysis features to get greater precision and scalability, including knotty issues like the coexistence of C++ inheritance with C function pointer use. With our tools, we found several unexpected behaviors in the Tizen system, including paths through the system libraries that did not have inline security checks. We show how our tools can help the Tizen app store to verify important app properties as well as helping the Tizen development process avoid the accidental introduction of subtle vulnerabilities.
연구 동기 및 목표
- Tizen의 대규모 C/C++ 소스코드 기반에서 특히 보안 검사가 누락될 수 있는 시스템 라이브러리에서 미묘한 보안 취약점을 탐지하는 데 도전하는 것.
- 앱의 정보 흐름 분석과 시스템 라이브러리의 제어 흐름 분석을 모두 지원하는 확장성 있고 정밀한 정적 분석 파이프라인을 개발하는 것.
- Tizen 앱 스토어의 자동화된 앱 보안 성질 검증을 가능하게 하여, 허가 기반 검사에만 의존하는 것보다 거짓 긍정을 줄이는 것.
- 핵심 보안 검사를 우회하는 경로를 식별함으로써, 시스템 수준의 보안 강화를 지원하는 것.
- 다른 언어로의 확장이 가능한 LLVM 프론트엔드를 통해 활용 가능한 일반 목적의 재사용 가능한 분석 인프라를 구축하는 것.
제안 방법
- Tizen의 네이티브 코드베이스 전반에 걸쳐 전체 시스템 분석을 수행할 수 있도록, LLVM 인프라 위에 맞춤형 정적 분석 엔진을 구축했다.
- 유산성과 함수 포인터 사용과 같은 복잡한 C++ 기능을 높은 정밀도로 처리할 수 있도록 LLVM의 분석 기능을 확장했다.
- 사용자 연락처와 같은 소스에서 네트워크 호출과 같은 싱크로의 민감한 데이터 유출을 탐지하기 위해 전문 프로그램 정보 흐름 분석을 구현했다.
- 보안 검사를 우회하는 실행 경로를 식별하기 위해 시스템 라이브러리에 대한 제어 흐름 분석을 수행했다. 이는 잠재적 취약성을 시사한다.
- 거짓 긍정을 줄이고 개발자들이 실질적으로 도입할 수 있도록, 신뢰할 수 있는 코드 주석을 극히 적게 사용하여 분석을 안내했다.
- 객체 기반의 데이터 흐름을 정밀하게 모델링하기 위해 힙 SSA 형식을 활용하여, 전통적인 태인 추적보다 정밀도를 향상시켰다.
실험 결과
연구 질문
- RQ1전체 시스템 정적 분석 접근법이 보안 검사를 우회하는 Tizen 시스템 라이브러리에서 이전에 알려지지 않은 보안 결함을 탐지할 수 있는가?
- RQ2LLVM 기반의 정보 흐름 분석은 거짓 긍정을 최소화하면서 Tizen 앱에서 위험한 데이터 흐름을 얼마나 효과적으로 식별할 수 있는가?
- RQ3정적 분석이 함수 포인터 오버라이트나 버퍼 오버런과 같은 불안정한 C/C++ 관용 표현에서 기인하는 취약점을 어느 정도 탐지할 수 있는가?
- RQ4정적 분석을 Tizen 앱 스토어 파이프라인에 통합하면, 허가 기반 검사에만 의존하지 않고도 보안 검증을 향상시킬 수 있는가?
- RQ5Tizen의 네이티브 코드베이스처럼 대규모이고 복잡한 시스템을 분석하기에 충분히 확장성 있고 정밀도가 확보된 정적 분석은 어떻게 달성할 수 있는가?
주요 결과
- 분석 과정에서 보안 검사가 누락된 Tizen 시스템 라이브러리 내 경로가 여러 건 발견되어, 악용 가능한 결함일 수 있음을 시사했다.
- 후속 수동 분석 결과, 고수준 소프트웨어 계층이 이와 같은 누락된 검사를 종종 보완하고 있음을 확인하여, 실제로 악용되는 경우는 없었다.
- 정보 흐름 분석은 민감한 소스(예: 사용자 연락처)에서 신뢰할 수 없는 출력(예: 네트워크 호출)으로의 비트리비어 데이터 흐름을 성공적으로 탐지하여, 개인정보 유출 위험이 있음을 드러냈다.
- 확장된 LLVM 인프라는 상속성과 함수 포인터와 같은 C++ 기능을 높은 정밀도로 처리하여 정확한 정적 분석을 가능하게 했다.
- 도구 체인은 높은 확장성을 입증하여, Tizen 코드베이스의 상당 부분을 전체적으로 분석할 수 있었다.
- 저자들은 분석의 정밀도가 향후 동적 디스패치를 정적 호출로 대체하는 최적화를 가능하게 할 것으로 기대하고 있다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.