문자열 조작 언어를 위한 정적 프로그램 분석
📝 원문 정보
- Title: Static Program Analysis for String Manipulation Languages
- ArXiv ID: 1808.07827
- 발행일: 2019-08-21
- 저자: Vincenzo Arceri (University of Verona, Department of Computer Science, Verona, Italy), Isabella Mastroeni (University of Verona, Department of Computer Science, Verona, Italy)
📝 초록 (Abstract)
최근 몇 년 동안 JavaScript나 Python과 같은 동적 언어가 다양한 분야와 애플리케이션에서 점점 더 많이 사용되고 있다. 이러한 언어들의 복잡하고 오해되기 쉬운 행동은 해당 프로그래밍 언어의 정적 분석을 어렵게 만든다. 동적 언어 프로그램의 핵심 측면 중 하나는 문자열의 다중 사용으로, 이들은 암시적으로 다른 유형 값으로 변환되거나 코드로 변환되는 문자열-코드 원시 함수에 의해 변환될 수 있으며 객체 속성을 참조하는 데도 사용된다. 불행히도 동적 언어를 위한 문자열 분석은 여전히 정확성이 부족하며 중요한 문자열 특징들을 고려하지 못하고 있다. 또한, 동적 언어 악성 코드의 맥락에서 문자열 가리기 기법이 매우 인기가 있으며, 이를 통해 코드 정보가 문자열 내부에 숨겨지고 나중에 문자열을 실행 가능 코드로 동적으로 변환된다. 이러한 상황에서는 더 정확한 문자열 분석이 필수적이다. 본 논문은 추상 해석에 기반한 정적 문자열 분석의 맥락에서 새로운 문자열 분석 의미론을 제안하며, 이는 동적 언어의 문자열 특징들을 처리하기 위한 첫 걸음이다.💡 논문 핵심 해설 (Deep Analysis)
This paper focuses on improving static analysis of string manipulation in dynamic programming languages such as JavaScript and Python. Dynamic languages have complex features like implicit type conversion, which make them challenging to analyze statically. Additionally, they allow for sophisticated string manipulations and code generation that can be used to obfuscate malicious activities.The authors propose a novel approach based on abstract interpretation to better handle the intricacies of dynamic language strings. They design an abstract domain capable of dealing with various primitive types (strings, integers, booleans) in concert to capture dynamic typing accurately. The paper introduces new algorithms for string operations using finite state automata and provides formal definitions and proofs of their soundness.
The key contribution is a more precise way to analyze strings in dynamic contexts, which can help detect and understand obfuscated code better. This work lays the groundwork for developing tools that can handle more complex dynamic language features, providing valuable insights into how strings are manipulated during program execution.