Folkeskolens afgangsprøve hacket: Fri adgang til snyd

Opdateret kl. 12.52. Den københavnske gruppe Hacklab kan efter eget udsagn snyde sig til en 80 procent korrekt besvarelse af folkeskolens elektroniske afgangsprøve, der finder sted onsdag og torsdag.

Den københavnske gruppe Hacklab hævder at have vist vejen for snyd og fusk i skolernes elektroniske 9. klasses afgangsprøve, der afholdes onsdag og torsdag i biologi og geografi.

Hacklab, der betegner sig selv som »en gruppe københavnske IT-entusiaster«, har efter eget udsagn vist, at eleven med lidt snilde kan snyde sig til de rigtige svar ved at sætte kryds ved alle svarmuligheder ud for et spørgsmål og så selv have lidt Javascript-kode klar til afvikling i browseren.

»Det tog cirka en halv time at finde hullet, og derefter brugte vi halvanden time på at implementere et hack, der virkede i både Internet Explorer og Firefox,« siger en anonym talsperson fra Hacklab, som Version2 har talt med.

Hacklab fandt hullet i mandags og anslår over for Version2, at omkring 80 procent af den elektroniske afgangsprøve kan besvares korrekt ved at benytte sig af metoden.

»Da brugerindtastede data bliver valideret på en uhensigtsmæssig måde, er det muligt for eleverne at snyde sig igennem spørgsmålene,« skriver Hacklab i en pressemeddelelse om metoden.

Hacklab har fundet sikkerhedshullet ved at afprøve den offentligt tilgængelige demonstrationstest af afgangsprøven på http://www.evaluering.uvm.dk/templates/velkomst_layout.jsf under "Digitale Afgangsprøver".

»Dele af systemet, der tjekker svarene, udnytter elevens egen computer for at virke, hvilket gør det nemt at fuske med kommunikation mellem elevens computer og den bagvedliggende server,« skriver Hacklab.

Ifølge Hacklab er problemet, at svarene i den elektroniske test er lagt til input-validering på klient-siden ? altså elevens egen computer - hvilket vil sige, at man ved at læse sidens kildekode kan aflure, hvordan systemet kan snydes.

Hacklab har fundet frem til, at det kan gøres ved at sætte kryds i alle svarmulighederne til et spørgsmål. Testen er af typen multiple choice, og svarmulighederne repræsenteres i koden som svar1, svar2, svar3 osv.

Hvis eleven sætter kryds i alle svarmuligheder på en gang, tjekkes der ifølge Hacklab kun for, om det korrekte svar er sandt, men ikke om der er nogen svar, der er falske.

Og det kan ifølge Hacklab gøres igennem JavaScript eller ved at konstruere sine egne HTTP POST-forespørgsler.

Hacklab har selv benyttet sig af inline Javascript for at kunne snyde i afgangsprøven, hvilket for Internet Explorers vedkommende ser således ud:

javascript:var
x=document.forms[0].getElementsByTagName('input');for(i=0;i<
x.length;i++){var z=x[i];if(!z.id.match(/svar/)
&&!z.id.match(/r\ds\d/)){}
else{void(z.value=z.value=='false'?true:1)}}

Ifølge Hacklab er koden lige til selv at afprøve på den offentligt tilgængelige demonstrationstest for afgangsprøven.

Hacklab erkender over for Version2, at der ikke er 100 procent garanti for, at den endelige udgave af afgangsprøven er implementeret som på demonstrationssiden. Men gruppen mener, at den elektroniske afgangsprøve fremover bør holde sig fra at lægge input-valideringen på klient-siden.

»Næste gang bør der sættes flere ressourcer af til at teste systemet igennem, inden det sendes ud. Og så er det vigtigt, at input-valideringen på klientsiden lægges over på serversiden. Lige nu er systemet en slags blanding af noget server-side og noget client-side, og det ved alle it-professionelle ikke er måden at lave den slags systemer på,« siger talspersonen fra Hacklab.

Opdatering: Hacklab har kl. 12.25 kontaktet Version2 med følgende meddelelse: "Det medlem, du talte med, har nu netop taget prøven. Alle opgaverne var af typer, man kunne snyde med, og systemet var det samme". Skolestyrelsen og leverandøren Cowi oplyser til Version2, at man pt. er i gang med at se på oplysningerne fra Hacklab.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (14)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#3 Allan Eriksen

Jeg sidder da så lige og tænker, eftersom flere skoler tillader eleven at bruge deres egne bærbare osv.

