Tietoturvaraporttien yhteenmuotoilu
Pohjola, Otso (2019)
Pohjola, Otso
2019
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-201905088163
https://urn.fi/URN:NBN:fi:amk-201905088163
Tiivistelmä
Insinöörityön aiheena oli tietoturvatyökalujen raporttien standardointi. Työ tehtiin olemassa olevaan sovellustietoturvaprojektiin Accenturelle, jossa tarvittiin tapa käsitellä eri tietoturvaraporttien tietoja yhdessä järjestelmässä. Työn ohessa oli tarkoitus tutustua erilaisiin tietoturvaskannereihin sekä niiden raportteihin, ja se toteutettiin Django-nimisellä Python-ohjelmistokehyksellä.
Työhön valitut skannerit edustavat eri tapoja tehdä sovellustietoturvaan liittyviä testejä. Kun staattiset työkalut SonarQube, DependencyCheck ja Retire.js etsivät lähdekoodista haavoittuvuuksia, Zed Attack Proxy, OpenVAS ja Retina taas testaavat käynnissä olevaa ohjelmaa muun muassa simuloimalla hyökkäyksiä. Raportteja tarkastellessa huomattiin kuitenkin niiden olevan keskenään sisällöllisesti hyvin samanlaisia. Yhteisen rakenteen suunnittelussa päädyttiin laittamaan havaintotiedot yhteen luokkaan tyypitettyihin aliluokkiin jakamisen sijaan, jotta ohjelman jatkokehitys pysyisi mutkattomana.
Jäsentimiä varten luotiin abstrakti luokka, joka toteuttaa niiden tietojen tallentamisen ja raporttien esikäsittelyn. Siitä periytyy jokaiselle työn tietoturvaskannerille oma käsittelijänsä, jonka toteutus vastaa aina kunkin raportin muotoa ja sisältöä. Kolmelle eri skannerille nämä koodattiin kahdella eri tavalla, joista pyrittiin valitsemaan parempi vertailemalla eri toteutustapojen ajan- ja muistinkäyttöä. Ensimmäinen tapa perustui tavallisiin for-silmukoihin, ja jälkimmäinen Pythonin generaattoreihin. Generaattoritoteutus päätettiin ottaa käyttöön projektissa sen vähän paremman suorituskyvyn takia.
Kehitettyjä jäsentimiä ja rakenteita tullaan käyttämään havaintojen visualisointiin ja hallinnointiin. Myös havaintojen kaksoiskappaleiden poistamiseen sekä uusien työkalujen liittämiseen tullaan paneutumaan jatkokehityksessä.
Työhön valitut skannerit edustavat eri tapoja tehdä sovellustietoturvaan liittyviä testejä. Kun staattiset työkalut SonarQube, DependencyCheck ja Retire.js etsivät lähdekoodista haavoittuvuuksia, Zed Attack Proxy, OpenVAS ja Retina taas testaavat käynnissä olevaa ohjelmaa muun muassa simuloimalla hyökkäyksiä. Raportteja tarkastellessa huomattiin kuitenkin niiden olevan keskenään sisällöllisesti hyvin samanlaisia. Yhteisen rakenteen suunnittelussa päädyttiin laittamaan havaintotiedot yhteen luokkaan tyypitettyihin aliluokkiin jakamisen sijaan, jotta ohjelman jatkokehitys pysyisi mutkattomana.
Jäsentimiä varten luotiin abstrakti luokka, joka toteuttaa niiden tietojen tallentamisen ja raporttien esikäsittelyn. Siitä periytyy jokaiselle työn tietoturvaskannerille oma käsittelijänsä, jonka toteutus vastaa aina kunkin raportin muotoa ja sisältöä. Kolmelle eri skannerille nämä koodattiin kahdella eri tavalla, joista pyrittiin valitsemaan parempi vertailemalla eri toteutustapojen ajan- ja muistinkäyttöä. Ensimmäinen tapa perustui tavallisiin for-silmukoihin, ja jälkimmäinen Pythonin generaattoreihin. Generaattoritoteutus päätettiin ottaa käyttöön projektissa sen vähän paremman suorituskyvyn takia.
Kehitettyjä jäsentimiä ja rakenteita tullaan käyttämään havaintojen visualisointiin ja hallinnointiin. Myös havaintojen kaksoiskappaleiden poistamiseen sekä uusien työkalujen liittämiseen tullaan paneutumaan jatkokehityksessä.