반응형
정적분석 도구 예시로 Clang 도구를 말하고, 동적분석 도구로는 Symbolic Execution을 예로 듬. 하지만 정적분석은 모든 코드를 커버하지 못한다는 단점이 있고. Symbolic Execution은 path-explosion의 이유로 큰 프로그램을 분석하기에는 적합하지않다는 단점이 있음.
Source lexing
유의미한 소스코드만 남기기위해서 lexing이라는 과정을 거치는데, 사실 이부분이 제일중요한거 같아서 읽을려고했지만 자세한 내용은 안들어있었다. 쓰여져있는건 주석부분 삭제... 최종적으로 소스코드를 156개의 토큰으로 표현 했다고 하는데, 그렇게 많은 C++ API들이 어떻게 이렇게 되는건지 별로 신뢰가 안간다. 또한 u32, uint32_t, UINT32, uint32, DWORD 같이 같은뜻을 가진 데이터형식은 하나로 통일했다고 한다.
Dataset
데이터에 대한 설명은 크게 안하겠지만 어떤 취약점을 다뤘는지만 그림으로 올린다
주로 데이터(버퍼오버플로우, 포인터 취약점) 취약점을 내포한 프로그램들을 사용했다.
방법론
아무래도 소스코드를 이용한 취약점탐지라서 NLP를 이용한다. 먼저 word2vec을 사용하고, CNN을 이용해 거친다음, RNN을 사용해서 dense layers를 생성한다.
(1) Embedding 작업: 13-dimensional representation
(2) Convolusion filter는 5 * 13 zmrlfh 512개의 필터를 사용
(3) RNN에서는 two-layer Gated Recurrent Unit with hidden size 256.
(4) dense layers에서는 50%의 drop-out을적용. 저자들은 softmax 2 layer이전에 64, 16 hidden layer를 적용했을때 성능이 가장좋게 나온다고 말함.
모델 그림
Evaluation
결과 예시
반응형
'Data > 논문 & 모델 정리' 카테고리의 다른 글
[Model] ResNet (0) | 2022.07.10 |
---|---|
[Model] SSD (Single Shot Detection) (0) | 2022.07.10 |
[Model] AlexNet 정리요약 (0) | 2022.07.10 |
[arxiv]Automated software vulnerability detection with machine learning (0) | 2018.09.17 |
[NDSS 2018] VulDeePecker: A Deep Learning-Based System for Vulnerability Detection (0) | 2018.08.29 |