Mystra: Shadow Virtual Machine을 통한 선언적 동적 오염 분석 (Declarative Dynamic Taint
요약
Mystra는 Shadow Virtual Machine을 활용하여 런타임 독립적인 선언적 동적 오염 분석(DTA)을 수행하는 새로운 프레임워크입니다. 기존 방식의 높은 오버헤드와 엔진 종속성 문제를 해결하며, 언어 모델 친화적인 설계와 높은 재현율을 특징으로 합니다.
핵심 포인트
- Shadow Virtual Machine을 통한 런타임 독립적 DTA 추상화 구현
- 선언적 오염 명세 언어 Mystra 설계 및 공식 운영 의미론 제공
- V8, SpiderMonkey, CPython 등 다양한 런타임 지원 도구 Shar 개발
- SecBench.js 테스트 결과 95.5%의 높은 재현율 달성
- 기존 NodeMedic-FINE 대비 22.7배 낮은 런타임 오버헤드 실현
JavaScript 및 Python과 같은 인터프리터 언어를 위한 동적 오염 분석 (Dynamic Taint Analysis, DTA)은 세 가지 역량을 필요로 합니다: 호스트 런타임 (host-runtime) 작업 관찰, 병렬 오염 상태 (taint states) 유지, 그리고 오염이 전파되는 방식 정의입니다. 기존 시스템들은 이러한 역량들을 소스 재작성 (source-rewriting) 또는 엔진 네이티브 (engine-native) 방식의 계측 (instrumentation) 메커니즘 내에 결합하며, 이로 인해 높은 런타임 오버헤드가 발생하거나 엔진 특화된 임베딩 (embeddings)을 요구합니다. 호스트 런타임이 이를 실행하는 방식으로부터 오염 의미론 (taint semantics) 및 상태 전이 (state transitions)를 분리하는, 런타임 독립적인 일반 DTA 추상화는 아직 존재하지 않습니다. 우리는 확장 가능하고, 성능이 뛰어나며, 정확한 DTA 엔진을 개발하고자 합니다. 이를 달성하기 위해, 우리는 다단계 오염 (multi-level taint), 출처 (provenance), 그리고 교차 호출 컨텍스트 (cross-invocation context)를 추적하며 호스트 런타임과 나란히 실행되는 Shadow Virtual Machine을 도입합니다. 우리는 공식적인 운영 의미론 (formal operational semantics)을 가진 선언적 오염 명세 언어인 Mystra를 설계합니다. Mystra는 언어 모델 (language model) 친화적으로 설계되었으며, 규칙의 신뢰할 수 있는 자동 합성을 가능하게 하는 검증기 (validators)를 갖추고 있습니다. 또한 Mystra는 고차 함수 (higher-order function) 오염 전달을 선언적으로 표현하는 최초의 사례입니다. 나아가, Mystra 규칙은 사전에 바이너리 표현 (binary representation)으로 컴파일되며 상수 시간 (constant runtime) 내에 디스패치 (dispatch)됩니다. 우리는 이러한 비전을 Shar이라는 도구로 구현하였으며, Shar은 공유 코어 엔진과 세 가지 런타임에 대한 인스턴스화를 포함합니다: Node.js 및 Chromium (임베딩)에서의 V8, SpiderMonkey (엔진), 그리고 CPython (언어)입니다. 정확도 측면에서, SecBench.js (4개 CWE 카테고리에 걸친 493개의 범위 내 CVE)에서 우리의 V8 인스턴스는 패치된 버전 테스트에서 오탐 (false positives) 없이 95.5%의 재현율 (recall)을 달성했습니다. 성능 측면에서, Shar의 런타임 오버헤드는 NodeMedic의 벤치마크 기준 순수 Node.js 대비 1.85배이며, 동일한 워크로드에서 NodeMedic-FINE보다 22.7배 낮으면서도, 지원되는 카테고리에서 33.2% 더 높은 재현율을 생성합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.PL (Programming Languages)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기