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 pilviympäristöön liittyviä ominaisuuksia, jotka pitää ohjelmistokehitysprosessissa huomioida.

  1. Useat samanaikaiset käyttäjät (multitenancy). Resursseja eriyttämällä käyttäjiä voi olla useita , mutta eriyttäminen edellyttää erityistä huolellisuutta toteutuksessa.
  2. 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.
  3. Luotetut laskentaresurssit. Laskentaresursseilla tarkoitetaan tässä kokonaisuuksia, joilla pilvipalvelu pystytään tarjoamaan. Ne 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.
  4. Tiedon kryptaaminen ja avaintenhallinta.
  5. Autentikointi ja identiteetinhallinta. Kun käytetää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

Esineiden Internet (Internet of Things, IoT) on muodostunut jatkuvasti kasvavaksi osaksi elämää. Se sisältää henkilökohtaisia laitteita (esim. TV, valaistus, kodinkoneet, hälytys- ja valvontajärjestelmät) ja kiinteistöjen tekniikkaa (esim. vesimittarit, sähkömittarit, lämpöjärjestelmät, kulunvalvonta). Esineiden internetin tärkeä osa-alue on teollisuus ja sille on oma terminsä, IIoT (Industrial Internet of Things).

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ä.
  • IoT-laitteen liikenne kannattaa 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.
  • Turvallinen päivitys edellyttää, että IoT-laite todentaa päivityspalvelimen. Miten pitkään päivityksiä on saatavilla?

Sähköinen kaupankäynti ja maksukortit

Maksukortit ovat houkutteleva hyökkäyskohde suoran rahallisen edun vuoksi. Maksukorttiteollisuus on vastatoimena perustanut tietoturvastandardien neuvoston, 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:

  1. Asenna ja ylläpidä palomuuria ja sen asetuksia, joilla suojataan kortinhaltijoiden tietoja.
  2. Älä käytä oletussalasanoja tai muita oletusasetuksia.
  3. Suojaa kortinkäyttäjien tallennettuja tietoja.
  4. Salaa julkisen verkon kautta välitetyt kortinhaltijoiden tiedot.
  5. Käytä virustentorjuntaohjelmaa ja päivitä se jatkuvasti.
  6. Kehitä ja ylläpidä järjestelmien ja sovellusten turvallisuutta, mukaan lukien haavoittuvuuksien tunnistaminen ja vaikutusten vähentäminen.
  7. Rajoita pääsy kortinhaltijoiden tietoihin vain niille, joilla on liiketoiminnan perusteella tarve.
  8. Määritä yksilöllinen tunniste jokaiselle tietojärjestelmän käyttäjälle.
  9. Rajoita fyysinen pääsy kortinhaltijoiden tietoihin.
  10. Jäljitä ja monitoroi kaikki pääsy kortinhaltijoiden tietoihin.
  11. Testaa säännöllisesti tietoturvajärjestelmät ja prosessit.
  12. Ylläpidä tietoturvapolitiikkaa.

Tekoälyn vaikutus turvalliseen ohjelmistokehitykseen

Tekoälyä voidaan käyttää koko ohjelmistokehitysprosessin ajan alkaen vaatimusten määrittelystä. Tyypillisesti tekoälypohjaiseen ohjelmistokehitykseen käytetään maksullisia ammattimaisia työkaluja, tekoälyagentteja ja MCP:tä (Model Context Protocol). MCP:llä tekoäly kytketään erilaisiin työkaluihin ja tietolähteisiin. Esimerkkinä työkalusta on Jira <https://www.atlassian.com/software/jira>-tehtävienseuranta ja tietolähteestä tiedot viimeisimmät haavoittuvuuksista.

Tekoälyagentti on itsenäinen ohjelmisto, joka vastaanottaa sille asetetun tavoitteen, tekee päätöksiä ja suorittaa monimutkaisia tehtäviä alusta loppuun asti ilman ihmisen jatkuvaa ohjausta. Tekoälyagenttien avulla ohjelmisto voidaan tehdä alusta loppuun asti. Tekoälyagentti voi itsenäisesti etsiä koodista virheitä, korjata ne ja testata tuloksen.

Vaikka tekoäly nopeuttaa tuotantoa ja ammattimaiset työkalut pyrkivät tekemään mahdollisimman turvallista koodia, vastuuta ei voi siirtää tekoälylle. Tämän vuoksi koodinkatselmointia tarvitaan edelleen. Tämän merkitys jopa korostuu, koska koodia tuotetaan aikaisempaa nopeammin. Edelleen tarvitaan ihmisiä, jotka ymmärtävät koodia ja erityisesti sen sisältämiä virheitä ja niiden korjaamista.

Tekoäly helpottaa myös hyökkääjiä löytämään virheitä ja hyödyntämään niitä. Näin ollen on tärkeää käyttää vastaavia työkaluja kuin hyökkääjät, jotta haavoittuvuudet korjataan ennen niiden hyväksikäyttöä. Tekoälypohjaisen penetraatiotestauksen merkitys korostuu.

Lopuksi

Tampereen yliopistossa 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 yhtenä Tietotekniikan vakiokursseista.

Valitse oikeat vaihtoehdot
Palautusta lähetetään...