- COMP.SEC.100
- 18. Turvallinen ohjelmistokehitys (SDL)
- 18.2 Muunnoksia turvallisen ohjelmistokehityksen mallista
Muunnoksia turvallisen ohjelmistokehityksen mallista¶
Mobiilijärjestelmät¶
Mobiilijärjestelmät eroavat tietokonejärjestelmistä muutamilla keskeisillä tavoilla, kuten paikallinen tallennusjärjestelmä, sovellustenvälinen kommunikointi, krypto-ohjelmistorajapintojen käyttö ja turvallinen verkkoyhteys.
Mobiilijärjestelmiin löytyy OWASPilta omat oppaansa, joita voidaan soveltaa ohjelmistokehityksessä. Näistä kukin ottaa huomioon mobiilijärjestelmien piirteet.
- OWASP Mobile Application Security Verification Standard (MASVS)
- Mobile Security Testing Guide (MSTG)
- Mobile App Security Checklist.
- Mobile Threat Model.
Pilviympäristöt¶
SAFECode on luonut oppaan ’Practices for Secure Development of Cloud Applications’ Oppaassa on kuusi pilviympäristöön liittyvää ominaisuutta, jotka pitää ohjelmistokehitysprosessissa huomioida.
- Useat samanaikaiset käyttäjät (multitenancy). Resursseja eriyttämällä useita käyttäjiä voi käyttää pilvipalvelua, mutta eriyttäminen edellyttää erityistä huolellisuutta toteutuksessa.
- Luottamuksellisen tiedon käsittely. Luonnollisesti tiedon salauksesta ja lainsäädännön noudattamisesta on huolehdittava. Käytännössä datan merkitsemiseen käytetään tokeneita, joiden avulla käyttöoikeuksia ja datan luokitusta pystytään hallitsemaan. Luottamuksellisen tiedon määrä on syytä minimoida vain sellaiseen, jolle on jokin todellinen tarve.
- Luotetut laskentaresurssit. Laskentaresursseilla tarkoitetaan tässä kokonaisuuksia, joilla pilvipalvelut pystytään tarjoamaan. Laskentaresurssit voivat olla joko loogisia tai fyysisiä, mutta niihin pitää pystyä luottamaan. Tällöin pitää huolehtia, että tarvittavat tietoturvamenetelmät ovat käytössä ja todennettavissa. Myös lainsäädännöllisiä vaatimuksia voi olla. Esimerkiksi organisaation tietosuojaseloste voi GDPR:n perusteella edellyttää, että tietoja ei luovuteta EU:n ulkopuolelle. Tällöin pitää huolehtia, että laskentaresurssit sijaitsevat fyysisesti EU:n alueella ja että niistä ei edelleen luovuteta tietoja.
- Tiedon kryptaaminen ja avaintenhallinta.
- Autentikointi ja identiteetinhallinta. Kun käytettään PaaS-ratkaisuja (Platform as a Service), ohjelmistokehittäjien on huomioitava, että ohjelmiston on autentikoitava itsensä ja käyttäjät palveluun. Kehittäjien on harkittava kertakirjautumisen järjestämistä.
Esineiden internet IoT¶
Esineiden Internet (Internet of Things, IoT) on muodostunut jatkuvasti kasvavaksi osaksi elämää. Se on osa erilaisia henkilökohtaisia laitteita (esim. TV, valaistus, kodinkoneet, hälytys- ja valvontajärjestelmät) sekä kiinteistöjen ohjausta ja luentaa (esim. vesimittarit, sähkömittarit, lämpöjärjestelmät, kulunvalvonta). Esineiden internetin tärkeä osa-alue on teollisuus ja sille on oma terminsä, teollisuuden esineiden internet (Industrial Internet of Things, IIoT).
Perinteisesti IoT-laitteiden tietoturva on ollut retuperällä. Laitteissa ei ole ollut salausta tai se on toteutettu puutteellisesti, laitteissa on ollut oletussalasanat tai ne ovat puuttuneet kokonaan, laitteiden ohjaukseen on käytetty turvatonta Telnet-protokollaa ja sen avulla laitteen kaappaus on onnistunut varsin helposti, laitteiden päivitys on ollut mahdotonta tai hyvin hankalaa sekä oletusasetukset ovat olleet pielessä. Onneksi näihin epäkohtiin on ajan myötä tullut parannusta, mutta edelleen IoT-laitteita valittaessa on tarpeen tarkastella tietoturvan peruspuutteita.
Ohjelmistokehityksessä ja IoT-järjestelmiä suunnitellessa pitää huomioida erityisesti seuraavat osa-alueet
- Voiko IoT-laitteisiin laittaa RFID-tageja? Niillä voidaan tunnistaa laitteet, vaikka niihin olisi hyökätty ja niiden tunnisteet muutettu.
- Oletussalasanojen käyttöä ei tule sallia IoT-laitteissa. Nämä voivat olla laitteelle yksilölliset ja satunnaiset tai niiden vaihto pitää pakottaa asennuksen yhteydessä.
- Katso, voiko IoT-laitteen liikennettä rajoittaa vain sovelluksen kannalta tarpeelliseen. Jos käytettävissä on erityinen laitteen valmistajan kuvaus (Manufacturer Usage Description, MUD), tämän pitäisi olla mahdollista.
- Huolehdi turvallisesta päivitettävyydestä. Turvallisissa päivityksissä IoT-laitteen pitää varmentaa päivityspalvelin.
Sähköinen kaupankäynti ja maksukortit¶
Maksukortit ovat houkutteleva hyökkäyskohde suuren suoran rahallisen edun vuoksi. Maksukorttiteollisuus (Payment Card Industry) on vastatoimena perustanut tietoturvastandardien neuvoston (Security Standards Council), joka puolestaan on säätänyt PCI DSS -standardin (Payment Card Industry Data Security Standard). PCI DSS:n noudattaminen on edellytys kaikille, jotka käsittelevät korttimaksuja. Standardi sisältää seuraavat 12 kohtaa:
- Asenna ja ylläpidä palomuuria ja sen asetuksia, joilla suojataan kortinhaltijoiden tietoja.
- Älä käytä oletussalasanoja tai muita oletusasetuksia.
- Suojaa kortinkäyttäjien tallennettuja tietoja.
- Salaa julkisen verkon kautta välitetyt kortinhaltijoiden tiedot.
- Käytä virustentorjuntaohjelmaa ja päivitä se jatkuvasti.
- Kehitä ja ylläpidä järjestelmien ja sovellusten turvallisuutta, mukaan lukien haavoittuvuuksien tunnistaminen ja vaikutusten vähentäminen.
- Rajoita pääsy kortinhaltijoiden tietoihin vain niille, joilla on liiketoiminnan perusteella tarve.
- Määritä yksilöllinen tunniste jokaiselle tietojärjestelmän käyttäjälle.
- Rajoita fyysinen pääsy kortinhaltijoiden tietoihin.
- Jäljitä ja monitoroi kaikki pääsy kortinhaltijoiden tietoihin.
- Testaa säännöllisesti tietoturvajärjestelmät ja prosessit.
- Ylläpidä tietoturvapolitiikkaa.
Viimeisenä¶
Meillä on runsaasti kursseja ohjelmistotuotannon alueelta. Esimerkiksi testauskurssin materiaalista voi saada käsityksen, miten monia asioita voidaan ja pitää ottaa huomioon. Käytännön ohjelmistotuotannossa ja varsinkin -liiketoiminnassa esiintyy yhä monia sellaisia käytäntöjä, jotka heikentävät tietoturvan mahdollisuuksia. “Löydä ja paikkaa” -sykli on yksi tällainen. Siitäkin on yritetty löytää hyviä puolia motivoimalla reikien löytämistä ja raportointia palkkioilla (ns. bug bounty -ohjelmat). Turvallisen ohjelmoinnin kurssi (Secure programming) on vuodesta 2008 alkaen ollut opintojaksona yhtenä Tietotekniikan vakiokursseista.