Länsimaisia valtiotason suosituksia ohjelmistokehityksen muistiturvallisuudesta
Hakkarainen, Antti (2024)
Hakkarainen, Antti
2024
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ä
2024-06-07
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202405316545
https://urn.fi/URN:NBN:fi:tuni-202405316545
Tiivistelmä
C- ja C++ -ohjelmointikielet tarjoavat ohjelmoijalle mahdollisuuden manuaaliseen muistinhallintaan ja monissa tavanomaisissa tilanteissa myös edellyttävät sitä. Työssä käydään läpi C- ja C++ -kielien muistinkäsittelyä yleistasolla, muistinkäsittelyvirheistä aiheutuvat neljä yleisintä tietoturvahaavoittuvuustyyppiä ja kolme tuoretta länsimaista raporttia ohjelmistokehityksen muistiturvallisuuteen liittyen. Työn tavoitteena on selvittää, minkälaisia suosituksia muistiturvalliseen ohjelmistokehitykseen liittyen on viime aikoina julkaistu.
Mitre Corporationin ylläpitämän haavoittuvuustietokannan mukaan suurin osa ohjelmistojen tietoturvahaavoittuvuuksista aiheutuu C- ja C++ -ohjelmointikielien muistihaavoittuvuuksista. Yleisimmät haavoittuvuustyypit löydettiin selaamalla Mitren Internet-sivujen tietokantaa, ja valitsemalla vuosien 2019–2023 CWE Top25-listalta C:lle ja C++:lle spesifit muistinkäsittelyvirheisiin liittyvät haavoittuvuustyypit. Raportit valittiin tarkasteluun, koska ne ovat tuoreita ja sisältö vaikutti sopivan tutkimuskysymykseen. Raportit luettiin ja muistiturvallisen ohjelmistokehityksen suosituksista kirjoitettiin lyhyt yhteenveto.
Raportit suosittavat toteuttamaan jo olemassa olevien muistiturvattomilla ohjelmointikielillä toteutettujen ohjelmistojen uudet osat muistiturvallisilla ohjelmointikielillä, ja aloittamalla uudet ohjelmistoprojektit muistiturvallisilla ohjelmointikielillä. Tutkimuskysymykseen sopivaa kirjallisuutta etsittäessä havaittiin, että kotimaisia suosituksia muistiturvalliseen ohjelmointiin ei tällä hetkellä ole olemassa, eikä niitä ole ainakaan lähiaikoina tulossa. Sivujuonteena tarkastettiin myös suomalaisten korkeakoulujen opinnäytetöiden julkaisuarkistot ja etsittiin niistä muistiturvallisuutta käsitteleviä opinnäytetöitä, joita löytyi vain muutama.
Turvallinen ohjelmointi C- ja C++ -ohjelmointikielillä vaikuttaa lukujen valossa haastavalta. Suositusten noudattaminen saattaa vähentää muistinkäsittelyvirheiden aiheuttamien tietoturvaongelmien määrää ja niistä aiheutuvia kustannuksia. Lopuksi pohditaan, mihin suuntaan C++ mahdollisesti voi kehittyä, pitäisikö muistiturvallisuutta tutkia Suomessa enemmän ja onko korkeakoulujen syytä tarkastella ohjelmointikurssien muistiturvattomien ohjelmointikielien käytön järkevyyttä.
Mitre Corporationin ylläpitämän haavoittuvuustietokannan mukaan suurin osa ohjelmistojen tietoturvahaavoittuvuuksista aiheutuu C- ja C++ -ohjelmointikielien muistihaavoittuvuuksista. Yleisimmät haavoittuvuustyypit löydettiin selaamalla Mitren Internet-sivujen tietokantaa, ja valitsemalla vuosien 2019–2023 CWE Top25-listalta C:lle ja C++:lle spesifit muistinkäsittelyvirheisiin liittyvät haavoittuvuustyypit. Raportit valittiin tarkasteluun, koska ne ovat tuoreita ja sisältö vaikutti sopivan tutkimuskysymykseen. Raportit luettiin ja muistiturvallisen ohjelmistokehityksen suosituksista kirjoitettiin lyhyt yhteenveto.
Raportit suosittavat toteuttamaan jo olemassa olevien muistiturvattomilla ohjelmointikielillä toteutettujen ohjelmistojen uudet osat muistiturvallisilla ohjelmointikielillä, ja aloittamalla uudet ohjelmistoprojektit muistiturvallisilla ohjelmointikielillä. Tutkimuskysymykseen sopivaa kirjallisuutta etsittäessä havaittiin, että kotimaisia suosituksia muistiturvalliseen ohjelmointiin ei tällä hetkellä ole olemassa, eikä niitä ole ainakaan lähiaikoina tulossa. Sivujuonteena tarkastettiin myös suomalaisten korkeakoulujen opinnäytetöiden julkaisuarkistot ja etsittiin niistä muistiturvallisuutta käsitteleviä opinnäytetöitä, joita löytyi vain muutama.
Turvallinen ohjelmointi C- ja C++ -ohjelmointikielillä vaikuttaa lukujen valossa haastavalta. Suositusten noudattaminen saattaa vähentää muistinkäsittelyvirheiden aiheuttamien tietoturvaongelmien määrää ja niistä aiheutuvia kustannuksia. Lopuksi pohditaan, mihin suuntaan C++ mahdollisesti voi kehittyä, pitäisikö muistiturvallisuutta tutkia Suomessa enemmän ja onko korkeakoulujen syytä tarkastella ohjelmointikurssien muistiturvattomien ohjelmointikielien käytön järkevyyttä.
Kokoelmat
- Kandidaatintutkielmat [8717]