Två sårbarheter i Abittis datasäkerhet har åtgärdats

Två allvarliga sårbarheter i Abittis datasäkerhet har åtgärdats. Den första, som är av mindre betydelse, gäller examinandens pinne, som är uppdaterad till version ABITTI2118E. Den märkbart allvarligare sårbarheten gäller serverpinnen. Denna sårbarhet är åtgärdad i version SERVER21174.

Båda sårbarheterna fanns i bruk i versionerna av pinnar som användes vid studentexamen våren 2021. Studentexamensnämnden har inte funnit tecken på att sårbarheterna skulle ha utnyttjats under vårens prov.

Sårbarheten i examinandpinnen

En sårbarhet har hittats i examinandpinnen vilken möjliggör att provdeltagaren kan få administrators rättigheter. Detta möjliggör till exempel ändring av brandmuren och därmed fri internetanvändning, tillgång till material och program från datorns egen hårdskiva och underlättar störning av provtillfället.

Sårbarheten bygger på att filen som behövs för att definiera en kontrollerad användning av administrators rättigheter i pkexec-programmet inte hade installerats på pinnen. Detta orsakade, att man med hjälp av pkexec-programmet kunde köra vilka som helst program, när i vanliga fall programmet endast har tillgång till exempel ändring av skärmens ljusstyrka.

Sårbarheten har funnits i Abitti sedan version ABITTI20451. Felet orsakades av att de skript som lägger till koden med begränsningar inte kördes då pinnen skapades efter uppdateringen till Debian Buster.

Vi tackar Tuure Luosto för kontaktagandet som ledde till att vi fick saken till kännedom.

Sårbarheten i serverpinnen

En mycket allvarlig sårbarhet har hittats på serverpinnen. Sårbarheten möjliggör intrång till provlokalens server via provnätet och möjligheten att genomföra godtyckliga kommandon och programkod. Angriparen kan till exempel söka alla personuppgifter och provprestationer av prodeltagarna och ändra på dem.

Genom att utnyttja sårbarheten vidare kan angriparen på provlokalens server installera ett uppdateringspaket, som installeras i Abitti-provmiljön för dem som ansluter sig till provnätet. Denna programkod som installeras på examinandernas pinne, kan köras med administrators rättigheter. Detta betyder att koden till exempel skulle kunna radera operativsystemet på examinandens dator eller permanent installera skadeprogram på den.

För att utnyttja sårbarheten krävs att deltagaren i provet har administrators rättigheter till provmiljön. Dessutom kräver utnyttjandet mycket planering, förberedelser och teknisk kunskap. Även om mycket planering har genomförts är det sannolikt att angriparen blir avslöjad i något skede. Utnyttjandet av sårbarheten är ändå lätt att upprepa om ”grundarbetet” har gjorts en gång. En exaktare beskrivning av sårbarheterna som möjliggjort missbruk finns i slutet av denna text.

Detta sätt att angripa provsystemet som kombinerar flera olika sårbarheter hittades av Mikael Hannolainen, Ruben Mkrtumyan och Eemil Sinkko. Deras agerande och kontakt med nämnden har varit exceptionellt professionellt och har möjliggjort en snabb korrigering av problemet. Det visar på brett datatekniskt kunnande och exceptionellt engagemang för datasäkerhet att ha hittat en sårbarhet som kopplar samman flera sårbarheten i datasäkerheten.

Vi uppmärksammades på sårbarheten under provdagarna i vårens examen. Vi ville inte riskera anordnandet av proven med en stor uppdatering mitt under examen men samtidigt ändå reagera på saken så fort som möjligt. Därför inledde vi våra åtgärder med att i Abitti-proven lägga till ett uppdateringspaket som installerade programkod som skyddar mot intrång på provlokalens server. Tyvärr installeras inte programkoden i alla situationer på servern och därför måste alla Abitti-servrar nu uppdateras.

Rapporter gällande datasäkerhet från frivilliga är viktiga för SEN

Utvecklingen av Abitti startade i exceptionella förhållanden: under året 2013 lanserades det dåvarande DigabiOS genom en Hackabi-hackertävling. Under åren som gått har vi fått flera rapporter om olika sårbarheter. En typisk raporterare är en person i gymnasieåldern som är väl invandrad i datateknik och som har använt mycket tid på att bekanta sig med Abitti.

