Muistinhallinnan haavoittuvuudet C- ja C++ -ohjelmoinnissa – aika siirtyä eteenpäin?
Majakangas, Reine Sofia (2025)
Majakangas, Reine Sofia
2025
Tietojenkäsittelytieteiden kandidaattiohjelma - Bachelor's Programme in Computer Sciences
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2025-08-08
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202508088143
https://urn.fi/URN:NBN:fi:tuni-202508088143
Tiivistelmä
Manuaalinen muistinhallinta C- ja C++ -kielissä mahdollistaa sen, että niillä tuotetut ohjelmistot sisältävät muistinhallintavirheistä johtuvia haavoittuvuuksia. Nämä haavoittuvuudet ja niiden vaikutukset ovat merkittäviä sekä yhteiskunnallisesta että ohjelmistoturvallisuuden näkökulmista.
Tämä tutkielma analysoi keskeisiä muistinhallintavirheitä, kuten muistialueen ylityksiä, vapautetun muistin käyttöä sekä virheellistä pino- ja kekomuistin käsittelyä. Tutkielma osoittaa, että merkittävä osa ohjelmistojen haavoittuvuuksista johtuu muistiturvallisuuden puutteista ja että nämä haavoittuvuudet ovat edelleen mahdollisia myös kriittisissä järjestelmissä.
Tutkielmassa arvioidaan myös olemassa olevia ratkaisuja muistiturvallisuuden parantamiseksi, kuten dynaamista analyysiä ja muistiturvallisia osoittimia, sekä niiden rajoituksia suorituskyvyn kannalta. Työssä esitellään myös muistiturvallisia vaihtoehtoja C- ja C++ -kielille, kuten Rust ja TrapC.
Tutkielman tulos on, että C- ja C++ -kielten käyttöön liittyy merkittäviä riskejä, joita ei voida täysin eliminoida kehitystyökaluilla tai ohjelmointikäytännöillä. Näin ollen siirtyminen muistiturvallisempiin ohjelmointikieliin on suositeltavaa erityisesti uusien ohjelmistojen kehityksessä.
Tämä tutkielma analysoi keskeisiä muistinhallintavirheitä, kuten muistialueen ylityksiä, vapautetun muistin käyttöä sekä virheellistä pino- ja kekomuistin käsittelyä. Tutkielma osoittaa, että merkittävä osa ohjelmistojen haavoittuvuuksista johtuu muistiturvallisuuden puutteista ja että nämä haavoittuvuudet ovat edelleen mahdollisia myös kriittisissä järjestelmissä.
Tutkielmassa arvioidaan myös olemassa olevia ratkaisuja muistiturvallisuuden parantamiseksi, kuten dynaamista analyysiä ja muistiturvallisia osoittimia, sekä niiden rajoituksia suorituskyvyn kannalta. Työssä esitellään myös muistiturvallisia vaihtoehtoja C- ja C++ -kielille, kuten Rust ja TrapC.
Tutkielman tulos on, että C- ja C++ -kielten käyttöön liittyy merkittäviä riskejä, joita ei voida täysin eliminoida kehitystyökaluilla tai ohjelmointikäytännöillä. Näin ollen siirtyminen muistiturvallisempiin ohjelmointikieliin on suositeltavaa erityisesti uusien ohjelmistojen kehityksessä.
Kokoelmat
- Kandidaatintutkielmat [11807]
