Difference: 2008-27 (r3 vs. r2)

-- TuireTalvitie? - 23 Sep 2009

Tuire Talvitie:

Ohjelmistoturvallisuus, esimerkkinä Visual Studio 2005

1. Johdanto

Ohjelmistoturvallisuus on keskeinen osa tietoturvallisuutta. Ohjelmistojen uudet ominaisuudet voivat auttaa luomaan turvallisia ja vakaita Tekniikan nopean kehittymisen myötä ohjelmistoturvallisuus on tullut yhä ajankohtaisemmaksi. sovelluksia ja monien työkalujen ja parannusten käyttäminen vaatii usein vain vähän ylimääräistä työtä.

Työssä käsitellään Visual Studio 2005:n tietoturvaominaisuuksia suhteutettuna TLT-3201 Tietoturvallisuuden jatkokurssilla esitettyihin periaatteisiin. Visual Studio 2005 on Microsoftin valmistama ohjelmankehitysympäristö, joka tukee useita ohjelmointikieliä. Visual Studio 2005 -välineellä voidaan tehdä esimerkiksi mm. Windows-, web- ja mobiilisovelluksia, ja mobiilisovelluksia [1]. siihen voidaan myös integroida monien eri valmistajien täydennyksiä (msdn, 2008).

Tutkielma koostuu kuudesta neljästä osasta. Alkuosiossa määritellään ohjelmistoturvallisuus, pohjustetaan sen tärkeyttä ja Toisessa kappaleessa määritellään, mitä ohjelmistoturvallisuus pitää sisällään. esitellään Visual Studio 2005. Kolmannessa osiossa käsitellään turvallisten ohjelmien ohjelmistoturvallisuuden vastuualueita, tekemistä. Neljänneksi perehdytään lyhyesti ohjelmien käyttöön, ja viidennessä osiossa käsitellään lyhyesti pahojen ohjelmien karsimista. peilataan niitä luvun lopussa harjoitustyön esimerkkiin Visual Studio 2005:een. Kolmannessa kappaleessa on tarkoitus esitellä vastuualueet yleisellä tasolla ilman syvempää perehtymistä. Lopuksi on lyhyt yhteenveto käsitellyistä asioista. asioista ja mahdolliset päätelmät.

2. Ohjelmistoturvallisuus ja sen merkitys

2.1 Ohjelmistoturvallisuus käsitteenä

Koskisen mukaan tietoturvaongelmien ”kuorma” aiheutuu siitä, että tietokoneohjelmat tekevät jotain, mitä niiden ei pitäisi tehdä, ja siksi ohjelmistoturvallisuudeksi voidaankin kutsua niitä pyrkimyksiä, joilla tällaisilta vääryyksiltä voitaisiin välttyä [2]. Sassali opinnäytetyössään laskee ohjelmistoturvallisuuteen kuuluvaksi käytössä olevat käyttöjärjestelmät ja sovellusohjelmistot ja määrittelee tavoitteeksi varmistumisen ohjelmistojen laillisuudesta ja toimintavarmuudesta [4]. Sassalin käsityksiä vahvistaa myös Kajava, jonka mukaan ohjelmistoturvallisuudessa tarkastellaan yrityksen käyttämien tietokoneohjelmien suojaamiseen ja ohjelmien lisensointiin ja rekisteröintiin liittyviä asioita, ja sitä voidaan tarkastella joko ohjelmistojen sisäisten suojausominaisuuksien avulla tai erityisesti suojaamiseen tarkoitetulla ohjelmistolla [3].

Koskisen(2008) Ohjelmistoturvallisuuden mukaan tietoturvaongelmien ”kuorma” aiheutuu siitä, että tietokoneohjelmat tekevät jotain, mitä niiden ei pitäisi tehdä, ja siksi ohjelmistoturvallisuudeksi voidaankin kutsua niitä pyrkimyksiä, joilla tällaisilta vääryyksiltä voitaisiin välttyä. Sassali(2007) opinnäytetyössään laskee ohjelmistoturvallisuuteen kuuluvaksi käytössä olevat käyttöjärjestelmät ja sovellusohjelmistot ja määrittelee tavoitteeksi varmistumisen ohjelmistojen laillisuudesta ja toimintavarmuudesta. Sassalin käsityksiä vahvistaa myös Kajava(2001), jonka mukaan ohjelmistoturvallisuudessa tarkastellaan yrityksen käyttämien tietokoneohjelmien suojaamiseen ja ohjelmien lisensointiin ja rekisteröintiin liittyviä asioita, ja sitä voidaan tarkastella joko ohjelmistojen katsoa muodostuvat seuraavista: sisäisten suojausominaisuuksien avulla tai erityisesti suojaamiseen tarkoitetulla ohjelmistolla.