Förutom rapporter från frivilliga letar även datasäkerhetsproffs efter sårbarheter. Vi letar alltid efter sårbarheter då vi öppnar en ny tjänst eller gör betydande ändringar i en befintlig tjänst. Professionella experter använder olika skannrar och verktyg som gör den tråkiga grundundersökningen effektiv. Då en typisk datasäkerhetskartering görs på ungefär en vecka kan en frivillig, motiverad gymnasiestuderande leta efter sårbarheter i månader. Studerandena har också den fördelen att provtillfället och gymnasiekontexten är bekant för dem. Det är ingen överraskning att frivilliga som ännu är i början av sin karriär upptäcker sårbarheter.

Vi har inte statistik över antalet datasäkerhetssårbarheter, men av de upptäckta sårbarheter som lett till reparationsåtgärder har drygt hälften upptäckts av yrkespersoner och de övriga rapporterats av allmänheten. Studentexamensnämnden har förbundit sig att publicera alla datasäkerhetsavvikelser som rapporterats till oss senast inom tre månader. Vi är vana vid att få både enkla e-postmeddelanden och professionella rapporter som innehåller kodexempel för utnyttjande av sårbarheten ifråga.

Vi vill tacka alla tidigare, nu aktiva och kommande Abitti-sårbarhetssökare!

Beskrivning av SEN:s datasäkerhetssakkunniga om sårbarheten i servrarna som äventyrat datasäkerheten

Observationen gällande datasäkerheten inbegriper tre sårbarheter i Abitti-systemet. Genom att koppla samman sårbarheterna erhåller man rättigheter på root-nivå på servern.

(Redirect, Server side request forgery (SSRF)) Den första sårbarheten gäller NSA-övervakningen som servern uträttar och som skickar övervakningsanrop till apparaterna som deltar i provet. Övervakningsanropet mottas med en egen tjänst, som returnerar en begäran om omdirigering till provlokalens server (307). Begäran om omdirigering styrs till en lokal tjänst på servern, som är belägen på den lokala adressen 127.0.0.1 på port 8021. Denna tjänst står inte i direkt kontakt med utomstående apparater. Den interna omdirigeringen i servern leder till att kommandot som kommer från utanför körs i det interna systemet.

(Command injection) Den andra sårbarheten finns i gränssnittet i provlokalens server, vars funktion är att spara provsvaren. Det är inte möjligt att köra kommandon i detta system utanför provlokalens server, men omdirigeringen styr begäran lokalt, vilket leder till att begäran styrs till det sårbara lokala gränssnittet. Sårbarheten i gränssnittet är att det är möjligt att bifoga godtyckliga kommandon i det som argument varefter gränssnittet kör kommandona på servern.

(Privilege escalation) Den tredje sårbarheten gäller ”koetila”-användarens sudo-rättigheter. Koetila har privilegiet att skapa och köra med sudo-rättigheter (som administratör) skriptet /tmp/ktp-update-work/ktp-update.sh. Detta betyder, att koetila-användaren kan höja på sina rättigheter till adminstratornivå genom att skapa ett eget skript i katalogen i fråga och köra skriptet med sudo /bin/bash /tmp/ktp-update-work/ktp-update.sh kommandot.

Genom att koppla samman alla dessa sårbarheter kan en angripare på distans köra skadlig kod på provlokalens server (Remote code execution) som administratör.

Efter att ha fått tillgång till provlokalens server kan angriparen som administratör köra kod på provlokalens server och i vissa fall på examinandernas apparater. I detta fall riskeras informationens integritet, tillförlitlighet och tillgänglighet både på servern och i examinandernas system. I vissa fall kan kod som körs med root-rättigheter på examinandernas apparater utsätta examinandernas ursprungliga operativsystem för angrepp och missbruk. För att godtycklig kod ska köras på examinandens apparat krävs det att examinandapparater söker en uppdatering från servern. Examinandapparaten söker en uppdatering från servern då apparaten startas eller omstartas.

Den sårbara funktionen i koden för provlokalens server (Command injection) har funnits sedan år 2015, men möjligheten att utnyttja den med hjälp av SSRF-sårbarheten har varit möjlig först från 1.10.2019 framåt. Sårbarheterna har åtgärdats 4/2021.