Meget overordnet kan man sige, at "brugertest", "user acceptance test", "integrationstest" og lignende har fokus på at teste softwares forventede funktionalitet, mens sikkerhedstestning har fokus på uønsket funktionalitet. Sikkerhedstestning handler blandt andet om, hvorvidt software kan bringes til at gøre noget uventet, ved at anvende softwaren på en måde man aldrig ville forvente af en ikke-ondsindet bruger, men derimod af en hacker. Selv en ikke-ondsindet bruger kan måske utilsigtet anvende den uønskede funktionalitet og skabe et sikkerhedsbrud. Der kan være overlap mellem de to grupper af tests, idet fx en brugertest kan vise uventet funktionalitet, som også kan føre til sikkerhedsbrud, men sikkerhedstestning er ikke fokusområdet i brugertests, hvorfor de ikke kan stå alene. Test med fokus på sikkerhed skal gå målrettet efter at finde al problematisk funktionalitet, og meget af den slags funktionalitet kan ikke findes af en almindelig bruger, da det kræver særlig viden om programmering, sårbarheder, og udnyttelse af sårbarheder.
Hvilke typer tests, der er relevante, kan være givet af selve projektet, fx er integrationstest givet, hvis der er tale om integrationer mellem it-systemer. En risikovurdering kan ligeledes vise særlige behov for både bestemte typer af tests og behov for særligt indhold i planlagte tests.
Følgende tests er grupperet efter, hvornår de normalt bliver gennemført (såfremt de er fundet relevante at gennemføre). Men det kan foregå helt anderledes afhængigt af organisationen, projekttypen og den anvendte projektstyringsmodel. Nogle tests vil det være naturligt at gennemføre flere steder i projektforløbet.
Allerede tidligt i design- og udviklingsfasen kan følgende overvejes:
- Test/undersøgelse af design med fokus på bevidst og ubevidst misbrug. Det sikres, at designet gør det muligt at efterleve krav i databeskyttelsesreglerne, og at behandlingen også kan stoppe (data kan slettes), når loven kræver det.
- Test/undersøgelse af design med fokus på, om det beskytter tilstrækkeligt imod, at brugerne uforvarende benytter personoplysninger til andre formål end det tiltænkte. Se punkt 72 om “Hovedelementerne i design- og standardindstillinger for formålsbegrænsning” i Det Europæiske Databeskyttelsesråds Retningslinjer 4/2019 om artikel 25, Version 2.0. Dette udføres, fordi data kan komme fra mange kilder, men for brugeren kan det være svært at gennemskue, hvornår oplysninger må anvendes og til hvilke formål. Når data overføres mellem it-systemer, vil det oprindelige formål med indsamlingen af personoplysningerne formentlig ikke fremstå klart for brugeren, hvilket kan medføre, at data anvendes i strid med formålet eller lovhjemmel.
- Kodegennemgang/code review udføres af en anden end den, som har udviklet koden. Der søges efter fejl, hardcodede adgangskoder og evt. baggøre, som en ondsindet udvikler bevidst har inkluderet i koden. Automatiseret kodegennemgang (fx ved hjælp af AI) kan udgøre et supplement, men kan ikke forventes at afsløre alle sikkerhedsmæssige problemer.
Visse tests er målrettet softwarens interaktion med andre it-systemer:
- Integrationstest er en meget almindelig test, som skal sikre, at integration mellem softwaremoduler eller mellem hele it-systemer fungerer. Ved udførsel af denne type test sikres fokus på, om der kan opstå problemer på grund af bl.a.:
- forskydninger i datasæt mellem systemerne,
- tidforsinkelser i synkronisering af data,
- overførsler med for få eller for mange data,
- langsomme overførsler af data,
- fejl i filtre i dataoverførsler mellem it-systemer,
- manglende reaktion fra nogle af it-systemerne på forespørgsler fra andre systemer,
- og andre hændelser, som kan resultere i sikkerhedsbrud.
Der testes også for, om ændringer i integration kan få indflydelse på gældende lovkrav til behandling af data, eksempelvis ved at data opbevares længere end nødvendigt, mv. Det betyder, at der også er fokus på andet end det, som kan give umiddelbare sikkerhedsbrud – ofte noget, som kan opstå over tid, uden at det bemærkes af brugerne. Hvis en ændring eksempelvis gør, at automatisk sletning af data ophører, kan det med tiden betyde, at der ophobes personoplysninger i strid med regler om dataminimering, sletning, mv.
Sikkerhedsbrud, der opstår i denne sammenhæng, kan være meget alvorlige, fordi de kan påvirke store datasæt og dermed mange personers oplysninger eller adgange. Nogle konkrete eksempler på problemer af denne type er nævnt i foranstaltningen Ændringsstyring. Se også punkt 79 om ”vigtigste design- og standardelementer vedrørende nøjagtighed” i Det Europæiske Databeskyttelsesråds Retningslinjer 4/2019 om artikel 25, Version 2.0.
- Test af log for, om der logges som forventet, og at logdata gemmes længe nok og kan tolkes korrekt med den aktuelle vejledning eller et dertilhørende it-system. Test af log udføres så vidt muligt som en "blindtest": (1) loggens indhold tolkes ud fra vejledningen uden viden om, hvilke handlinger der genererede loggens indhold. (2) Det sammenholdes med de faktisk udførte handlinger, hvor disse handleringer er udført af en anden person end den, der tolker loggen. "Handlinger" i denne forbindelse kan dog også være skabt af maskiner.
- Test af, om loggen indeholder unødige personoplysninger eller autentificeringsfaktorer (adgangskoder, session cookies, mv.), som kan misbruges af personer med legitim adgang til loggen, eller hvis loggen skulle blive kompromitteret af en hacker.
- Test af kryptering. Alt efter behovet kan det fx omfatte test af:
- Om adgangskoder opbevares envejs-krypteret (hashed).
- Om overførsler mellem netværk og backup-overførsler sker med krypteret transmission, eller om data krypteres inden overførsel.
- Om kommunikation over internettet til og fra en web-applikation sker med tilstrækkelig kryptering (se CFCS-skema over krypteringsmuligheder i vejledningen om Sikker brug af Transport Layer Security), og at det sikres, at denne ikke kan fravælges eller nedgraderes af brugeren. Nedgradering kan anvendes af hackere i ’Man in the Middle’-angreb for at gøre det nemmere at bryde krypteringen. ”Fravalg af kryptering” handler om, hvorvidt man kan fjerne ”s” i ”https”.
- Om krypterede data (i fx backup) kan dekrypteres.
Disse tests kan overvejes, så snart det er muligt at teste software i et it-miljø, der ligner det endelige driftsmiljø:
- Belastningstest med fokus på, om høj belastning kan gøre et system utilgængeligt, hvilket i nogle tilfælde kan udgøre en risiko for de registrerede, fx når en læge ikke kan tilgå patientjournaler. Overbelastning kan også i særlige situationer få it-systemer til at agere uventet og derved kompromittere personoplysningers fortrolighed eller integritet.
- Test for 'hardening'. Her er fokus på operativsystemer og andet it, som indgår i et samspil med den udviklede/indkøbte software. Servere, pc'er, netværksudstyr, mv. tjekkes for, om de har været igennem en 'hardening', som lukker for al unødig funktionalitet (services, porte, mv.), som måske ellers kunne misbruges. Se mere om dette i State of the art in it Security udgivet af ENISA og TeleTrusT.
- Test for læk af oplysninger, hvor det kontrolleres om brugerinput – og ikke-ondsindet input – kan give brugeren indirekte adgang til oplysninger, som kan misbruges.
Det kan fx være en applikation, som reagerer forskelligt afhængigt af input, og som derved afslører, om input er validt eller ej, hvorved brugeren kan prøve sig frem til validt input. Det kan være meget konkrete fejlmeddelelser, som afslører, hvordan applikationen fungerer. Ved AI (kunstig intelligens) kan det handle om brugerens mulighed for at afgive mange input med små variationer og derigennem afsløre bagvedliggende algoritmer eller datagrundlag – herunder personoplysninger.
- Test af, om opbevaring kan begrænses som forventet, jf. den opbevaringsbegrænsning, som skal gælde i it-systemet. Det kan komme af lovkrav, interne krav fastsat ud fra rammerne i fx databeskyttelsesforordningen eller ud fra et generelt behov for at minimere konsekvenser ved informationssikkerhedsbrud ved, at man minimerer de data, et potentielt brud ville kunne berøre. Det kan fx testes, om det er muligt at sætte og ændre slettetidspunkt/slettekriterie og, om personoplysninger faktisk slettes eller anonymiseres i henhold til tidspunktet/kriteriet. Se punkt 82 om “hovedelementerne i design- og standardindstillinger for opbevaringsbegrænsning” i Det Europæiske Databeskyttelsesråds Retningslinjer 4/2019 om artikel 25, Version 2.0.
Behovet for sletning/anonymisering kan ligge mange år ude i fremtiden, men udfordringer på dette punkt bør være afdækket og håndteret, inden den pågældende software erhverves og tages i brug. Dette omfatter også sletning af logdata.
Umiddelbart inden idriftsættelse er det relevant at teste væsentlige forretningsmæssige, driftsmæssige og sikkerhedsmæssige krav til softwaren, som er en forudsætning for, at produktet lever op til forventningerne:
- Brugerfejlstest ift. alle tænkelige typer fejl fra brugernes side, såvel klumrefejl som bevidst misbrug og anvendelse af softwaren til et andet formål end det tiltænkte/tilladte. Det inkluderer test af, om brugerne uden videre kan tilgå oplysninger, de ikke er autoriserede til, og om de kan ændre/slette oplysninger, de kun burde kunne læse. Dette kan udføres som en del af den normale brugertest.
Samme type test udføres også for ikke-personlige brugere, såsom RPA-brugere (Robotic Process Automation). Dette er vigtigt, fordi fejl ved brug af RPA ofte reproduceres i stort omfang og med ringere mulighed for at opdage fejl, da processen netop er automatiseret.
- Test for korrekt sessionsstyring/rettighedsstyring. Dette kan bl.a. omfatte:
- Test af, om der er de forventede adgangskontrolkrav (krav til login).
- Samtidighedsproblem, hvor to samtidige login resulterer i, at brugere får sammenblandet deres sessioner og dermed adgange.
- Overtagelse af forudgående brugers rettigheder ved anvendelse af samme computer til login.
- Test af, om man efter login kan tilgå data, der tilhører en anden bruger, fx ved at ændre i URL, session cookie, ’client side code’, eller ved at indtaste en anden persons personnummer (CPR-nr.)
Det er en type fejl, som bør opdages under udvikling, men sikkerhedsbrud forårsaget af denne type fejl er alligevel ofte forekommende.
Testen udføres på forhold, der ligner de endelige driftsforhold, idet fraværet af sådanne forhold i sig selv kan gøre, at et problem med sessionsstyring ikke opdages ved test.
- Test af, om alle standard adgangskoder i alle dele af it-systemet er fjernet eller udskiftet. Se mere om dette i State of the art in it Security udgivet af ENISA og TeleTrusT.
- Test af trådløse netværk. Det omfatter bl.a., om standardadgangskoder er udskiftet, og at muligheden for at administrere netværkene er stærkt begrænset. Se mere i State of the art in it Security udgivet af ENISA og TeleTrusT.
- Test for sårbarheder, som kan udnyttes af mere teknisk kyndige brugere eller af ondsindet software (malware). Testen omfatter (alt efter, hvad der er relevant) udviklet software, operativsystemer, tredjepartssoftware samt netværksudstyr, bl.a. routere og firewalls.
Testen erstatter ikke sikkerhedsmæssig opdatering (patchning), idet især nul-dags-sårbarheder skal lukkes hurtigst muligt, og en patch kan være tilgængelig før en opdateret sårbarhedsskanner vil kunne identificere samme sårbarhed.
- Penetreringstest, hvor der udnyttes konkrete eller ofte forekommende sårbarheder. Denne type test kan belaste og endda ødelægge it-systemer og netværk, så de bliver utilgængelige for de retmæssige brugere, og derfor skal disse risici afspejles i planlægningen og aftaler om, hvad der må blive berørt af testen. Det sikres evt., at der er en nylig backup, inden testen gennemføres, og at anvendelse af it-systemerne standses, så der ikke sker ændringer i data i testperioden.
Det er vigtigt at varsle relevant personale om testkørslen for at undgå unødig bekymring pga. alarmer, der viser reaktioner på tegn på indbrud i it-systemerne.
Resultatet af en penetreringstest gennemgås af tester og udvikler for at identificere falske positive og potentielle problemer, der ikke aktuelt udgør et problem i den eksisterende anvendelse af it-systemet. Dette kan kræve efterfølgende manuel test af noget, som et automatisk penetreringstestværktøj har detekteret.
Planlægning, prioritering og dokumentation af tests:
Overvej at indføre relevante tests i projektplanen. Projektplanen tilføjes i givet fald oplysninger om, hvordan og hvornår det kontrolleres af den dataansvarlige, om testen er udført og dokumenteret og relevante fejl udbedret.
Medtag evt. et særskilt punkt i projektplanen, som beskriver opgaven med at nedlukke test-systemet (præ-produktions-miljøer og lignende), når der overgås til produktion. Dette gøres dels for at undgå konflikter i fx systemintegrationer, som er testet mellem test-systemet og produktionssystemer, men også for at nedlukke et system, der ikke vedligeholdes sikkerhedsmæssigt og dermed på længere sigt kan komme til at udgøre en sikkerhedsrisiko.
Overvej hvilke tests der også bør udføres jævnligt efter tidspunktet for ibrugtagning af nyt it-system, fx for at finde sårbarheder, som er opdaget lang tid efter ibrugtagning. Dermed kan test for sårbarheder også fremgå af en kontrakt med en it-leverandør/databehandler, så det er denne, der skal holde øje med kendte sårbarheder (CVE’ere, Common Vulnerabilities and Exposures).
Alle tests og deres resultater bør dokumenteres for at holde styr på udbedring af fejl og begrundelser for ikke at udbedre bestemte fejl. Dokumentationen bør gemmes for at kunne identificere mangler ved testen, hvis der senere opstår brud på persondatasikkerheden, og dette brud skyldes en fejl, som burde være afsløret af testen. En del af dokumentationen kan være i form af logning, og denne log kan også være afgørende for at forstå fejlene.
Leverandørens prioritering af relevant sikkerhedsmæssig testning kan eksempelvis sikres gennem aftalevilkår, der stiller specifikke krav til typer af tests med fokus på it-sikkerhed og uønsket funktionalitet. Formuler kravene, så det kan kontrolleres, om de efterleves. Et krav om ”et sikkert login” er fx ikke konkret nok, men kan formuleres mere specifikt og målbart, eksempelvis at login ikke må kunne omgås ved "brute-force-angreb" (se Center For Cybersikkerheds ordforklaringer), eller at der skal være sikret imod ”injection” (se forklaring af begrebet i OWASP’s top ti).
Sørg for at der i projektplanlægningsfasen tages stilling til følgende for hver type test:
- Om krav til test med fokus på sikkerhed skal indgå i kontrakt, databehandleraftale eller udbudsbeskrivelse.
- I hvor høj grad test skal forberedes parallelt med udvikling af software for at sikre, at al funktionalitet kan nå at blive testet behørigt, også funktionalitet, som er skjult for brugere, eller som sjældent vil blive anvendt.
- Hvem der er ansvarlig for, at alle sandsynlige fejlscenarier identificeres.
- Om krav til test er defineret konkret nok til, at det kan konkrolleres, om krav er efterlevet.
- Hvilke tests, der skal udføres af leverandør/databehandler, og hvilke af dataansvarlig selv (der må gerne være overlap).
- Om der er tests, som bedst udføres af en tredjepart, fx fordi det kræver særlig viden.
- Hvordan test og testresultat dokumenteres, uanset hvem der udfører testen.
- Om test forudsætter anvendelse af personoplysninger. Læs mere i denne vejledning om personoplysninger som testdata.
- Hvordan adgangsrettigheder til testmiljøet styres. Læs mere om styring af adgangsrettigheder i denne vejledning.
- Hvordan og hvornår der skal slettes testdata, som indeholder personoplysninger eller andre beskyttelsesværdige data.
Særligt om teknologi som AI, RPA, ML:
Med teknologier som Artificial Intelligence (AI), Robotic Process Automation (RPA), Machine Learning (ML) kan det være særligt vanskeligt at sikre en fyldestgørende test. Hvis det ikke kan vurderes, om et it-system, der behandler personoplysninger, bliver testet fyldestgørende, kan det være tegn på manglende transparens i behandlingen, hvilket også kan være et problem ift. relevante retlige rammer for behandlingens lovlighed. Manglende evne til at definere en test kan dermed være et symptom på et mere fundamentalt problem. Det er en af grundene til, at det kan være en fordel at begynde at definere test, før en it-løsning udvikles, og sikre, at de mest væsentlige brugsscenarier og væsentligste risici testes på relevant vis.
Teknologierne udelukker ikke, at der kan testes ordentligt. Regelbaseret AI kan fx være konkret nok til at blive testet fyldestgørende, mens anden AI er mere uforudsigelig.
Der kan udføres test, som handler mere om at sikre, at forvaltningsretlige eller dataetiske hensyn ikke kompromitteres, men disse er ikke nærmere beskrevet her. Det kan fx handle om test af automatiserede behandlinger og behandlinger via AI, bl.a. med fokus på at undgå diskriminerende behandling af de registrerede. Se punkt 79 om ”vigtigste design- og standardelementer vedrørende nøjagtighed” i Det Europæiske Databeskyttelsesråds Retningslinjer 4/2019 om artikel 25, Version 2.0.