2.2 Ohjelmistoturvallisuuden merkitys ja tarve

  • ohjelmistojen ja tietokonearkkitehtuurin muodostamasta hierarkkisesta koneesta ja sen turvallisuudesta
  • sovelluksista ja niiden muodostamista ohjelmistoturvallisuuden eri osatekijöistä kuten käyttöjärjestelmistä ja niiden turvallisuudesta
  • kääntäjistä, tulkeista ja niiden turvallisuudesta
  • sovellusten omista tietoturvaominaisuuksista
  • tietokoneviruksista
  • ohjelmistojen sisältämistä salaporteista. [5]

Kajavan(2001) mielestä tietoturva on helppo saavuttaa ohjelmallisilla sekä teknillisillä ratkaisuilla, sillä ohjelmistot ja tiedostot voidaan suojata salauksella ja tiedonsiirrossa voidaan käyttää salauksen ohella tietoturvaa tukevia protokollia. Kajavan(2001) mukaan on oleellista ymmärtää ohjelmistoturvallisuuden merkitys osana tietoturvan hallintaa, ja tätä merkitystä tulisi myös korostaa henkilöstölle sekä järjestää siihen liittyvää valmennusta ja koulutusta. Ohjelmistoturvallisuuteen otetaan tässä työssä päänäkökulmaksi se, miten saadaan aikaan turvallisia ohjelmia, mutta työssä tutkitaan myös miten pahat ohjelmat voidaan karsia joukosta.

3. Ohjelmistoturvallisuuden vastuualueet

Turvallisten sovellusten luomisessa ongelmaksi saattaa tulla ajanpuute. Tietoturva pitää kuitenkin Ohjelmistoturvallisuuden vastuualueeseen lasketaan kuuluvaksi ohjelmistojen tunnistamis-, pääsynvalvonta, varmistusmenettelyt, eristäminen, tarkkailu- ottaa huomioon, kun teemme sovelluksia koskevia päätöksiä. Visual Studio 2005 on hyvä työkalu tällaisiin ongelmiin, sillä se sisältää ominaisuuksia, jotka voivat helpottaa turvallisten sovellusten julkaisemista huomattavasti ja saattaa tehostaa huomattavasti paljastustoimet, lokitiedon kerääminen, sovellusten tietoturvaa. Visual Studio 2005:n avulla ohjelmistojen kehittäjien turvallisuustoimet on entistä helpompaa kirjoittaa turvallisia ja vakaita sovelluksia (msdn, 2008). laadunvarmistus sekä niiden ylläpitoon ja päivitykseen liittyvät turvallisuustoimet. [5]

3. Turvallisten ohjelmien tekeminen

3.1 Tunnistamisvalvonta ja varmistusmenettelyt

3.1 Tietoturvallinen ohjelma

Tunnistamisominaisuuksia ohjelmistossa ovat vastapuolen tunnistus ja käyttöoikeuksien hallinta [5]. Tunnistamista voidaan ohjelmissa tehdä mm. avainten hallinnalla. Avaintenhallinta (key management) on toimintaa, jonka tarkoituksena on mahdollistaa avaimia edellyttävä kommunikaatiosuhde sellaiseen oikeutettujen osapuolten välillä. Avaimilla tarkoitetaan paitsi julkisia ja symmetrisiä avaimia, myös alustusarvoja ja muita kryptoalgoritmien parametreja. Avaimen turvatalletus, "key escrow", on järjestelmä jossa kolmas osapuoli pystyy saamaan selville kryptoavaimen. Tämä on hyvinkin tarpeellista, jos tärkeä avain (tai salasana) katoaa, tai ne jotka sen tietävät, ovat kykenemättömiä (tai haluttomia) kertomaan sitä. [2]

