Security Weaknesses of Copilot-Generated Code in GitHub Projects: An Empirical Study

Fuente: arXiv
Saved in:
Bibliographic Details
Main Authors: Fu, Yujia, Liang, Peng, Tahir, Amjed, Li, Zengyang, Shahin, Mojtaba, Yu, Jiaxin, Chen, Jinfu
Format: Preprint
Published: 2023
Subjects:
Online Access:
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866915140462444544
author Fu, Yujia
Liang, Peng
Tahir, Amjed
Li, Zengyang
Shahin, Mojtaba
Yu, Jiaxin
Chen, Jinfu
author_facet Fu, Yujia
Liang, Peng
Tahir, Amjed
Li, Zengyang
Shahin, Mojtaba
Yu, Jiaxin
Chen, Jinfu
contents Modern code generation tools utilizing AI models like Large Language Models (LLMs) have gained increased popularity due to their ability to produce functional code. However, their usage presents security challenges, often resulting in insecure code merging into the code base. Thus, evaluating the quality of generated code, especially its security, is crucial. While prior research explored various aspects of code generation, the focus on security has been limited, mostly examining code produced in controlled environments rather than open source development scenarios. To address this gap, we conducted an empirical study, analyzing code snippets generated by GitHub Copilot and two other AI code generation tools (i.e., CodeWhisperer and Codeium) from GitHub projects. Our analysis identified 733 snippets, revealing a high likelihood of security weaknesses, with 29.5% of Python and 24.2% of JavaScript snippets affected. These issues span 43 Common Weakness Enumeration (CWE) categories, including significant ones like CWE-330: Use of Insufficiently Random Values, CWE-94: Improper Control of Generation of Code, and CWE-79: Cross-site Scripting. Notably, eight of those CWEs are among the 2023 CWE Top-25, highlighting their severity. We further examined using Copilot Chat to fix security issues in Copilot-generated code by providing Copilot Chat with warning messages from the static analysis tools, and up to 55.5% of the security issues can be fixed. We finally provide the suggestions for mitigating security issues in generated code.
format Preprint
id arxiv_https___arxiv_org_abs_2310_02059
institution arXiv
publishDate 2023
record_format arxiv
spellingShingle Security Weaknesses of Copilot-Generated Code in GitHub Projects: An Empirical Study
Fu, Yujia
Liang, Peng
Tahir, Amjed
Li, Zengyang
Shahin, Mojtaba
Yu, Jiaxin
Chen, Jinfu
Software Engineering
Cryptography and Security
Modern code generation tools utilizing AI models like Large Language Models (LLMs) have gained increased popularity due to their ability to produce functional code. However, their usage presents security challenges, often resulting in insecure code merging into the code base. Thus, evaluating the quality of generated code, especially its security, is crucial. While prior research explored various aspects of code generation, the focus on security has been limited, mostly examining code produced in controlled environments rather than open source development scenarios. To address this gap, we conducted an empirical study, analyzing code snippets generated by GitHub Copilot and two other AI code generation tools (i.e., CodeWhisperer and Codeium) from GitHub projects. Our analysis identified 733 snippets, revealing a high likelihood of security weaknesses, with 29.5% of Python and 24.2% of JavaScript snippets affected. These issues span 43 Common Weakness Enumeration (CWE) categories, including significant ones like CWE-330: Use of Insufficiently Random Values, CWE-94: Improper Control of Generation of Code, and CWE-79: Cross-site Scripting. Notably, eight of those CWEs are among the 2023 CWE Top-25, highlighting their severity. We further examined using Copilot Chat to fix security issues in Copilot-generated code by providing Copilot Chat with warning messages from the static analysis tools, and up to 55.5% of the security issues can be fixed. We finally provide the suggestions for mitigating security issues in generated code.
title Security Weaknesses of Copilot-Generated Code in GitHub Projects: An Empirical Study
topic Software Engineering
Cryptography and Security
url https://arxiv.org/abs/2310.02059