This thesis presents a study of how to securely execute untrusted code. With web browsers being used to execute potentially malicious code for millions of users worldwide, its security is paramount. Designing and implementing new security techniques are inherently challenging, partly due to the complexity of modern browsers. Therefore a set of design principles for building interpreters are designed, using the language Haskell coupled with the building blocks of monad transformers. The implemented framework, named Bowser, serves as proof that interpreters can in fact be secure by design, and that extending it with new security mechanisms is easily achieved. This is demonstrated by adding dynamic taint analysis to the designed framework, with the goal of mitigating common attacks extracting sensitive information.
본 논문은 신뢰할 수 없는 코드를 안전하게 실행하는 방법에 대하여 다룬다. 전 세계적으로 수백만 명이 사용하고 있는 웹 브라우저는 잠재적으로 위험한 코드를 실행할 수 있기 때문에 웹 브라우저 보안은 굉장히 중요하다. 최신 웹 브라우저는 복잡한 구조를 갖고 있기 때문에 새로운 웹 브라우저 보안 기술을 설계하고 구현하는 것은 근본적으로 어려운 일이다. 따라서 본 논문에서는 안전한 인터프리터를 구현하는데 필요한 디자인 원칙을 제시한다. 또한 본 논문에서는 Bowser라는, 모나드 변환을 사용할 수 있는 하스켈 프로그래밍 언어로 구현되어 있고, 인터프리터가 안전하게 디자인 되었다는 것을 증명할 수 있으며, 새로운 보안 메커니즘을 쉽게 적용할 수 있도록 확장 가능한 프레임워크를 소개한다. 본 논문에서는 Bowser의 응용으로 동적 테인트 분석을 추가하여 민감한 정보를 추출하는 공격을 방어할 수 있음을 보였다.