Kirjoitteilla olevan ohjelman tietoturvallisuuden varmistamiseksi on kolmenlaisia Julkisen avaimen infrastruktuuri voitaisiin rakentaa luotettavasti ylläpidettävien keinoja; hyviksi havaittujen ohjelmoinnin periaatteiden noudattaminen, huolellinen testaus ja formaalein menetelmin verifioiminen (Koskinen, 2008). Suurin osa alkuperäisestä koodista löydetyistä tietoturvaongelmista liittyy puskurin ylivuotoihin, jossa ohjelma tallentaa saamansa syötteen jaeltavien avain-nimi -luetteloiden varaan, mutta käytännössä varmennejärjestelmä PKI:lla tarkoitetaan sellaista järjestelmää, joka hallinnoi julkisia avaimia ja niiden varmenteita. [2] osittain sille varatun muistialueen ulkopuolelle.

Visual Studio 2005:n Buffer Security Check -kääntäjäasetus on suunniteltu auttamaan siinä, että haitalliseksi suunniteltua koodia voidaan estää hyödyntämästä puskurin ylivuotoja sovelluksissa, se asettaa salatun arvon puskurin loppuun ja arvo tarkistetaan koodin suorittamisen aikana (msdn, 2008). Arvon muuttuessa, ohjelman suoritus keskeytetään ja tehdään tietoturvapoikkeus, mikä pysäyttää mahdollisen kaappauksen (msdn, 2008). Visual Studio 2005:llä on lisäksi Safe CRT Libraries –kirjastot, jotka on suunniteltu parantamaan Visual Studio 2005:lla käännettyjen sovellusten tietoturvaa lisäämällä asianmukaiset puskurin tarkistukset hyökkäyksille tunnetusti alttiina oleville funktioille sekä heikentämällä tai poistamalla alttiina olevia suorituksenaikaisia funktioita (msdn, 2008).

3.2 Pääsynvalvonta

3.2 Liittymä turvapalveluihin, GSS-API

Pääsynvalvonnan tehtävänä on autentikoinnin lisäksi tarkastaa, mihin käyttäjällä on oikeudet, ja pitää huoli, että hän pysyy niiden rajoissa ja maksaa mahdolliset käyttömaksut. Politiikka voi edellyttää tietojen ja käyttäjien luokittelua eri ryhmiin ja kieltää sen mukaisesti pääsyjä. Tällaista keskusjohtoisesti asetettua pääsynvalvontaa sanotaan pakolliseksi pääsynvalvonnaksi ('mandatory access control', MAC). Pakollisen pääsynvalvonnan lisäksi voidaan soveltaa käyttäjien asettamia vapaaehtoisia oikeuksia. Tällainen käyttäjän hallinnoima pääsynvalvonta on tyypiltään harkinnanvarainen ('discretionary', DAC). Ilman sitä saman ryhmän toimijat eivät voisi varjella toisiltaan omia tietojaan. MAC:n ja DAC:n välimuotona voi näyttäytyä 'nondiscretionary controls', jolla tarkoitetaan rooli- tai tehtäväperustaista pääsynvalvontaa. Pääsynvalvonnan ryhmittelyrakenteen soveltaminen erityisesti sotilassovelluksissa lähtee liikkeelle "need-to-know" -periaatteesta, jossa kullekin pyritään järjestämään pääsy vain sellaiseen tietoon, joka on tarpeen tehtävien hoitamiseksi. [2]

Yleiskäyttöisen liittymän Pääsynvalvontaa voidaan kautta on saatavissa myös turvapalveluita esim. API, application programming interface (Koskinen, 2008), jonka avulla ohjelmoijan on helpompi toteuttaa tietoturvallisempia ohjelmia. Visual monilla menetelmillä, esimerkiksi Studio 2005:ssä Security in Zone rajoittaa IntelliSensen KeyNotella ?tarjoamat vaihtoehdot ja kääreohjelmilla. vain niihin API-liittymiin, jotka tietyllä alueella sallitaan, mikä auttaa osittaista luottamussuhdetta käyttävien sovellusten kehittäjiä valitsemaan vain ne API-liittymät, joiden tiedetään olevan sallittuja tietylle vyöhykkeelle (msdn, 2008). KeyNote? on ohjelma, jolla resurssien vartijat voivat "ajaa" käyttöoikeutta pyytävien toimittamia valtuustietoja ja tehdä päätelmän myönnetäänkö oikeus. Se on keino järjestää pääsynvalvonta sellaisessa hajautetussa järjestelmässä, jossa olisi vaikea rakentaa asianmukaista ACL:ää eli pääsylistaa. Ongelmana nimittäin voi olla, että resursseja halutaan antaa sellaistenkin käyttöön, joita ei alun perin tunneta. [2]

3.3 Kääreohjelmat ja krypto-ohjelmointi