hvad så hvis javascript ikke er slået til?

og hvor langtid ville det tage for it administrator på skolen at finde frem til dette :P

  • 0
  • 0
#6 Hans Schou

Jarnis Bertelsen,

Det lyder som en tåbelig begynderfejl at lave client-side validering...

men det skalere! :-)

Udviklerne har måske fået opdraget: Få det til at skalere! Koste hvad det vil.

Og udviklerne har så troet at der måtte gives køb på validering.

...eller også er det en begynderfejl.

  • 0
  • 0
#8 anon anon

Alt sendes jo til serveren - så det er trivielt for COWI at tjekke det modtaget data (evt. fra logs). Så når alle options er checked ringer der nok nogle alarmklokker.

Så hvis jeg var ham Hacklab-fyren og havde helgarderet min eksamen ville jeg ikke føle mig tryg!

  • 0
  • 0
#9 Søren Koch

Tja det kræver jo at de har slået maksimum logning af indkomne data til. Med den 'professionalisme' der kommer til udtryk i at bruge javascript for at lave hvad der for mig mest ser ud til at være en simpel 'radio-group' (kun et valg muligt) så ville jeg ikke garantere det. Specielt ikke taget i betragtning af at serverene gik ned grundet overbelastning sidste gang.

Hva jeg ville have gjort var at bruge den simple 'radio-group' med en option for 'ikke besvaret' (default) og så et antal for de forskellige muligheder, og så på serveren kun acceptere den først tilsændte værdi for det tag. Resultatet er at folk der helgarderer (ved omskrivning af lokal html el lign) kun få i gennemsnit 50% rigtige ved binære valgmuligheder med mindre at udviklerne har været så uhensigtsmæssige at placere rigtigt svar først for alle spørgsmål (Den procentsats vil så forøvrigt være den samme som for dem der bare 'slår plat og krone').

Derudover mener jeg at 'multiple choice' opgaver er en rigtig dårlig måde at vurdere folks kunnen på: For de spørgsmål hvor eksaminant ved svaret, fint nok, men han/hun har altid muligheden for at 'slå en tærning' og ramme rigtigt og få point for det uanset om vedkommende aner en pind om det. mens man ved at skulle skrive sin besvarelse vil eksaminator altid kunne se hvem der er inde i stoffet og hvem der ikke er (simple ja/nej spørgsmål udntaget).

  • 0
  • 0
#10 anon anon

Det ville overraske mig meget, hvis ikke de loggede POST's - de ved jo at det er kernen i systemet. Så den må man næsten antage de har overvejet.

Nu ved jeg ikke hvordan den faktiske test fungerer, men der får man vel ikke svar tilbage med det samme? I så fald kan man håbe på at den person der har strikket demo'en sammen blot har været en praktikant en sen fredag eftermiddag. Med din simple løsning er det ikke muligt at have f.eks. to svarmuligheder - hvilket jeg går ud fra det understøtter.

Mon ikke den "live" løsning udregner resultatet på lidt anden vis end demo'en. Alt andet ville simpelthen være en for god historie til dailywtf.

Lad os få en kommentar fra COWI :)

  • 0
  • 0
#12 Søren Koch

Well det er muligt at nogen af spørgsmålene har mere end 2 svarmuligheder der skal afkrydses for rigtigt (og i så tilflde er en radio-group ikke det rigtige valg som du påpeger), men de spørgsmål jeg kikkede på var simple ja/nej.

Og jo man kan kun håbe at den endelige version ikke er efter samme system som demoen..... Jeg har også læst artiklen du henviser til, men vi i offentligheden ved jo stadig ikke hvordan koden bagved ser ud, og hvis det er som jeg frygter, så er det lige til dailywtf som du så korrekt skriver.

  • 0
  • 0
#14 Jacob Sparre Andersen

Problemet med "client-side"-validering ved en eksamen er at man i værste fald udleverer løsningen på opgaven sammen med opgaven, men i dette tilfælde lyder det lidt som om man også kunne have snydt ved at slå javascript fra i sin browser.

Hvis COWI virkelig har lavet den helt store bommert, og udleveret opgaveløsningerne, så er det virkelig imponerende. Hvis de »bare« ikke har husket at tjekke både hvor der er sat kryds, og hvor der ikke er sat kryds, så er det vel en tanketorsk man kan forvente sig fra enhver middelmådig amatør.

  • 0
  • 0
Log ind eller Opret konto for at kommentere