Puskurin ylivuotovirhe

Puskurin ylivuotovirhe on tietokoneohjelmassa tapahtuva virhetilanne, jossa ohjelma tallentaa saamansa syötteen osittain sille varatun muistialueen ulkopuolelle. Virhe saattaa aiheuttaa merkittäviä vahinkoja ohjelman ja sitä suorittavan tietokonejärjestelmän toiminnalle. Puskurin ylivuotovirheet ovat olleet tärkein yksittäinen tekninen syy ohjelmissa ja käyttöjärjestelmissä esiintyville tietoturvaongelmille.[1][2]

Puskurin ylivuoto tapahtuu silloin, kun ohjelma kasvattaa tai vähentää muistialueeseen osoittavaa indeksiä niin suureksi tai pieneksi, että indeksi ei enää osoitakaan puskurille varatulle muistialueelle, vaan tallennettavat tietoalkiot ikään kuin vuotavat sen yli edellä tai jäljessä oleviin, muuhun käyttöön varattuihin muistipaikkoihin.[1]

Puskurin ylivuotovirhe aiheuttaa tietoturvaongelmia useimmin ohjelmissa, jotka on toteutettu suhteellisen matalan tason ohjelmointikielillä. Näissä ei useinkaan ole huomioitu muistialueiden suojaustarvetta ohjelman omilta, mutta asiaankuulumattomilta muokkauksilta. Näitä kieliä ovat muun muassa C ja C++. Useat kielet, kuten Java ja Lisp huolehtivat sisäisesti muistinhallinnasta ja ovat immuuneja puskurin ylivuotovirheille. Joskus kuitenkin nämä immuunitkin ohjelmointikielet saattavat altistua tälle ongelmalle, joko ajoympäristössä itsessään olevan ongelman takia (monet virtuaalikoneet on kirjoitettu C:llä tai C++:lla) tai C:llä tai C++:lla kirjoitettujen ulkoisten rutiinien kautta.[2]

Katso myös muokkaa

Lähteet muokkaa

  1. a b Buffer Overflow Attack cse.scu.edu. Viitattu 3.7.2018. (englanniksi)
  2. a b How security flaws work: The buffer overflow arstechnica.com. Viitattu 3.7.2018. (englanniksi)

Aiheesta muualla muokkaa