Koskisen mukaan pääsynvalvontaa voi hoitaa ohjelmien ja resurssien väliin asennettavalla uudella ohjelmakerroksella eli kääreohjelmalla(wrapper). Laajasti ymmärrettynä wrapper -tekniikan voi ajatella tarjoavan monenlaista turvapalvelua, myös esim. Kerberos-autentikointi, SSL-salaus ja TCP -wrapper voidaan tulkita käärijöiksi. Kääreitä ei käytetä pelkästään suojautumaan pahantahtoisia vaan ainoastaan virheellisesti toimivia ajureita vastaan. Krypto-ohjelmien ytimenä on salaisena pidettävien avainten käsittely, kun turvataan arkojen tietojen kuljettamista tai pitkäaikaista säilytystä tai rakennetaan luottamusta erilaisten protokollien avulla. [2]

Koskisen (2008) mukaan pääsynvalvontaa voi hoitaa ohjelmien ja resurssien Kiinan muuri -malli koskee pääsynvalvonnan sääntöjä tilanteessa, jossa konsulttiyrityksellä väliin asennettavalla uudella ohjelmakerroksella eli kääreohjelmalla(wrapper). Laajasti ymmärrettynä wrapper -tekniikan voi ajatella tarjoavan monenlaista turvapalvelua, myös esim. Kerberos-autentikointi, SSL-salaus ja TCP -wrapper voidaan tulkita käärijöiksi (Koskinen, 2008). Kääreitä ei käytetä pelkästään suojautumaan pahantahtoisia vaan ainoastaan virheellisesti toimivia ajureita vastaan(Koskinen, 2008). Krypto-ohjelmien ytimenä on salaisena pidettävien avainten käsittely, kun turvataan arkojen tietojen kuljettamista tai pitkäaikaista säilytystä tai rakennetaan luottamusta erilaisten protokollien avulla(Koskinen, 2008). asiakkaina useita muita yrityksiä, joista osa on kilpailijoita keskenään. Tavoitteena on muotoilla tiedon luokitukset ja pääsyoikeudet siten, ettei pääse syntymään sellaista tietovuota, joka aiheuttaa intressien ristiriidan. [2]

PermCalc? on erillinen sovellus, jonka avulla .NET-kehittäjät analysoivat hallitun sovelluksen onnistuneeseen suorittamiseen vaadittavia käyttöoikeuksia, ja toiminto on nyt lisätty Visual Studio 2005:een (msdn, 2008). PermCalc?-apuohjelma tallentaa oletusarvot vyöhykkeelle, ja parantaa siten luotettavuutta.

3.3 Eristäminen

3.4 Koodin hämäännyttäminen

Jos järjestelmässä on moneen eri turvatasoon (tai turva-alueeseen) kuuluvia olioita, on selvää, että niitä pitää jotenkin pitää erossa toisistaan, jotta tietoa ei pääsisi kulkeutumaan pääsynvalvonnan tavoitteiden vastaisesti. Menetelmiä tähän tarkoitukseen ovat esimerkiksi:

Koodin luottamuksellisuuden suojamenettelyjen nimenä on hämäännyttäminen, 'code obfuscation'(Koskinen, 2008). Hämäännyttämisen onnistuminen on paljon kiinni siitä, miten arvaamattomalla tavalla sekoitus on tehty, ja sitä voidaan tehdä myös automaattisesti.(Koskinen, 2008). Hämäännyttämisen on teoriassa näytetty olevan mahdotonta, mutta joitakin hämäännyttämisen mekanismeja ovat: kryptatut tai pakatut koodin osat, joita ohjelma itse purkaa tarpeen mukaan, eheyden ym. tarkistusten tulosten vaikutusten hajauttaminen, turhat koodinosat, osoitteet yms. tai itseään muunteleva koodi, vakioiden paisuttaminen, bittien laittaminen tavujen pariteeteiksi: usean muuttujan multipleksaaminen yhteen, taulukoiden muunnokset, merkkijonojen piilottaminen: kokoaminen alijonoista tai satunnaisista merkeistä ja salaaminen jne.(Koskinen, 2008).

  • Kryptografinen erottelu: salattu tieto on hyödytöntä asiattomille. Pitää tietysti varoa, etteivät he pääse sotkemaan sitä. Lisäksi pitää huolehtia avainten päivittämisestä, kun turvakategorioiden jäsenistössä tapahtuu muutoksia.
  • Paloitteleva erottelu: olio jaetaan "käsittämättömiin" osiin jotka käsitellään eri paikoissa tai eri aikoina (tai: siirretään eri reittejä tai talletetaan eri paikkoihin). Tulokset yhdistämällä saadaan aikaan haluttu olion käsittelytulos.
  • Looginen erottelu, eristäminen: jokaisen olion "tietoisuus" rajoitetaan niihin kohteisiin, joihin niillä on oikeus. Tämän toteuttaa viitemonitori, joka käyttäen mm. rajattuja osoiteavaruuksia ja virtuaalimuistia. Ne ovat käypä keino myös silloin kun täytyy vain pitää erossa toisistaan samantasoisia eri käyttäjiä. [2]

