In this paper, we introduce both an analysis framework for JavaScript, SAFE and a method to improve the analysis precision of JavaScript programs using the framework. Especially, we focus on conditional branches in the control flow graph level intermediate language. Because control flow graph contains information for conditional branches, we can prune memory states depending on a conditional expression of each branch. Some conditional expressions can prune its memory state with sound, and get higher accuracy than without considering expressions of conditions. We obtain higher precision of the analysis and find unreachable code with our method.
JavaScript는 주로 웹브라우저에서 탑재되어 많은 개발자에 의해 사용되고 있는, 현재 가장 널리 사용되고 있는 프로그램 언어이다. 이 언어는 이제 웹 브라우저 뿐만 아니라 스마트 가전등의 기기에서도 사용될 정도로 널리 사용되고 있는데, 이 언어는 일반적인 언어와는 다른 많은 특징을 가지고 있어 분석하는데 어려움을 겪게 하고, 프로그램에 보안상 취약점들을 안겨준다. 이에 보다 신뢰성 높은 JavaScript프로그램 개발을 위한 JavaScript분석의 필요성이 대두되었지만, 기존연구들이 많은 한계점을 가지고 있어 새로운 분석도구를 개발하였다. 이렇게 개발된 분석도구 위에 JavaScript프로그램 분석을 위한 분석기를 개발하였으며, 보다 더 나은 분석 결과를 보여주기 위해 분기노드를 더욱 잘 다루는 방안을 제시하였다.