Skip to main content
QUICK REVIEW

[논문 리뷰] An Empirical Cybersecurity Evaluation of GitHub Copilot's Code Contributions

Hammond Pearce, Baleegh Ahmad|arXiv (Cornell University)|2021. 08. 20.
Advanced Malware Detection Techniques참고 문헌 20인용 수 14
한 줄 요약

이 연구는 MITRE의 Top 25에서 선정한 고위험 CWE를 대상으로 89개의 시나리오를 테스트하여 GitHub Copilot의 보안 위험을 평가한다. 분석 결과, 생성된 1,692개 프로그램 중 약 40%가 취약성을 포함하고 있으며, 이는 잠재적으로 버그가 있는 오픈소스 코드를 학습자료로 사용함으로써 AI 보조 코딩 환경에서 심각한 보안 우려를 암시한다.

ABSTRACT

There is burgeoning interest in designing AI-based systems to assist humans in designing computing systems, including tools that automatically generate computer code. The most notable of these comes in the form of the first self-described `AI pair programmer', GitHub Copilot, a language model trained over open-source GitHub code. However, code often contains bugs - and so, given the vast quantity of unvetted code that Copilot has processed, it is certain that the language model will have learned from exploitable, buggy code. This raises concerns on the security of Copilot's code contributions. In this work, we systematically investigate the prevalence and conditions that can cause GitHub Copilot to recommend insecure code. To perform this analysis we prompt Copilot to generate code in scenarios relevant to high-risk CWEs (e.g. those from MITRE's Top 25 list). We explore Copilot's performance on three distinct code generation axes -- examining how it performs given diversity of weaknesses, diversity of prompts, and diversity of domains. In total, we produce 89 different scenarios for Copilot to complete, producing 1,692 programs. Of these, we found approximately 40% to be vulnerable.

연구 동기 및 목표

  • GitHub Copilot의 출력물에서 비보안 코드의 빈도를 조사하여, 특히 고위험 보안 환경에서의 영향을 분석한다.
  • 다양한 프롬프트, 취약점 유형, 소프트웨어 도메인의 영향을 고려하여 Copilot가 비보안 코드를 생성할 가능성이 어떻게 달라지는지 평가한다.
  • Copilot가 오픈소스 코드를 학습자료로 사용할 경우, 이로 인해 악용 가능한 패턴을 학습하고 재현할 수 있는지 평가한다.

제안 방법

  • 연구는 MITRE의 Top 25 목록에서 선정한 고위험 CWE를 대상으로 89개의 고유한 코드 생성 시나리오를 설계하였다.
  • Copilot는 각 시나리오에 대해 코드 생성을 요청받아 총 1,692개의 프로그램을 생성하였다.
  • 정적 분석 및 알려진 보안 패턴 기반 수동 검토를 통해 생성된 코드의 취약성을 분석하였다.
  • 평가 과정에서는 세 가지 축에 따른 다양성을 고려하였다: 취약점 유형, 프롬프트 변형, 소프트웨어 도메인.
  • 취약성은 CWE 매핑 기준에 따라 분류되었으며, 알려진 악용 패턴과의 일치 여부를 검증하였다.
  • 다양한 설정에서 비보안 코드의 비율을 수치화하여 위험 요인을 식별하였다.

실험 결과

연구 질문

  • RQ1GitHub Copilot가 고위험 보안 시나리오에 대해 프롬프트가 주어졌을 때, 비보안 코드를 생성하는 비율은 얼마인가?
  • RQ2프롬프트의 다양성이 Copilot가 비보안 코드를 생성할 가능성을 어떻게 영향을 미치는가?
  • RQ3다른 소프트웨어 도메인은 Copilot의 코드 출력 보안 수준에 어느 정도의 영향을 미치는가?
  • RQ4어떤 유형의 CWE가 비보안 형태로 Copilot에 의해 가장 자주 생성되는가?

주요 결과

  • GitHub Copilot가 생성한 총 1,692개의 코드 샘플 중 약 40%가 알려진 보안 취약성에 취약한 것으로 확인되었다.
  • Copilot는 인젝션 결함 및 부적절한 액세스 제어를 포함한 시나리오에 대해 더 높은 비보안 코드 생성 경향을 보였다.
  • 연구는 프롬프트 변형이 취약성 비율에 상당한 영향을 미치며, 특정 표현 방식이 비보안 출력의 위험을 증가시킬 수 있음을 발견했다.
  • 입력 검증 및 인증과 관련된 일부 고위험 CWE는 비보안 형태로 비율적으로 더 자주 생성되었다.
  • 결과적으로, Copilot가 오픈소스 코드를 학습자료로 사용할 경우, 해당 데이터에 존재하는 비보안 패턴을 학습하고 재현할 수 있음을 시사한다.
  • 연구 결과는 AI 페어 프로그래밍 도구인 Copilot가 철저히 모니터링되지 않을 경우 보안 결함을 악성 방식으로 확산시킬 수 있음을 시사한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.