Visual Studio 2005:ssä Piilokanavat ('covert' eli 'subliminal channels') ovat ilmiö, jolla erotteluja murretaan. Tietoa välitetään redundanssin tai jonkin oheisilmiön kautta niin, ettei sitä voi asiasta tietämätön havaita selkokielestäkään. [2] AppVerifier? on joukko suorituksenaikaisia analysointitestejä, jotka auttavat tunnistamaan ohjelmien suoritusvirheitä(msdn, 2008). Application Verifier -toiminnon tunnistamat virheet liittyvät yleensä sovellusten yhteensopivuuden, vakauden ja tietoturvan ongelmiin(msdn, 2008).

3.5 Ohjelmien todentaminen 3.4 Lokitiedon kerääminen, tarkkailu- ja paljastustoimet

Ohjelmien Tarkkailu- oikeaksi todistaminen on vaikeaa ja melkein mahdotonta. Todistuksia voivat tehdä automaattiset teoreemantodistajat tai paljastamistoimenpiteitä ovat mm. lokien pitäminen ja virustorjunta [5]. mallin tarkistajat(Koskinen, 2008). Voidaan tutkia vain joitain kriittisiä koodin vaiheita. Ohjelmakoodi voidaan myös varustaa todistuksella sen omasta oikeellisuudesta(Koskinen, 2008).

Code Analysis Loki tarkoittaa systemaattisesti pidettyä päiväkirjaa eli sellaista kirjanpitoa, johon on Visual Studio 2005:n koodinanalysointiominaisuus, joka analysoi aikajärjestyksessä lisätty merkintöjä tietynlaisista tapahtumista. Käyttöjärjestelmät lähdekoodia, käy läpi jokaisen funktion kaikki mahdolliset suorituspolut ja simuloi suoritusta arvioidakseen kunkin polun mahdolliset ongelmat (msdn, 2008). Koodin analysointi monet muut ohjelmat luovat lokeja. Ne ovat tärkeitä kun halutaan tietää, miten johonkin outoon tilanteeseen päädyttiin, vaikka kyseessä ei suorita koodia eikä pysty löytämään kaikkia mahdollisia virheitä, mutta se saattaa löytää sellaisia virheitä, jotka kääntäjä voi jättää huomiotta(msdn, 2008). olisikaan tahallinen tietoturvaloukkaus. Lokitiedostot ovat tyypillisesti hyvin suuria ja niiden lukemiseen ja tulkintaan tarvitaan yleensä erillisiä ohjelmia, vaikka ne voivatkin olla tekstimuotoisia. Sen lisäksi että asianmukaisia lokitietoja kerätään ja niitä jaksetaan ihmisvoiminkin tarkastella, hyökkääjän toimien havaitsemiseksi on oleellista, että lokeja ei pääse peukaloimaan. Erityisesti lokeihin kirjoittamisen pitäisi aina olla vain append -tyyppistä eli perään kirjoittamista. Lokitietoja voidaan käyttää tietojärjestelmään tunkeutumisen havaitsemisessa, jäljittämisessä ja syyllisten saamisessa vastuuseen siitä. [6]

3.6 Käyttäjäoikeuksista ja testauksesta

Tarkkailua toteutetaan mm. virustorjunnan avulla. Virustorjuntaohjelmia on laaja valikoima, ja oleellista on huolehtia, että virustorjunta on ajan tasalla. On olemassa myös tunkeilijan havaitsemisjärjestelmä, joka voi olla konekohtainen tai verkkopohjainen. IDS eli Intrusion Detection System on ohjelma tai joukko ohjelmia, joka tarkkailee tietojärjestelmää ja turvaloukkauksen havaitessaan raportoi siitä tai puuttuu siihen [2].

