초록
본 논문에서는 심볼릭 링크 공격에 취약한 코드를 정의하고 프로그램 분석 기법을 사용하여 이를 검출하는 방법을 제안한다. 심볼릭 링크 공격을 해결하기 위한 기존의 방법들은 심볼릭 링크 공격을 방어하기 위한 기법들로써 임시 파일에 대한 접근 시 공격이 이루어졌는지에 대한 적절한 검사가 이루어져야 하나, 이를 간과할 경우 공격의 위험에 노출되게 된다. 본 논문에서 제안하는 방법은 심볼릭 링크 공격에 취약한 부분을 자동으로 모두 검출함으로써 프로그래머가 심볼릭 링크 공격을 안전하게 방어할 수 있도록 한다. 제안하는 방법은 취약점 분석을 위해서 기존의 타입 시스템에 새로운 타입 한정자를 추가하고, 추가된 타입 한정자를 고려한 타입 검사를 통해서 심볼릭 링크 공격의 취약점을 식별한다. 제안하는 방법은 자동으로 심볼릭 링크 공격의 취약점을 모두 검출할 수 있기 때문에, 프로그래머가 취약한 것으로 식별된 코드에 대해서만 기존의 방어 기법을 적용하도록 함으로써 프로그램을 전반적으로 검토하거나 수정해야 하는 부담을 줄여준다는 장점을 가진다. 제안하는 방법을 널리 알려진 실용적인 프로그램을 대상으로 실험해 본 결과 전체 fopen() 함수 중 일부만 심볼릭 링크 공격에 취약한 것으로 분석되었으며, 이는 제안한 방법이 프로그래머의 부담을 줄이는데 유용함을 보여준다.
In this paper we define a vulnerable code to symbolic link exploit and propose a technique to detect this using program analysis. The existing methods to solve symbolic link exploit is for protecting it, on accessing a temporary file they should perform an investigation whether the file is attacked by symbolic link exploit. If programmers miss the investigation, the program may be revealed to symbolic link exploit. Because our technique detects all the vulnerable codes to symbolic link exploit, it helps programmers keep the program safety. Our technique add two type qualifiers to the existing type system to analyze vulnerable codes to symbolic link exploit, it detects the vulnerable codes using type checking including the added type qualifiers. Our technique detects all the vulnerable codes to symbolic link exploit automatically, it has the advantage of saving costs of modifying and of overviewing all codes because programmers apply the methods protecting symbolic link exploit to only the detected codes as vulnerable. We experiment our analyzer with widely used programs. In our experiments only a portion of all the function fopen() is analyzed as the vulnerabilities to symbolic link exploit. It shows that our technique is useful to diminish modifying codes.