자동취약점 탐지 관련 논문
이전에도 설명했지만 자동화 취약점 탐지에 제일 장점은 크게 세가지임
1. 사람의 노동이 필요하지않다
2. 값이 싸다
3. 취약점 탐지가 빠르다
본 논문에서는 두가지 방법으로 접근함
1. IR(Intermediate Representation)코드를 가지고 실험 [Build-based]
2. 소스코드를 가지고 실험 [Source-based]
소스코드를 컴파일하면
[소스코드] - [중간표현] - [기계어] 라는 과정이 있다.
첫번째 방법은 여기서 *중간표현 코드를 사용을 하였다고한다. (사실 컴파일러쪽 공부를안했다면 알아보기 힘듬)
*Clang의 LLVM 도구를 사용
1. Build-based
build-based에서는 두가지 feature를 사용하였음. 첫번째는 CFG(Control-Flow Graph), 두번째는 사용된 변수정보.
CFG같은경우는 그림 1(윗그림)과 같이 벡터화를 시켜서 연결된 블록은 1로 설정하고 아닐경우에는 0으로 설정
변수같은 경우에는 선언 & 실제사용을 벡터화 시켜서 대응할때는 1로 설정(솔직히 이 feature는 잘모르겠다..)
2. Source-based
Source-based는 소스코드에서 바로 그림2와 같이 lexing process한다(참고로 이 과정은 저자들이 직접만들어서 처리했다고 한다... 오픈소스로 공개하면 좋을꺼같다). 이후 Word2Vec을 적용하면 다음그림과 같이 타나난다.
try... catch단어로 봐도 잘 학습이 된거같다.
3. Model 사용
Source-based로는...
제일 처음에 저자들은 시작할때 Bag of words로 처리한 단어들의 벡터화데이터를 가지고 random-forest모델에 학습을 시킴(그림4에서 파랑색 화살표)
두번째로는 향상된 모델로 word2vec을 쓰고 TextCNN을 활용해서 구현하고 추가로 마지막에 FC(Fully-Connect)을하여 판단(빨간색 화살표)
세번째로는 FC가 아닌 다시 random-forest에 넣어서 학습(초록색 화살표)
Build-based로는...
4. 결과
1. Source-based에서는 TextCNN-Random Forest모델이 성능이 가장좋게나옴 (Table2)
2. Build-based는 Source-based보다 성능이 낮게 측정이됨 (Table2와 Table3의 비교)
3. Table4, 즉 source-based와 build-based를 혼합해서 사용한 결과
추가로...
'Data > 논문 & 모델 정리' 카테고리의 다른 글
[Model] ResNet (0) | 2022.07.10 |
---|---|
[Model] SSD (Single Shot Detection) (0) | 2022.07.10 |
[Model] AlexNet 정리요약 (0) | 2022.07.10 |
[arxiv]Automated Vulnerability Detection in Source Code Using Deep Representation Learning (0) | 2018.09.17 |
[NDSS 2018] VulDeePecker: A Deep Learning-Based System for Vulnerability Detection (0) | 2018.08.29 |