ClickOnce? on Visual Studio 2005:een rakennettu tekniikka, jonka avulla kehittäjien on helppo luoda sovelluksia otettavaksi käyttöön sellaisille käyttäjille, joiden tilien käyttöoikeudet ovat rajoitetut(msdn, 2008). Debug in Zone -ominaisuuden avulla kehittäjät voivat määrittää sovelluksen tarvitseman luottamuksen määrän suunnitellessaan sovellusta ja tehdessään sen virheenkorjauksen, mikä mahdollistaa sovelluksen testaamisen niin kuin se otettaisiin käyttöön verkkosijainnista eri luottamustasoja käyttäen. PermCalc? on taas erillinen sovellus, jonka avulla .NET-kehittäjät analysoivat hallitun sovelluksen onnistuneeseen suorittamiseen vaadittavia käyttöoikeuksia (msdn, 2008).

3.5 Laadunvarmistus

Yksikkötestauksen käyttötarkoitus Laadunvarmistusta ovat eheyden varmistaminen ja luotettavien ohjelmien hankinta sekä virustensuojaus. Tärkeissä ohjelmissa ja käyttöjärjestelmissä laadunvarmistumista on varmistaa, myös lähdekoodin hallussa pitäminen. Laadunvarmistaminen takaa hyvän toimintavarmuuden. Se myös pyrkii siihen, että menetelmän palautusarvo on odotettu sekä laitteet että ohjelmistot tulee jo suunnitteluvaiheessa tehdä luottamuksellisesti ja menetelmälle välitettyjen turvallisuusvaatimusten mukaisesti arvojen mukainen ja kuormituksen testaamisen avulla voit tehdä virheenkorjauksen skenaarioille, niiden tulee sisältää turvallisuusvaatimusten mukaiset toiminnot. [5] kuten mahdollisille palvelunestohyökkäyksille (msdn, 2008).

4. Ohjelmien käyttäminen

3.6 Tietoturvaominaisuudet Visual Studio 2005:ssä

Ohjelmistojen saatavuutta voidaan parantaa escrow -palvelulla, jossa ohjelmiston valmistajan asiakkaan lisäksi on kolmas osapuoli, joka tallettaa lähdekoodin ja luovuttaa sen asiakkaalle, jos valmistaja joutuu vaikeuksiin(Koskinen, 2008).

3.6.1 Käyttöoikeuksiin liittyvät tietoturvaominaisuudet

Kehittäjät ovat käyttäneet Tietokoneiden käyttäjät voivat estää haittaohjelmia vaikuttamasta järjestelmiinsä pienentämällä ohjelmien suorittamisen käyttöoikeustasoa. Järjestelmänvalvojan oikeuksilla haittaohjelma pystyy käyttämään kaikkia tietokoneen osia. Yleisen tietoturvan näkökulmasta järjestelmänvalvojan oikeuksia edellyttävää suorittamista tulee välttää. Lisäksi järjestelmänvalvojan oikeuksin kirjautuneet kehittäjät eivät huomaa ongelmia, jotka rajoitetumpia käyttöoikeuksia käyttävät käyttäjät kohtaavat suorittaessaan sovelluksen. Visual Studio 2005 on muutettu niin, että se toimii hyvin peruskäyttäjän käyttöoikeuksin. [1] FxCop?-erillistyökalua jo vuosien ajan tarkistaakseen, että kokoonpanot ovat .NET Framework Design Guidelines -ohjeiden mukaisia ja työkalu on sisäänrakennettuna Visual Studio 2005:ssä (msdn, 2008). FxCop? tekee analyysin jäsentämällä MSIL-komentovirran ja etsimällä kutsugraafista käyttäjän määrittämien sääntöjen rikkomuksia muun muassa tietoturvasääntöjä, kirjaston suunnittelusääntöjä sekä globalisoinnin, yhteentoimivuuden, ylläpidettävyyden, nimeämisen, suorituskyvyn, luotettavuuden ja käytön sääntöjä (msdn, 2008).

