사물 인터넷 시장 규모의 급격한 성장에 따라 임베디드 시스템에서 가장 많이 쓰이는 언어인 C/C++ 언어의 사용도 증가하고 있다. C/C++ 언어의 코드 품질을 향상시키고 개발 비용을 절감시키기 위해 소프트웨어 개발 전반부에서 수행 가능한 소프트웨어 검증기법인 정적 분석을 사용하는 것이 좋다. 많은 프로그램들이 정적 분석을 사용하여 소프트웨어의 안전성을 검증하고 있으며 많은 정적 분석 도구들이 사용 및 연구되고 있다. 본 논문에서는 Clang 정적 분석도구를 사용하여 검증된 시험 코드에 대한 보안 약점 검출 성능을 확인한다. 또한 소스 코드난독화 기법인 구획 난독화, 데이터 난독화, 제어 흐름 난독화 기법이 각각 적용된 시험 코드에 대한 정적 분석 결과와 원본 시험 코드에 대한 정적 분석 결과를 비교하여 소스 코드 난독화 기법에 따른 Clang 정적 분석 도구의 성능 영향을 분석한다.
사물 인터넷 시장 규모의 급격한 성장에 따라 임베디드 시스템에서 가장 많이 쓰이는 언어인 C/C++ 언어의 사용도 증가하고 있다. C/C++ 언어의 코드 품질을 향상시키고 개발 비용을 절감시키기 위해 소프트웨어 개발 전반부에서 수행 가능한 소프트웨어 검증기법인 정적 분석을 사용하는 것이 좋다. 많은 프로그램들이 정적 분석을 사용하여 소프트웨어의 안전성을 검증하고 있으며 많은 정적 분석 도구들이 사용 및 연구되고 있다. 본 논문에서는 Clang 정적 분석도구를 사용하여 검증된 시험 코드에 대한 보안 약점 검출 성능을 확인한다. 또한 소스 코드 난독화 기법인 구획 난독화, 데이터 난독화, 제어 흐름 난독화 기법이 각각 적용된 시험 코드에 대한 정적 분석 결과와 원본 시험 코드에 대한 정적 분석 결과를 비교하여 소스 코드 난독화 기법에 따른 Clang 정적 분석 도구의 성능 영향을 분석한다.
Due to the rapid growth of the Internet of Things market, the use of the C/C++ language, which is the most widely used language in embedded systems, is also increasing. To improve the quality of code in the C/C++ language and reduce development costs, it is better to use static analysis, a software ...
Due to the rapid growth of the Internet of Things market, the use of the C/C++ language, which is the most widely used language in embedded systems, is also increasing. To improve the quality of code in the C/C++ language and reduce development costs, it is better to use static analysis, a software verification technique that can be performed in the first half of the software development life cycle. Many programs use static analysis to verify software safety and many static analysis tools are being used and studied. In this paper, we use Clang static analysis tool to check security weakness detection performance of verified test code. In addition, we compared the static analysis results of the test codes applied with the source obfuscation techniques, layout obfuscation, data obfuscation, and control flow obfuscation techniques, and the static analysis results of the original test codes, Analyze the detection ability impact of the Clang static analysis tool.
Due to the rapid growth of the Internet of Things market, the use of the C/C++ language, which is the most widely used language in embedded systems, is also increasing. To improve the quality of code in the C/C++ language and reduce development costs, it is better to use static analysis, a software verification technique that can be performed in the first half of the software development life cycle. Many programs use static analysis to verify software safety and many static analysis tools are being used and studied. In this paper, we use Clang static analysis tool to check security weakness detection performance of verified test code. In addition, we compared the static analysis results of the test codes applied with the source obfuscation techniques, layout obfuscation, data obfuscation, and control flow obfuscation techniques, and the static analysis results of the original test codes, Analyze the detection ability impact of the Clang static analysis tool.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 검증된 시험 코드에 대한 Clang 정적 분석 도구의 검출 성능을 확인한다. 또한 소스 코드 난독화 기법이 적용된 시험 코드에 대한 Clang 정적 분석 도구의 검출 성능이 달라짐을 확인하고, 이를 분석하여 Clang 정적 분석 도구의 성능 영향을 파악한다.
본 연구에서는 오픈 소스 정적 분석 도구의 보안 약점 검출 성능을 확인하기 위해 시험 코드를 사용한다. 성능 확인을 통해 정적 분석 도구가 어떤 종류의 결함을 얼마나 잘 검출할 수 있는지 파악한다. 또한 소스 코드 난독화 기법이 정적 분석 도구의 검출 성능에 끼치는 영향을 파악하기 위해 상용 소스 코드 난독화 도구를 사용하여 시험 코드에 난독화 기법을 적용한다.
제안 방법
1 버전의 정적 분석 도구를 사용하였다. Clang의 95개 체커 중 31개의 체커가 줄리엣 시험 코드 집합의 보안 약점을 검출할 수 있었고, 118개의 CWE로 분류된 시험 코드 집합 중 39개의 집합, 총 35,008개 시험 코드에 대하여 정적 분석을 수행하였다. Fig.
3. Using Stunnix C/C++ Obfuscator and StarForce C/C++ Obfuscator to generate a set of test codes with three source code obfuscation techniques(Layout obfuscation, Data obfuscation, Control-Flow obfuscation).
OutOfBounds 체커를 이용해 버퍼 오버플로 보안 약점을 찾아 경고를 표시하는 예이다. clang 명령어에 정적 분석 옵션을 추가하고, 원하는 체커를 선택하여 정적 분석 대상 소스 코드에 대하여 정적 분석을 수행하였다. clang은 소스 코드에서 보안 약점이 발견된 위치를 표시해주고, 해당 보안 약점에 대한 경고 메시지와 보안 약점이 검출된 코드 부분을 표시해준다.
Starforce 난독화 도구는 사용자가 난독화 레벨(level)을 선택하여 난독화를 진행할 수 있으며, 레벨 0부터 레벨 4까지 난독화 레벨을 조절할 수 있다. 가장 난독화 정도가 심한 레벨 4의 경우 소스 코드의 크기가 원본에 비해 100배 이상 증가하였고, 실험에 적당한 레벨 3을 선택하여 제어 흐름 난독화를 적용하였다.
또한 소스 코드 난독화 기법이 정적 분석 도구의 검출 성능에 끼치는 영향을 파악하기 위해 상용 소스 코드 난독화 도구를 사용하여 시험 코드에 난독화 기법을 적용한다. 난독화 기법이 적용된 시험 코드에 대한 정적 분석 도구의 검출 성능 변화를 파악 및 분석한다. 이를 통해 오픈 소스 정적 분석 도구의 지속적인 개발 및 보완에 필요한 정보를 제공할 수 있다.
이 연구에서는 서로 다른 정적 테스팅 기법을 사용하는 정적 분석 도구와 바운드 모델 체커의 성능을 비교하기 위해 BegBunch[25] 벤치마킹 프레임 워크를 사용하였다. 또한 BegBunch 벤치마크에 대한 CBMC와 Parfait의 버그 검출 결과를 분석하여 두 분석 도구의 성능을 비교하였다.
정적 분석 도구에 대한 연구는 주로 상용 정적 분석 도구의 성능과 정확도를 측정하는 방향으로 진행되었다. 또한 성능과 정확도에 대한 객관적인 수치를 얻기 위해 오픈 소스 프로그램의 알려진 결함을 이용하거나, 의도적으로 결함을 내포한 시험 코드를 사용하였다. 본 연구에서는 오픈 소스 정적 분석 도구의 보안 약점 검출 성능을 확인하기 위해 시험 코드를 사용한다.
본 논문에서는 검증된 시험 코드에 대한 Clang 정적 분석 도구의 검출 성능을 확인한다. 또한 소스 코드 난독화 기법이 적용된 시험 코드에 대한 Clang 정적 분석 도구의 검출 성능이 달라짐을 확인하고, 이를 분석하여 Clang 정적 분석 도구의 성능 영향을 파악한다. 본 논문의 2장에서 관련 연구를 소개하고, 3장에서는 Clang 정적 분석 도구와 정적 분석 대상 시험 코드인 줄리엣 시험 코드에 대하여 소개한다.
이를 통해 Clang 정적 분석 도구의 성능 향상을 위해 어떤 체커를 우선적으로 개발 및 보완해야 하는지 참고할 수 있다. 또한 소스 코드 난독화 기법인 구획 난독화, 데이터 난독화, 제어 흐름 난독화 기법이 적용된 각각의 시험 코드 집합에 대한 검출 결과를 확인하였다. 정적 분석 결과에 대한 분석을 통해 Clang 정적 분석 도구가 난독화로 인해 분석이 어려워진 환경에서 보안 약점 검출 성능이 어떻게 저하되는지 파악할 수 있다.
Stunnix 난독화 도구를 이용하여 원본 줄리엣 시험 코드 집합에 식별자 치환, 주석 제거, 공백 문자 섞기 등의 구획 난독화 기법을 적용한다. 또한 원본 줄리엣 시험 코드 집합에 데이터 분할, 연산자 추가 등의 데이터 난독화 기법을 적용한다.
본 논문에서는 검증된 시험 코드를 이용하여 Clang 정적 분석 도구의 보안 약점 검출 성능을 확인하였다. 원본 줄리엣 시험 코드에 대한 보안 약점 검출 결과를 통해 Clang 정적 분석 도구가 어떤 종류의 보안 약점을 잘 검출하지 못하는지 파악할 수 있다.
본 논문에서는 원본 줄리엣 시험 코드 집합과 구획 난독화, 데이터 난독화, 제어 흐름 난독화 기법이 적용된 3개의 시험 코드 집합, 총 4개의 집합을 정적 분석 대상 소스 코드로 사용한다. 구획 난독화와 데이터 난독화가 적용된 2개의 시험 코드 집합을 생성하기 위해 Stunnix 난독화 도구를 사용하며, 제어 흐름 난독화가 적용된 시험 코드 집합은 StarForce 난독화 도구을 사용하여 얻는다.
또한 성능과 정확도에 대한 객관적인 수치를 얻기 위해 오픈 소스 프로그램의 알려진 결함을 이용하거나, 의도적으로 결함을 내포한 시험 코드를 사용하였다. 본 연구에서는 오픈 소스 정적 분석 도구의 보안 약점 검출 성능을 확인하기 위해 시험 코드를 사용한다. 성능 확인을 통해 정적 분석 도구가 어떤 종류의 결함을 얼마나 잘 검출할 수 있는지 파악한다.
Nathaniel Ayewah 등[20]은 자바(java) 소스 코드에서 결함을 탐지하는 정적 분석 도구인 FindBugs[21]의 성능과 사용자 편의성을 분석하였다. 이 논문에서는 실제 사용되는 자바 코드에 대하여 FindBugs 정적 분석 도구를 사용하여 검출 성능을 살펴보았고, 사용자 설문을 통해 개선점을 제시하였다.
초기의 SATE는 오픈소스 프로그램의 알려진 결함에 대하여 정적 분석 도구들의 검출 결과를 다방면으로 분석하였다. 이후 특정 보안 약점에 대한 정적 분석 도구의 검출 성능을 객관적으로 측정하기 위해 개발된 시험 코드 집합을 사용하였다.
데이터처리
정적 분석은 리눅스 운영체제에서 수행하였으며 LLVM/Clang 5.0.1 버전의 정적 분석 도구를 사용하였다. Clang의 95개 체커 중 31개의 체커가 줄리엣 시험 코드 집합의 보안 약점을 검출할 수 있었고, 118개의 CWE로 분류된 시험 코드 집합 중 39개의 집합, 총 35,008개 시험 코드에 대하여 정적 분석을 수행하였다.
SAMATE 프로젝트에서 Vadim Okun 등[25][26][27][28][29]은 2008년부터 상용 정적 분석 도구에 대한 연구 및 개선을 위해 SATE(Static Analysis Tool Exposition)를 실시하였다. 초기의 SATE는 오픈소스 프로그램의 알려진 결함에 대하여 정적 분석 도구들의 검출 결과를 다방면으로 분석하였다. 이후 특정 보안 약점에 대한 정적 분석 도구의 검출 성능을 객관적으로 측정하기 위해 개발된 시험 코드 집합을 사용하였다.
이론/모형
난독화 기법은 적용 대상에 따라서 바이너리 난독화와 소스 코드 난독화로 나눌 수 있다. Clang 정적 분석 도구는 소스 코드에 대하여 정적 분석을 수행하므로 줄리엣 시험 코드에 소스 코드 난독화 기법을 적용한다. 소스 코드 난독화 기법은 구획 난독화(layout obfuscation), 데이터 난독화 (data obfuscation), 제어 흐름 난독화(control flow obfuscation), 예방 난독화 (preventive obfuscation)로 구분할 수 있다[8].
Table 3. Detection results of Clang static analysis tool for Juliet test code with control-flow obfuscation.
Table 2. Detection results of Clang static analysis tool for Juliet test code with layout obfuscation and data obfuscation.
Starforce 난독화 도구를 이용하여 원본 줄리엣 시험 코드 집합에 더미 코드 역할을 하는 반복문과 조건문을 이용한 제어 흐름 난독화 기법을 적용한다. 하지만 제어 흐름 난독화 과정에서 기본적으로 식별자 치환, 변수 분할을 함께 적용하기 때문에 제어 흐름 난독화 기법만이 적용된 시험 코드 집합을 얻을 수 없었다.
Stunnix 난독화 도구를 이용하여 원본 줄리엣 시험 코드 집합에 식별자 치환, 주석 제거, 공백 문자 섞기 등의 구획 난독화 기법을 적용한다. 또한 원본 줄리엣 시험 코드 집합에 데이터 분할, 연산자 추가 등의 데이터 난독화 기법을 적용한다.
다른 난독화 도구들은 난독화 정도를 사용자가 설정하여 난독화를 수행하는 경우가 많았고, 그렇기 때문에 구획 난독화와 데이터 난독화 등 여러 난독화 기법이 함께 적용된다. 각각의 난독화 기법에 의한 Clang 정적 분석 도구의 성능 영향을 확인하기 위해 Stunnix 난독화 도구를 선택하였다. Stunnix 난독화 도구의 경우 식별자(identifier), 문자열과 상수 값, 공백 문자와 주석 등에 대한 세부적인 난독화 옵션을 선택할 수 있기 때문에 구획 난독화와 데이터 난독화를 분리하여 진행할 수 있다.
본 논문에서는 원본 줄리엣 시험 코드 집합과 구획 난독화, 데이터 난독화, 제어 흐름 난독화 기법이 적용된 3개의 시험 코드 집합, 총 4개의 집합을 정적 분석 대상 소스 코드로 사용한다. 구획 난독화와 데이터 난독화가 적용된 2개의 시험 코드 집합을 생성하기 위해 Stunnix 난독화 도구를 사용하며, 제어 흐름 난독화가 적용된 시험 코드 집합은 StarForce 난독화 도구을 사용하여 얻는다. Fig.
난독화 기법에 따른 Clang 정적 분석 도구의 성능 영향을 분석하기 위해 줄리엣 시험 코드에 난독화 기법을 적용한다. 난독화 기법은 적용 대상에 따라서 바이너리 난독화와 소스 코드 난독화로 나눌 수 있다.
성능 확인을 통해 정적 분석 도구가 어떤 종류의 결함을 얼마나 잘 검출할 수 있는지 파악한다. 또한 소스 코드 난독화 기법이 정적 분석 도구의 검출 성능에 끼치는 영향을 파악하기 위해 상용 소스 코드 난독화 도구를 사용하여 시험 코드에 난독화 기법을 적용한다. 난독화 기법이 적용된 시험 코드에 대한 정적 분석 도구의 검출 성능 변화를 파악 및 분석한다.
Kostyantyn Vorobyov 등[22]은 C/C++ 프로그램에 대한 바운드 모델 체커(bounded model checker)인 CBMC[23]와 C/C++ 언어를 대상으로 하는 정적 분석 도구인 Parfait[24]을 비교하는 연구를 진행하였다. 이 연구에서는 서로 다른 정적 테스팅 기법을 사용하는 정적 분석 도구와 바운드 모델 체커의 성능을 비교하기 위해 BegBunch[25] 벤치마킹 프레임 워크를 사용하였다. 또한 BegBunch 벤치마크에 대한 CBMC와 Parfait의 버그 검출 결과를 분석하여 두 분석 도구의 성능을 비교하였다.
줄리엣 시험 코드에 구획 난독화와 데이터 난독화 기법을 적용하기 위해 Stunnix 난독화 도구 (Stunnix C/C++ Obfuscator v4.7)를 사용한다[10]. 다른 난독화 도구들은 난독화 정도를 사용자가 설정하여 난독화를 수행하는 경우가 많았고, 그렇기 때문에 구획 난독화와 데이터 난독화 등 여러 난독화 기법이 함께 적용된다.
줄리엣 시험 코드에 제어 흐름 난독화를 적용하기 위해 Starforce[12] 난독화 도구(StarForce C++ Obfuscator v5.1.3)를 사용한다. Starforce 난독화 도구는 소스 코드에 제어 흐름 난독화를 적용하기 위해 프로그램의 원래 실행 흐름에 영향을 주지 않는 더미 코드를 삽입한다.
성능/효과
01%의 감소율을 나타내었다. 39개 보안 약점 중 Expression Always True에 대한 정적 분석 결과만 데이터 난독화의 영향을 받았다. Fig.
42% 정도의 감소율을 나타내었다. 39개 보안 약점 중 Integer Overflow to Buffer Overflow에 대한 정적 분석 결과만 구획 난독화의 영향을 받았다. 이 보안 약점에 해당하는 시험 코드의 경우 힙 메모리 사용을 위한 동적 할당을 수행하는 API에 전달하는 인자에 대한 버퍼 오버플로를 코드의 결함으로 사용하였다.
Clang 정적 분석 도구는 버퍼 오버플로 관련 보안 약점보다 use-after-free 취약점과 같은 메모리 누수(memory leak) 관련 보안 약점에 대해서 준수한 검출 성능을 나타냈다. 메모리 누수 관련 보안 약점은 주로 동적으로 자원을 할당하는 API의 사용과 사용 후 자원 할당 해제에 대한 약점이다.
2절에서 설명한 줄리엣 시험 코드의 구성 방식의 영향을 받았다. Clang 정적 분석 도구는 상대적으로 복잡도가 낮고, 제어 흐름을 변형한 하위 번호의 시험 코드(01번~22번)에 대해서는 우수한 검출 능력을 보였다. 하지만 하위 번호의 시험 코드보다 복잡도가 높고, 데이터 흐름을 변형한 상위 번호의 시험 코드(31번~84번)에 대해서는 보안 약점을 잘 검출하지 못했다.
의 2~5열에서 확인할 수 있다. 구획 난독화가 적용된 35,008개 시험 코드 중 8,795개의 시험 코드에서 보안 약점을 검출하였고 원본 시험 코드에 비해 1.42% 정도의 감소율을 나타내었다. 39개 보안 약점 중 Integer Overflow to Buffer Overflow에 대한 정적 분석 결과만 구획 난독화의 영향을 받았다.
제어 흐름 난독화 기법이 적용된 시험 코드는 원본 시험 코드에 비해 경로가 복잡해지고, 경로의 길이가 크게 길어졌다. 그렇기 때문에 대부분의 보안 약점에 대한 검출 성능에 영향이 있었으며, Clang 정적 분석 도구가 준수한 검출 성능을 나타내었던 메모리 누수 관련 보안 약점에 대한 검출 비율이 크게 감소하였다. 이는 소스 코드에 대한 정적 분석을 수행할 때 모든 경로에 대하여 분석을 수행하지 않기 때문인 것으로 보인다.
의 6~9열에서 확인할 수 있다. 데이터 난독화가 적용된 35,008개 시험 코드 중 8,921개 시험 코드에서 보안 약점을 검출하였고, 원본 시험 코드에 비해 0.01%의 감소율을 나타내었다. 39개 보안 약점 중 Expression Always True에 대한 정적 분석 결과만 데이터 난독화의 영향을 받았다.
본 논문에서는 검증된 시험 코드를 이용하여 Clang 정적 분석 도구의 보안 약점 검출 성능을 확인하였다. 원본 줄리엣 시험 코드에 대한 보안 약점 검출 결과를 통해 Clang 정적 분석 도구가 어떤 종류의 보안 약점을 잘 검출하지 못하는지 파악할 수 있다. 이를 통해 Clang 정적 분석 도구의 성능 향상을 위해 어떤 체커를 우선적으로 개발 및 보완해야 하는지 참고할 수 있다.
49%인 8,922개 시험 코드에 대하여 보안 약점을 검출하였다. 정적 분석 결과는 본 논문의 3.2절에서 설명한 줄리엣 시험 코드의 구성 방식의 영향을 받았다. Clang 정적 분석 도구는 상대적으로 복잡도가 낮고, 제어 흐름을 변형한 하위 번호의 시험 코드(01번~22번)에 대해서는 우수한 검출 능력을 보였다.
또한 소스 코드 난독화 기법인 구획 난독화, 데이터 난독화, 제어 흐름 난독화 기법이 적용된 각각의 시험 코드 집합에 대한 검출 결과를 확인하였다. 정적 분석 결과에 대한 분석을 통해 Clang 정적 분석 도구가 난독화로 인해 분석이 어려워진 환경에서 보안 약점 검출 성능이 어떻게 저하되는지 파악할 수 있다.
의 2~5열에서 확인할 수 있다. 제어 흐름 난독화가 35,008개 시험 코드 중 3,034개의 시험 코드에서 보안 약점을 검출하였고 원본 시험 코드에 비해 65.99% 정도의 감소율을 나타내었다. 제어 흐름 난독화 기법이 적용된 시험 코드는 원본 시험 코드에 비해 경로가 복잡해지고, 경로의 길이가 크게 길어졌다.
Clang 정적 분석 도구의 검출 성능은 심볼을 치환하는 방식을 사용하는 구획 난독화 기법과 데이터를 변환하는 방식을 사용하는 데이터 난독화 기법에는 큰 영향을 받지 않았다. 하지만 많은 수의 더미 코드와 복잡한 분기를 사용한 제어 흐름 난독화 기법이 적용된 시험 코드에 대해서는 전반적으로 검출 성능이 크게 감소함을 보였다.
후속연구
소스 코드 난독화 기법에 따른 Clang 정적 분석 도구의 성능 영향을 분석한 결과를 Clang의 체커 개발 및 성능 개선 과정에서 참고할 수 있을 것이라 생각한다. 더 나아가 난독화가 적용된 시험 코드가 가지는 특성을 이용하여 정적 분석 도구의 평가 기준으로 사용하거나 C/C++ 언어에 대한 시험 코드 개발 과정에서도 활용될 것으로 기대한다.
소스 코드 난독화 기법에 따른 Clang 정적 분석 도구의 성능 영향을 분석한 결과를 Clang의 체커 개발 및 성능 개선 과정에서 참고할 수 있을 것이라 생각한다. 더 나아가 난독화가 적용된 시험 코드가 가지는 특성을 이용하여 정적 분석 도구의 평가 기준으로 사용하거나 C/C++ 언어에 대한 시험 코드 개발 과정에서도 활용될 것으로 기대한다.
질의응답
핵심어
질문
논문에서 추출한 답변
수동적(manual) 정적 테스팅 기법의 단점은 무엇인가?
소프트웨어 검사(software inspection), 정적 분석(static analysis) 등의 정적 테스팅 기법을 사용하여 소프트웨어의 품질을 향상시킬 수 있다[14]. 수동적(manual) 정적 테스팅 기법인 소프트웨어 검사는 소프트웨어 문서 및 코드의 결함을 탐지하는 효과적인 방법이지만 일반적으로 여러 명의 프로그래머가 필요하므로 비용이 많이 든다[15]. 정적 분석은 주로 정적 분석 도구(static analysis tool)를 사용하여 자동화된 정적 테스팅을 수행하기 때문에 비용 측면에서 효율적이다.
구획 난독화 기법의 장점은 무엇인가?
구획 난독화 기법은 함수나 변수 등 식별자 이름을 변환하는 방식을 사용한다[11]. 프로그램의 성능에 적은 영향을 주는 장점이 있으며 간단하게 구현할 수 있다. 데이터 난독화 기법은 데이터의 형태나 구조를 변환하는 변수 분할, 문자열 암호화, 인코딩 형식 변환 등의 방법을 사용한다.
소프트웨어 취약점이란 무엇인가?
소프트웨어 취약점은 시스템 설계, 구현 또는 운영 관리에서 발생하는 결함 또는 약점으로[16], 공격자와 같은 위협 요소가 시스템 내부에서 승인되지 않은 작업을 수행할 때 악용될 수 있는 약점이다. 네트워크로 연결된 컴퓨터 시스템의 소프트웨어는 외부 에서 접근할 수 있으며, 악의적인 공격자가 소프트웨어 취약점을 이용하여 원격 공격을 수행할 수 있다 [17].
C. Lattner and V. Adve, "LLVM: A compilation framework for lifelong program analysis & transformation," International Symposium on. IEEE, pp. 75-86, Mar. 2004.
C. Collberg, C. Thomborson, and D. Low, "A Taxonomy of Obfuscating Transformations." Technical Report 148, Department of Computer Science, University of Auckland, Jul. 1997.
C. Wang, "A Security Architecture of Survivability Mechanisms," PhD thesis, Univ. of Virginia, School of Eng. and Applied Science, Oct. 2000.
Stunnix, http://stunnix.com/prod/cxxo.
G. Wroblewski, "General Method of Program Code Obfuscation," PhD thesis, Wroclaw University of Technology, Institute of Engineering Cybernetics, Oct. 2002.
M. Barr, Programming Embedded Systems in C and C++, Sebastopol, California: O'Reilly & Associates, Inc., Jan. 1999.
T. Nakashima, M. Oyama, H. Hisada, and N. Ishii, "Analysis of software bugcauses and its prevention," Information and Software Technology, vol. 41, no. 15, pp. 1059-1068, Dec. 1999.
V. Mashayekhi, J.M. Drake, W.T. Tsai, and J. Riedl, "Distributed, Collaborative Software Inspections," IEEE Software, vol. 10, no. 5, pp. 66-75, Sep. 1993.
R. Shirey, "Internet Security Glossary," Internet Engineering Task Force, RFC 2828, May. 2000.
H. Wang, C. Guo, D. Simon, and A. Zugenmaier, "Shield: Vulnerability-driven network filters for preventing known vulnerability exploits," In Proceedings of ACM SIGCOMM, Portland, OR, Aug. 2004.
N. Ayewah, D. Hovemeyer, J. D. Mor genthaler, J. Penix, and W. Pugh, "Using Static Analysis to Find Bugs," IEEE Software., vol. 25, no. 5, pp. 22-29, Sep. 2008.
K. Vorobyov and P. Krishna, "Comparing Model Checking and Static Program Analysis: A Case Study in Error Detection Approaches," in Proc. 5th Int. Workshop Syst. Softw. Verification, pp. 1-7. Mar. 2010.
D. Kroening and M. Tautschnig, "CBMC-C bounded model checker," In International Conference on Tools and Algorithms for Construction and Analysis of Systems, LNCS 8413, pp. 389-391, 2014.
C. Cifuentes and B. Scholz, "Parfait - designing a scalable bug checker," In Proceedings of the ACM SIGPLAN Static Analysis Workshop, pp. 4-11, Jun. 2008.
V. Okun, R. Gaucher, and P.E. Black, "Static Analysis Tool Exposition(SATE) 2008," NIST Special Publication 500-279, National Institute of Standards and Technology, Jun. 2009.
V. Okun, A. Delaitre, and P.E. Black, "The Second Static Analysis Tool Exposition (SATE) 2009," NIST Special Publication 500-287, National Institute of Standards and Technology, Jun. 2010.
V. Okun, A. Delaitre, and P.E. Black, editors, "Report on the Third Static Analysis Tool Exposition (SATE) 2010," NIST Special Publication 500-283, National Institute of Standards and Technology, Oct. 2011.
V. Okun, A. Delaitre, and P.E. Black, "Report on the Static Analysis Tool Exposition (SATE) IV," NIST Special Publication 500-297, National Institute of Standards and Technology, Jan. 2013.
SATEV, https://samate.nist.gov/SATE5.html.
D.E. Bakke, R. Parameswaran, D.M. Blough, A.A. Franz, and T.J. Palmer, "Data obfuscation: Anonymity and desensitization of usable data sets," IEEE Security and Privacy, vol. 2, no. 6, pp. 34-41, Nov. 2004.
C. Collberg, C. Thomborson, and D. Low, "Manufacturing cheap, resilient, and stealthy opaque constructs," In Proc. 25th. ACM Symposium on Principles of Programming Languages (POPL 1998), pp. 184-196, Jan. 1998.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.