Identifying common security vulnerabilities in LLM-generated code
Souris, Lia (2026)
Kandidaatintyö
Souris, Lia
2026
School of Engineering Science, Tietotekniikka
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi-fe2026021313341
https://urn.fi/URN:NBN:fi-fe2026021313341
Tiivistelmä
Large Language Models (LLMs) are increasingly being integrated into software development to support programming tasks. Tools like OpenAI's ChatGPT and GitHub Copilot enhance productivity but introduce security risks through their tendency to generate vulnerable code. This thesis systematically examines security vulnerabilities in LLMgenerated code using a literature-based Systematization of Knowledge (SoK) approach. The analysis of eight studies across multiple programming languages and LLM platforms identified four critical vulnerability categories: cryptographic and authentication weaknesses, input validation and injection flaws, memory safety errors, and insecure file and error handling. These vulnerabilities originate from LLMs replicating insecure patterns in their training data and exhibit language-specific characteristics. The study proposes a comprehensive security framework that incorporates mitigation strategies, including security-aware prompting, static analysis and human code review. Findings demonstrate that LLMs do not implement secure coding practices by default, requiring explicit security controls in development workflows to prevent deployment of vulnerable code. Suuret kielimallit ovat vakiinnuttaneet asemansa tehokkaina koodausapureina ohjelmistokehityksessä. OpenAIn ChatGPTn ja GitHub Copilotin kaltaiset työkalut voivat parantaa kehittäjien tuottavuutta, mutta samalla ne tuovat mukanaan merkittäviä tietoturvariskejä, koska niillä on taipumus tuottaa haavoittuvaa koodia. Tämä tutkielma tarkastelee järjestelmällisesti suurten kielimallien tuottaman koodin tietoturvahaavoittuvuuksia hyödyntäen kirjallisuuspohjaista Systematization of Knowledge (SoK) -lähestymistapaa. Kahdeksan tutkimuksen analyysi eri ohjelmointikielten ja kielimallialustojen välillä tunnisti neljä keskeistä haavoittuvuusluokkaa: salaus- ja todennusmekanismien heikkoudet, syötteen validointiin ja injektiohyökkäyksiin liittyvät virheet, muistiturvallisuusongelmat sekä puutteellinen tiedosto- ja virheenkäsittely. Havaitut haavoittuvuudet johtuvat osittain siitä, että kielimallit oppivat koulutusdatastaan myös epävarmoja ohjelmointikäytäntöjä ja toistavat niitä tuottamassaan koodissa. Lisäksi eri ohjelmointikielten erityispiirteet vaikuttavat siihen, millaisia virheitä syntyy. Tutkimus esittää kattavan tietoturvakehyksen, joka sisältää useita lieventämiskeinoja, kuten tietoturvatietoisen kehotteiden muotoilun, staattisen koodianalyysin sekä manuaalisen koodiarvioinnin. Tulokset osoittavat, etteivät kielimallit noudata turvallisia koodauskäytäntöjä automaattisesti, minkä vuoksi kehitysprosesseihin on sisällytettävä selkeitä tietoturvakontrolleja, jotta haavoittuva koodi ei päädy tuotantoon.