NET Framework Muitakin käyttöoikeusominaisuuksia -sovellukset suoritetaan Code Access Security -tietoturvamallin alaisuudessa, joka on tilanteeseen perustuva malli, jossa lisätty Visual Studio 2005:een. tietoturvaoikeudet myönnetään kokoonpanon sijainnin ja allekirjoituksen sekä muiden vastaavien tekijöiden perusteella (msdn, 2008). Näitä tekijöitä verrataan käytäntöön, joka on määritetty käyttäjän, koneen tai toimialueen tasolla (msdn, 2008). Näihin eri tekijöihin liittyvät käytännöt mahdollistavat sen, että sovellukset suoritetaan käyttäen erittäin tarkasti myönnettyjä käyttöoikeuksia, jota kuvataan osittaiseksi luottamussuhteeksi. ClickOnce on Visual Studio 2005:een rakennettu tekniikka, jonka avulla kehittäjien on helppo luoda sovelluksia otettavaksi käyttöön sellaisille käyttäjille, joiden tilien käyttöoikeudet ovat rajoitetut. Debug in Zone -ominaisuuden avulla kehittäjät voivat määrittää sovelluksen tarvitseman luottamuksen määrän suunnitellessaan sovellusta ja tehdessään sen virheenkorjauksen, mikä mahdollistaa sovelluksen testaamisen niin kuin se otettaisiin käyttöön verkkosijainnista eri luottamustasoja käyttäen. PermCalc on taas erillinen sovellus, jonka avulla kehittäjät analysoivat hallitun sovelluksen onnistuneeseen suorittamiseen vaadittavia käyttöoikeuksia. [1]

5. Pahojen ohjelmien karsinta

3.6.2 Tarkistuksiin ja virheisiin liittyvät tietoturvaominaisuudet

Paha ohjelma on sellainen, joka on kirjoitettu pahoissa aikeissa ja niitä voi olla itsenäisiä tai ne voivat tarvita isäntäohjelman. Esimerkiksi loogiset pommit, salaluukut, Troijan hevoset ja virukset tarvitsevat isäntäohjelman ja bakteerit ja madot ovat itsenäisiä. Yhteinen piirre kaikille pahoille ohjelmille on, että ne pystyvät yhtä monipuolisiin suorituksiin kuin muutkin ohjelmat siinä ympäristössä, jossa ne esiintyvät (Koskinen, 2006). Safe CRT Libraries -kirjastot parantavat käännettyjen sovellusten tietoturvaa lisäämällä asianmukaiset puskurin tarkistukset hyökkäyksille tunnetusti alttiina oleville funktioille sekä heikentämällä tai poistamalla alttiina olevia suorituksenaikaisia funktioita. [1]

Murtopakit ('rootkits') ovat taitavasti rakennettuja työkalukokoelmia, joiden avulla voidaan hyökätä automaattisesti tietokonejärjestelmiä vastaan sekä verkoitse että järjestelmän sisältä käsin (Koskinen, 2008). Murtopakin toiminnallisuudella on kolme eri päätarkoitusta, pääsymahdollisuuden ylläpitäminen, muihin järjestelmiin hyökkääminen ja todisteiden hävittäminen, ja lähtökohtana on saada järjestelmä toteuttamaan jokin komentojono ylikäyttäjän oikeuksin (Koskinen, 2008). AppVerifier on joukko suorituksenaikaisia analysointitestejä, jotka auttavat tunnistamaan ohjelmien suoritusvirheitä. Toiminnon tunnistamat virheet liittyvät yleensä sovellusten yhteensopivuuden, vakauden ja tietoturvan ongelmiin. [1]

Koskisen(2008) mukaan verkossa voisi olla oma automaattinen immuniteettijärjestelmä, joka alkaisi kehittää vasta-aineita heti, kun jokin paha ohjelma on havaittu ja tällä tavoin epidemiaa ei pääsisi syntymään. Buffer Security Check -kääntäjäasetus (/GS) auttaa estämään haitalliseksi suunniteltua koodia hyödyntämästä puskurin ylivuotoja sovelluksissa. Suuri osa koodin heikkouksista on puskurin ylivuotoja. Asetus asettaa salatun arvon (testiarvon) puskurin loppuun. Tämä arvo tarkistetaan koodin suorittamisen aikana. Jos arvo on muuttunut, ohjelman suoritus keskeytetään ja tehdään tietoturvapoikkeus. [1]

