[논문 리뷰] A ground-truth dataset of real security patches
이 논문은 20개의 프로그래밍 언어와 146개의 CWE 유형을 포함한 1,339개 프로젝트에서 유래한 8,057개의 실제 보안 관련 커밋(에kv이알 5,942개의 보안 패치에 해당)을 포함한 대규모 실세계 기반 데이터셋을 제시한다. CVE Details, Secbench, Pontas et al., Big-Vul에서 수집한 데이터를 통합하고 보완함으로써, 저자들은 커밋 메시지, 주석, 요약문과 같은 자연어 자료, 코드 변경 사항, 메타데이터, 다운로드 가능한 코드베이스를 제공하며, 기계학습을 위한 110,000개의 비보안 커밋으로 구성된 음성 세트도 함께 제공하여 보안 취약성 탐지, 패치 분석, 보안을 위한 자연어 처리 연구를 가능하게 한다.
Training machine learning approaches for vulnerability identification and producing reliable tools to assist developers in implementing quality software -- free of vulnerabilities -- is challenging due to the lack of large datasets and real data. Researchers have been looking at these issues and building datasets. However, these datasets usually miss natural language artifacts and programming language diversity. We scraped the entire CVE details database for GitHub references and augmented the data with 3 security-related datasets. We used the data to create a ground-truth dataset of natural language artifacts (such as commit messages, commits comments, and summaries), meta-data and code changes. Our dataset integrates a total of 8057 security-relevant commits -- the equivalent to 5942 security patches -- from 1339 different projects spanning 146 different types of vulnerabilities and 20 languages. A dataset of 110k non-security-related commits is also provided. Data and scripts are all available on GitHub. Data is stored in a .CSV file. Codebases can be downloaded using our scripts. Our dataset is a valuable asset to answer research questions on different topics such as the identification of security-relevant information using NLP models; software engineering and security best practices; and, vulnerability detection and patching; and, security program analysis.
연구 동기 및 목표
- 보안 취약성 탐지 및 패치 적용 분야에서 기계학습 모델을 훈련하고 평가하기 위한 대규모 실세계 데이터셋의 부족 문제를 해결하기 위해.
- 기존 데이터셋의 한계, 즉 자연어 자료 누락, 프로그래밍 언어 다양성 부족, 코드베이스 접근성 부족 문제를 해결하기 위해.
- rich한 메타데이터, 자연어 콘텐츠, 코드 변경 사항을 포함한 통합된 정제된 확장된 보안 관련 커밋 데이터셋을 제공하기 위해.
- 재현 가능하고 오픈소스인 데이터셋을 통해 소프트웨어 공학 최적 실천 방법, 보안 패치 영향 분석, 자동화된 취약성 탐지 분야의 연구를 지원하기 위해.
제안 방법
- 연도별로 전체 CVE Details 데이터베이스를 웹 스크래핑하여 GitHub 커밋 참조를 포함한 CVE 메타데이터를 추출.
- Secbench, Pontas et al., Big-Vul과 같은 외부 3개 데이터셋을 통합하여 취약성 및 패치 정보를 보완.
- 수집된 커밋 URL을 이용해 GitHub에서 커밋 메타데이터(메시지, 저자, 날짜, 주석, 파일 변경 사항, 차이점, 부모 커밋 등)를 추출.
- 데이터 정제 및 중복 제거 작업을 수행하여 중복 항목 제거 및 패치 버전보다 앞선 브랜치 필터링.
- 각 커밋 내 파일 확장자를 기반으로 프로그래밍 언어를 분류하며, 실패율은 5% 미만.
- 감독 학습 기반 기계학습 작업을 위해 110,161개의 비보안 관련 커밋으로 구성된 음성 세트를 생성.
실험 결과
연구 질문
- RQ1커밋 메시지 및 주석과 같은 자연어 자료는 보안 관련 커밋을 식별하기 위한 모델 훈련에 신뢰성 있게 추출되고 활용될 수 있는가?
- RQ2실세계 오픈소스 프로젝트에서 보안 패치는 다양한 프로그래밍 언어와 취약성 유형(CWE) 간에 어떻게 다를 수 있는가?
- RQ3개발자들은 커밋 메시지와 코드 변경 사항에서 소프트웨어 공학 및 보안 최적 실천 방법을 어느 정도 준수하는가?
- RQ4제안된 데이터셋은 기계학습 모델의 보안 취약성 탐지 및 패치 생성 성능 향상과 일반화 능력 향상에 기여할 수 있는가?
- RQ5실세계 보안 패치의 구조적 및 언어적 특성은 무엇이며, 비보안 커밋과 어떻게 다를 수 있는가?
주요 결과
- 1,339개의 고유한 프로젝트에서 유래한 8,057개의 보안 관련 커밋이 포함되어 있으며, 이는 5,942개의 고유한 보안 패치에 해당한다.
- 이 커밋들은 146개의 서로 다른 CWE 유형과 20개의 프로그래밍 언어를 포함하여 기존 데이터셋의 다양성을 크게 확장한다.
- CVE 요약문, 커밋 메시지, 개발자 주석과 같은 포괄적인 자연어 자료가 포함되어 있어 자연어 처리 기반 연구를 가능하게 한다.
- 코드 변경 사항과 전체 코드베이스는 제공된 스크립트를 통해 다운로드 가능하여 저수준 프로그램 분석을 지원한다.
- 감독 학습 및 모델 평가를 위한 110,161개의 비보안 관련 커밋으로 구성된 음성 세트가 함께 제공된다.
- 이 데이터셋은 GitHub에서 공개적으로 이용 가능하며, 데이터 접근, 확장, 재현성을 위한 완전한 도구 세트를 제공한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.