Cowi: Ja, man kan snyde med digital eksamen
Det er korrekt, at man kan snyde på den måde, som gruppen Hacklab har vist, meddeler Cowi nu, oven på Version2's historie om, at man med lidt teknisk snilde kan snyde sig til et godt resultat.
Men logfilerne vil afsløre et eventuelt snyderi, fortsætter Cowi i et notat om sagen, og sikkerheden er dermed i orden.
»Det kan lade sig gøre at hacke en multiple choice opgave, såfremt eleven er i stand til at huske den kode, som skal indtastes i adressefeltet i browservinduet, og gør dette ved hver eneste multiple choice-opgave. Alle svar logges i databasen, men af hensyn til systemets performance tjekkes det ikke under selve afviklingen af prøven, om der er sat flere krydser, end der er tilladt i den enkelte opgave. [?] Desuden er det muligt via tjek af alle transaktioner til webserverne at se, hvilken metode eleven har benyttet for at snyde. Det vil sige, at der er to steder, hvor snyd kan identificeres,« skriver Cowi således i notatet.
Den københavnske hackergruppe hacklab.dk, der afslørede hullet i afgangsprøven, har dog ikke meget til overs for argumentet om, at logfilerne afslører snyd.
»Det kommer i høj grad an på, hvordan de teknisk har implementeret deres logning. At dømme ud fra designet af selve testen kan man ikke andet end have mistro til deres kompetence med hensyn til design af en logningsfunktion. Det burde ikke være svært at logge de fulde besvarelser, men vi synes mest, det lugter af dygtig pressehåndtering,« skriver hacklab.dk således i en mail til Version2.
Ekspert: Logning er ikke godt nok Også sikkerhedsekspert Niels Bach fra konsulent- og revisionsfirmaet Deloitte er skeptisk over for, hvordan logfilerne i givet fald afslører snyd.
»Det er en fundamental fejltagelse, at man tror, at logning er det samme som sikkerhed. Logning giver i sig selv ingen sikkerhed, for logning finder først sted, når skaden sker. Logning som et element af sikkerheden kræver opfølgning og handling på hændelserne i loggen, hvilket er meget ressourcekrævende og alligevel ikke vil forhindre skader på samme måde som sikkerhed på serveren. Endvidere forudsætter det, at loggen indeholder den rigtige information om hvem, hvad, hvor og hvornår hændelsen er foretaget,« siger han.
Niels Bach er i øvrigt ikke imponeret over, at svarene valideres på klientsiden. Det er sikkerhedsmæssigt helt i skoven, lyder vurderingen.
»Sikkerhed skal ikke implementeres på klientsiden. Sikkerhed hører til på serversiden og funktionalitet på klientsiden,« siger sikkerhedseksperten.
Han giver det gode råd til udviklerne af prøven, at kontrol på klientsiden er til at hjælpe brugeren, for eksempel ved at tjekke, om et indtastet cpr-nummer er gyldigt, mens at al sikkerhed hører til på serveren.
»Rent teoretisk vil man aldrig kunne sikre noget ved at validere på klientsiden, og det skyldes, at trafikken sendes tilbage til serveren, og når data er nået forbi browseren, kan du begynde at manipulere med trafikken. Og så er det jo ligegyldigt, om du indfører 10.000 kontroller i browseren på klientsiden,« forklarer han videre.
Cowi: Endelig version er sikrere Cowi understreger i notatet, at hacklab.dk's metode er afprøvet på en test-version af prøven og ikke det rigtige system, der blev brugt til elevernes eksamen i dag.
»I forhold til eksempelprøven registres elevernes computerkommunikation ikke centralt. Det er vigtigt at understrege, at Eksempelprøvesystemet ikke er det samme system som anvendes til afvikling af Folkeskolens afgangsprøve. Systemet, der afvikler Folkeskolens afgangsprøve, registrerer al kommunikation mellem elev og prøvesystem, inklusiv elevens besvarelser, og enhver uregelmæssighed vil fremgå af det efterfølgende sikkerhedstjek af elevernes besvarelse,« skriver Cowi således.
Version2's kontaktperson i hacklab.dk har i dag deltaget i Folkeskolens Afgangsprøve, og han meddeler, at »alle opgaverne var af typer, man kunne snyde med, og systemet var det samme.«
Kommentarer (19)
I nogle tilfælde, afholdes prøverne uden netadgang, og browseren kører direkte på en USB nøgle. Jo, det er sandsynligvis nogle logfiler på computeren, men du kan nemt under browseren gå ind og slette alt der er logget.
Nej, de digitale prøver udføres på et site under undervisningsministeriets domæne, så uden netadgang kan du slet ikke tage denne type eksamen.
Det passer jo ikke at COWI siger man kan snyde med eksamen. De siger at enhver form for forsøg på snyd vil blive opdaget.
Og ham Deloitte manden der udtaler:
"Logning giver i sig selv ingen sikkerhed, for logning finder først sted, når skaden sker."
Det passer jo ikke! Skaden er først sket når man har bestået en elev der har snydt. Og det gør COWI ikke fordi de gemmer alt modtaget data og derefter behandler det og giver et resultat. Her bliver enhver form for snyd opdaget.
At de har lavet en bommert i demo-udgaven er en anden sag.
Come on v2 - man kan godt se hvor I vil hen med den her historie - desværre passer fakta ikke til de fantastiske overskrifter.
"Det er vigtigt at understrege, at Eksempelprøvesystemet ikke er det samme system som anvendes til afvikling af Folkeskolens afgangsprøve."
Jamen selvfølgelig - det giver rigtig god mening at udvikle to systemer. Et med en masse komplekst javascript, der samtidig er nemt at snyde, bare til demonstration, og et udelukkende baseret på server-validering, til endeligt brug ... der er sikkert et tredje system til brug ved salg, et fjerde til fejlfinding, og et femte som der rent faktisk bliver udviklet på ... eller, nej, det giver sgu ingen mening.
Og det at al kommunikation logges - vil det sige at samtlige post-requests gemmes? Det har jeg aldrig set gjort før, men hvorfor så overhovedet lave det her indviklede system med al den front-end javascript, hvorfor så ikke bare analysere de log-filer og lade vurderingen af besvarelsen bero på den?
Desværre er det sikkert tophemmeligt hvordan systemet er opbygget, en forretningshemmelighed som gør at ikke engang kravsspecifikationen er offentlig tilgængelig, og så går det hele bare op i diskussioner om hvem der kan råbe højest. Suk ...
Jamen selvfølgelig - det giver rigtig god mening at udvikle to systemer. Et med en masse komplekst javascript, der samtidig er nemt at snyde, bare til demonstration, og et udelukkende baseret på server-validering, til endeligt brug ... der er sikkert et tredje system til brug ved salg, et fjerde til fejlfinding, og et femte som der rent faktisk bliver udviklet på ... eller, nej, det giver sgu ingen mening.
Tillad mig at sige:
Det er fanme humor :)
(Bortset fra jeg ikke ved om jeg skal grine eller græde)
Jeg synes det er interessant, at man ikke har implementeret server-side validering on-the-fly af performancehensyn. Så vidt jeg har forstået, så er det ofte sådan, at det er databasen, der er flaskehalsen i de her type systemer, og valideringen kan jo i dette tilfælde laves, så den er rent CPU bundet. Det ville derfor være mit umiddelbare gæt, at en løsning med serverside-validering med mindre logging til følge, udover et renere databasedesign, ville give en performance-gevinst.
Det kan jeg så forstå ikke er tilfældet, så det kunne være interessant at høre præcist hvor meget performance man har hentet ved dette lidt eksotiske design. Man må jo antage, at udviklerne har undersøgt det nøje før de gik egne veje.
Denne løsning skyldes jo højst sandsynligt de performance-problemer, der var med systemet sidste år. Så er der en "kvik" medarbejder, der lige har tænkt at de da bare kan flytte valideringerne ud på klienterne i stedet for. Problem solved! Bare ærgeligt at der er opstået et nyt problem i stedet...
At lave robust software er en svær opgave som mange firmaer begiver sig ud i før de får det store pc-kørekort. Jeg vil derfor anbefale Skolestyrelsen at forsøge sig med Facebooks quizsystem til næste år. De benytter radiobuttons til multiple choice, og så kan man også få sin karakter på Twitter!
Det passer jo ikke at COWI siger man kan snyde med eksamen. De siger at enhver form for forsøg på snyd vil blive opdaget.
Når de siger at snyd vil blive opdaget, så har de da også implicit sagt at man kan snyde... De er så bare i den tro at de kan fange samtlige der forsøger at snyde...
Skaden er først sket når man har bestået en elev der har snydt. Og det gør COWI ikke fordi de gemmer alt modtaget data og derefter behandler det og giver et resultat. Her bliver enhver form for snyd opdaget.
Nu laver du da vist et par antagelser. Hvem siger at loggen er fuldstændig og fyldestgørende? Og stoler du på at den er det når Cowi ikke kan finde ud af at lave en sikker applikation til at starte med? Hvem skal iøvrigt sidde og gennemgå logs med en tættekam for at finde snyd for alle de mange tusinde afgangsprøver?
Er om COWI også ville have opdaget snyd, hvis ikke artiklen igår havde afsløret hvordan der kunne snydes.
Det svar far vi desværre ikke.
Personligt havde jeg nok ventet til karakterene var udleveret før jeg havde bragt nyheden, for på den måde at se om COWI pludselig fik travlt med at ro mod land...
Poul-Henning
Det relevante spørgsmål er om COWI også ville have opdaget snyd, hvis ikke artiklen igår havde afsløret hvordan der kunne snydes.
Enig. Og svaret er nok NEJ, for det virker pænt usandsynligt at de som en del af deres sikkerhedsstrategi ville gennemgå nogle logfiler som slet ikke egner sig til verificering af korrekt indhold. (Til det formål eksisterer nemlig opgavebesvarelserne som ikke fungerer efter hensigten.)
Jeg tror at formålet med at udgive nyheden to timer inden eksamen er at der er en minimal chance for at de tager fejlen seriøst og udbedrer den, i modsætning til hvis man giver den til dem bagefter, hvor man så kun kan få lov at hovere over hvår dårlige de er til HTML og JavaScript.
Nu laver du da vist et par antagelser. Hvem siger at loggen er fuldstændig og fyldestgørende?
Det siger såment COWI selv: "Alle svar logges i databasen.". Det vil sige at alle options gemmes i databasen og derfor er det en simpel sag at udpege dem der måtte have snydt.
Hvem skal iøvrigt sidde og gennemgå logs med en tættekam for at finde snyd for alle de mange tusinde afgangsprøver?
Da alle svar ligger i databasen ville jeg da kunne strikke et script sammen på ganske få minutter der fandt alle lømlerne.
Er der nogen der ved hvorledes den faktiske prøve fungerer? Jeg tænker på om man får et straks-resultat ligesom i demo'en. Hvis ikke kan man jo gå ud fra at demo'en blot er uheldigt lavet når karakteren skal udregnes. Men den praktiske kan jo fungere perfekt hvis den blot ser på hvilke options der er valgt.
<sarkasme value = "on">
Det er nemmere, eller måske mere overskueligt at lave en reaktiv analyse, fremfor en proaktiv vurdering.
</sarkasme>
Det siger såment COWI selv: "Alle svar logges i databasen.". Det vil sige at alle options gemmes i databasen og derfor er det en simpel sag at udpege dem der måtte have snydt.
Igen, så vil du have vi skal stole på hvad de siger med den trackrecord de har vist?
Da alle svar ligger i databasen ville jeg da kunne strikke et script sammen på ganske få minutter der fandt alle lømlerne.
Fint nok, nu antager vi så at dette er den eneste fejl der er i applikationen, og at man derfor kan lave et enkelt ultimativt script der finder alle snydere...
Jeg forholder mig så stadig til at COWI skriver det er MULIGT at checke alle transaktioner og at det er MULIGT at checke databasen for svar. Men de har tilsyneladende ikke fundet det relevant at lave en procedure der sikrer at disse kontroller udføres?
Performance har ikke en universel løsning.
Database intensive løsninger har en flaskehals på I/O, hvorimod beregningstunge løsninger har flaskehals på CPU .. osv
I min optik findes der ikke en endegyldig løsning.
Det passer jo ikke at COWI siger man kan snyde med eksamen. De siger at enhver form for forsøg på snyd vil blive opdaget.
Jo det gør! Det vil der altid være nogen der kan og vil og lykkes med - digital eksamen eller ej.
/Kim
Var der ikke een der nævnte, at det fremgik af clientside javascript, hvilke svar der var rigtige? Det var vist noget med, at kun det rigtige svar blev valideret.
Hvis det holder, så er logfilerne jo flintrende ligegyldige; Logfilerne kan jo ikke vise, om der er blevet kigget i websidens kilde.
Næh. Ekslusiviteten mellem radio-knapperne på klient-siden er styret med noget hjemmestrikket javascript. Man kan tvinge alle knapperne til at tage værdien true/afkrydset og så få sendt svaret til serveren. Serversidevalideringen er så tilsyneladende ufuldstændig/antager at klienten sender et regelret svar (altså, hvis der er hak i det rette svar, så kan der ikke være hak i de forkerte svar).
Hvis alle http requests svar gemmes i en log, så vil det umiddelbart være trivielt at finde regelbrud.
Ikke at jeg synes at COWI har gjort et flot stykke arbejde, men lad os nu heller ikke gøre historien bedre ved at udstille egen uvidenhed.