Yksi tapa, jolla tietokoneiden käyttäjät voivat estää haittaohjelmia vaikuttamasta järjestelmiinsä, on pienentää ohjelmien suorittamisen käyttöoikeustasoa. Aiemmissa Visual Studion versioissa oli vaikeaa luoda sovelluksia ja tehdä niiden virheenkorjaus, kun käytetyillä käyttäjätileillä oli rajalliset käyttöoikeudet. Tämä johtui siitä, että Visual Studio toimi itse parhaiten sellaisten käyttäjätilien kanssa, joilla on laajat käyttöoikeudet. Visual Studio 2005:ssä tätä on muutettu. Visual Studio 2005 toimii hyvin peruskäyttäjän käyttöoikeuksin, ja voit kehittää sovelluksia sekä tehdä niiden virheenkorjauksen tällä tavoin yhtä helposti kuin järjestelmänvalvojan tai virheenkorjauksen käyttöoikeuksilla. (msdn, 2008) Code Analysis on ohjelmistokehittäjille suunniteltu ominaisuus. Koodin analysointi ei suorita koodia eikä pysty löytämään kaikkia mahdollisia virheitä, mutta se saattaa löytää sellaisia virheitä, jotka kääntäjä voi jättää huomiotta. [1]

FxCop tekee analyysin jäsentämällä MSIL-komentovirran ja etsimällä kutsugraafista käyttäjän määrittämien sääntöjen rikkomuksia. Näitä sääntöjä ovat muun muassa tietoturvasäännöt, kirjaston suunnittelusäännöt sekä globalisoinnin, yhteen toimivuuden, ylläpidettävyyden, nimeämisen, suorituskyvyn, luotettavuuden ja käytön säännöt. [1]

3.6.3 Testauksiin liittyvät tietoturvaominaisuudet

Tietoturvaongelmien testaaminen on erittäin tärkeä osa sellaisen sovelluksen luomista, joka on tarkoitettu käytettäväksi verkkoon yhteydessä olevissa ympäristössä. Visual Studio 2005 sisältää useita testaustyökaluja. [1]

Yksikkötestauksen käyttötarkoitus on varmistaa, että menetelmän palautusarvo on odotettu ja menetelmälle välitettyjen arvojen mukainen. Yksikkötestien avulla voi lähettää satunnaista tietoa funktiolle ja varmistaa, että sovellus käsittelee tiedot oikealla tavalla ja toimii odotetusti. Lisäksi yksikkötesteissä voidaan ottaa käyttöön koodikattavuus. Koodikattavuus auttaa varmistamaan, että sovelluksen koodi on testattu. Kuormituksen (suorituskyvyn) testaaminen on tärkeää, koska sen avulla voi tehdä virheenkorjauksen skenaarioille, kuten mahdollisille palvelunestohyökkäyksille. [1]

3.6.4 Muita tietoturvaominaisuuksia

Yleiskäyttöisen liittymän kautta on saatavissa myös turvapalveluita esim. API, application programming interface, jonka avulla ohjelmoijan on helpompi toteuttaa tietoturvallisempia ohjelmia [2]. Visual Studio 2005:ssä Security in Zone rajoittaa IntelliSensen? tarjoamat vaihtoehdot vain niihin API -liittymiin, jotka tietyllä alueella sallitaan, mikä auttaa osittaista luottamussuhdetta käyttävien sovellusten kehittäjiä valitsemaan vain ne API -liittymät, joiden tiedetään olevan sallittuja tietylle vyöhykkeelle. [1]

5. Yhteenveto

Tutkielma Harjoitustyö osoittaa, että ohjelmistoturvallisuutta voidaan parantaa huomattavasti erilaisten apuohjelmien ja työkalujen avulla. Erilaisten ominaisuuksien avulla voidaan saadaan aikaan turvallisia ohjelmia pienellä vaivalla. hallita paremmin käyttöoikeuksia, tehostaa tarkistuksia ja esimerkiksi huomata helpommin virheet koodissa. Visual Studio 2005 on hyvä esimerkki toimivasta ohjelmankehitysympäristöstä, joka parantaa ohjelmien luotettavuutta, turvallisuutta ja edellisten myötä myös laadukkuutta. Microsoft on jo nyt julkistanut uusia Visual Studio 2005:n kaltaisia ohjelmankehitysympäristöjä, jotka ovat kehittyneempiä kuin aikaisemmat versiot, joten versiot. Lisäksi monien työkalujen ja parannusten käyttäminen helpottuu jatkuvasti. Edellisten perusteella voimme päätellä, että ohjelmankehitysympäristöjen kehitys ja luonti tulevaisuudessa todennäköisesti kasvaa lisääntyvät entisestään. Uudet ominaisuudet voivat piankin olla jopa edelläkävijöitä markkinoilla.

Lähteet

  • Sassali, H. Doing Business Safety in Russia – opinnäytetyö. Viitattu 28.9.2008.

View topic | View difference side by side | History: r5 < r4 < r3 < r2 | More topic actions
 
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback