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