Kielivalinta tehtäväeditoriin

Abitin koe-editoriin on lisätty tänään kokeen kielen valinta. Kokeen kieli voi olla joko suomi tai ruotsi. Kokeen laadinnassa tehty kielivalinta määrittelee koesivun vakiotekstien kielen.

Muutos liittyy syksyn ylioppilaskokeessa käyttöön tulevaan helpotettuun kirjautumissivuun. Uudessa yo-kirjautumisessa kokelas valitsee oman lukion opetuskielen, jonka jälkeen näytetään vain nämä kokeet. Uudelleensuunnittelun tavoitteena on vähentää väärien kokeiden valintaa.

Abitista on korjattu kaksi tietoturvahaavoittuvuutta

Abitista on korjattu kaksi vakavaa tietoturva-aukkoa. Ensimmäinen, merkitykseltään vähäisempi haavoittuvuus koskee kokelaan tikkua. Tämä on korjattu versiossa ABITTI2118E. Huomattavasti vakavampi haavoittuvuus koskee palvelintikkua. Tämä haavoittuvuus on korjattu versiossa SERVER21174.

Molemmat haavoittuvuudet ovat olleet kevään 2021 ylioppilaskokeissa käytetyissä tikkuversioissa. Ylioppilastutkintolautakunta ei ole löytänyt merkkejä siitä, että näitä haavoittuvuuksia olisi hyödynnetty kevään kokeissa.

Kokelaan tikun haavoittuvuus

Kokelaan tikusta on löytynyt haavoittuvuus, jonka avulla kokeen suorittaja voi saada pääkäyttäjän oikeudet. Tämä mahdollistaa esimerkiksi palomuurin muokkaamisen ja siten vapaan internetin käytön sekä tietokoneen omalla levyllä olevien aineistojen ja ohjelmien hyödyntämisen. Lisäksi haavoittuvuus helpottaa koetilanteen häiritsemistä.

Haavoittuvuus perustuu siihen, että pääkäyttäjän oikeuksien kontrolloituun käyttöön tarvittavan pkexec-ohjelman määrittelytiedostot olivat jääneet asentamatta tikulle. Tämän seurauksena pkexec-ohjelmalla saattoi ajaa mitä tahansa ohjelmia, kun normaalitilanteessa ohjelman käyttö on rajoitettu esimerkiksi näytön kirkkauden säätöön.

Haavoittuvuus on ollut Abitissa versiosta ABITTI20451 alkaen. Vika johtui siitä, että Debian Buster –versioon siirryttäessä tikun rakentamisessa käytetyissä skripteissä ei ajettu rajoitukset lisääviä koodeja.

Kiitämme yhteydenotosta Tuure Luostoa, joka toi asian tietoomme.

Palvelintikun haavoittuvuus

Palvelintikulta on löytynyt erittäin vakava haavoittuvuus, joka mahdollistaa murtautumisen koeverkosta koetilan palvelimelle ja siellä mielivaltaisten komentojen ja ohjelmakoodin suorittamisen. Hyökkääjä voi esimerkiksi hakea kaikkien kokeisiin osallistuneiden henkilötiedot tai koesuoritukset tai muuttaa niitä.

Tätä mahdollisuutta hyödyntämällä hyökkääjä voi asentaa koetilan palvelimelle päivityspaketin, joka asennetaan kaikkien koeverkkoon liittyvien kokelaiden Abitti-ympäristöön. Tämä kokelaiden tikulle asennettava ohjelmakoodi voidaan ajaa pääkäyttäjän oikeuksin, joten se voisi esimerkiksi pyyhkiä kokelaan tietokoneen oman käyttöjärjestelmän tai asentaa tietokoneelle pysyviä haittaohjelmia.

Haavoittuvuuden hyödyntäminen vaatii sitä, että kokeen suorittajalla on kokelaan koeympäristön pääkäyttäjän oikeudet. Tämänkin jälkeen hyväksikäyttäminen vaatii ennalta runsasta suunnittelua sekä ennakoivaa valmistautumista ja teknistä osaamista. Runsaasta valmistautumisesta huolimatta on todennäköistä, että hyökkääjä jää kiinni jossain vaiheessa hyökkäystä. Hyökkäys on kuitenkin helposti toistettava, mikäli “pohjatyö” on jo kerran tehty. Tarkka selvitys hyväksikäytön mahdollistaneista tietoturva-aukoista löytyy tämän viestin lopusta.

Tämän useita tietoturva-aukkoja yhdistävän hyökkäystavan löysivät Mikael Hannolainen, Ruben Mkrtumyan ja Eemil Sinkko. Heidän yhteydenottonsa lautakuntaan oli poikkeuksellisen ammattimainen ja mahdollisti ongelman nopean korjaamisen. Useita haavoittuvuuksia ketjuttaneen tietoturva-aukon löytäminen osoittaa laaja-alaista tietotekniikan hallintaa ja poikkeuksellista omistautumista tietoturvalle.

Haavoittuvuus tuli tietoomme kevään ylioppilastutkinnon koepäivien aikana. Koska emme halunneet vaarantaa koejärjestelyjä laajalla päivityksellä kesken tutkintoa mutta silti reagoida asiaan mahdollisimman nopeasti, aloitettiin toimenpiteet lisäämällä Abitti-kokeisiin päivityspaketin, joka asensi koetilan palvelimille hyökkäykseltä suojaavan ohjelmakoodin. Ikävä kyllä päivitys ei aivan kaikissa tilanteissa asennu palvelimelle ja siksi kaikki Abitti-palvelimet on päivitettävä.

Vapaaehtoisten ilmoitukset ovat tärkeitä YTL:lle

Abitin kehittäminen alkoi poikkeuksellisissa merkeissä: vuonna 2013 silloinen DigabiOS lanseerattiin Hackabi-hakkerointikisalla. Vuosien varrella meille on tullut useita ilmoituksia erilaisista haavoittuvuuksista. Tyypillinen ilmoittaja on lukioikäinen tietotekniikan tuntija, joka on käyttänyt runsaasti aikaa Abitin tutkimiseen.

Vapaaehtoisten harrastajien ilmoitusten lisäksi tietoturvahaavoittuvuuksia etsivät tietoturva-ammattilaiset. Haavoittuvuuksia etsitään aina, kun avaamme jonkin uuden palvelun tai palveluun tehdään merkittäviä muutoksia. Ammattilaiset hyödyntävät erilaisia skannereita ja työkaluja, jotka tekevät perustutkinnasta tehokasta. Kun tyypilliseen tietoturvakartoitukseen käytetään noin viikko, voi vapaaehtoinen motivoitunut lukiolainen etsiä puutteita kuukausikaupalla. Opiskelijoiden etuna on myös se, että koetilanteen ja lukion konteksti on heille tuttu. Ei ole yllätys, että vielä uransa alkuvaiheessa olevat vapaaehtoiset löytävät puutteita.

Tietoturva-aukkoja ei ole tilastoitu, mutta korjauksiin päätyneistä havainnoista hiukan yli puolet on löytynyt ammattilaisten toimesta ja loput yleisöltä. Ylioppilastutkintolautakunta on sitoutunut julkistamaan kaikki tietoon tulleet tietoturvapoikkeamat kolmen kuukauden kuluessa. Olemme tottuneet vastaanottamaan sekä yksinkertaisia sähköposteja että ammattimaisia hyökkäyskoodin sisältäviä ilmoituksia.

Kiitokset kaikille entisille, nykyisille ja tuleville Abitin tietoturva-aukkojen etsijöille!

YTL:n tietoturva-asiantuntijoiden kuvaus palvelinhaavoittuvuuden mahdollistaneista tietoturva-aukoista

Tarkasteltu tietoturvahavainto koskee kolmea haavoittuvuutta Abitti-järjestelmässä, joita ketjuttamalla saavutetaan root-tason oikeudet koetilan palvelimella.

(Redirect, Server side request forgery (SSRF)) Ensimmäinen haavoittuvuus liittyy koetilan palvelimen suorittamaan NSA-valvontaan, jossa lähetetään valvontakutsu kokeeseen osallistuvan laitteelle. Valvontakutsu vastaanotetaan omalla palvelulla, josta palautetaan koetilan palvelimelle uudelleenohjauspyyntö (307). Uudelleenohjauspyyntö ohjautuu koetilan palvelimen paikalliseen palveluun, joka on paikallisessa osoitteessa 127.0.0.1 portissa 8021. Kyseiseen palveluun ei ole suoraa yhteyttä ulkopuolisilta laitteilta. Palvelimen sisäinen uudelleenohjaus aiheuttaa sen, että ulkopuolelta tullut käsky ajetaan sisäisessä järjestelmässä.

(Command injection) Toinen haavoittuvuus on koetilan palvelimen rajapinnassa, jolla on tarkoitus tallentaa koevastaukset. Kyseiseen järjestelmään ei ole mahdollista ajaa koetilan palvelimen ulkopuolelta käskyjä, mutta uudelleenohjauspyyntö ohjaa kutsun paikallisesti, jolloin kutsu ohjataan haavoittuvaan paikalliseen rajapintaan. Haavoittuvuus kyseisessä rajapinnassa on siinä, että siihen on mahdollista liittää mielivaltaisia komentoja argumentiksi ja rajapinta suorittaa komennot palvelimella.

(Privilege escalation) Kolmas haavoittuvuus liittyy “koetila” -käyttäjän sudo-oikeuksiin. Koetila:lla on oikeus luoda, sekä ajaa sudo-oikeuksilla (pääkäyttäjänä) skripti /tmp/ktp-update-work/ktp-update.sh. Tämä tarkoittaa sitä, että koetila-käyttäjä pystyy korottamaan oikeutensa pääkäyttäjätasolle luomalla oman skriptinsä kyseiseen hakemistoon ja ajamalla skriptinsä sudo /bin/bash /tmp/ktp-update-work/ktp-update.sh komennolla.

Ketjuttamalla kolme haavoittuvuutta hyökkääjä pystyy etänä suorittamaan haitallista koodia koetilan palvelimella (Remote code execution) pääkäyttäjänä.

Saatuaan järjestelmään pääsyn hyökkääjä pystyy ajamaan pääkäyttäjänä koodia koetilan palvelimella sekä tietyissä olosuhteissa myös kokelaiden päätelaiteilla. Tällöin vaarantuu tiedon eheys, luotettavuus ja saatavuus, niin palvelimella kuin kokelaiden järjestelmissä. Kokelaiden päätelaitteilla root-tasoisena koodin ajaminen altistaa myös tietyissä tapauksissa kokelaiden alkuperäisen käyttöjärjestelmän hyökkäyksille tai väärinkäytölle. Mielivaltaisen koodin ajaminen kokelaslaitteilla vaatii sen, että kokelaslaite hakee päivityksen palvelimelta. Kokelaslaite hakee päivityksen palvelimelta kokelaslaitteen käynnistyksen tai uudelleenkäynnistyksen yhteydessä.

Koetilan palvelimen koodissa haavoittuva funktio (Command injection) on ollut vuodesta 2015 lähtien, mutta sen hyödyntäminen SSRF-haavoittuvuuden avulla on ollut mahdollista vasta 1.10.2019 eteenpäin. Haavoittuvuudet ovat paikattu 4/2021.

Uuden version tunnettuja ongelmia

Tähän mennessä uudessa Abitti-versiossa on havaittu joitakin ongelmia, jotka on kerätty tähän tiedotteeseen. Päivitämme tiedotetta sitä mukaa, kun saamme lisää tietoa uusista ongelmista ratkaisuineen.

Virtuaalinen koetilan palvelin ei käynnisty

Joillakin virtuaalisilla koetilan palvelimilla on ollut ongelmia käynnistää uusi tikkuversio. Tiedossamme olevat ongelmat ovat nimenomaan Linux-isäntäkoneilla ja se ratkeaa päivittämällä VirtualBox uusimpaan Oraclen jakelemaan versioon (tällä hetkellä 6.1.16). Oman version saa näkyviin komentoriviltä:

$ VBoxManage --version
6.1.16r140961

Ohjeet Oraclen jakeleman VirtualBoxin käyttöön löytyvät VirtualBoxin sivulta. Tässä esimerkkiasennus Ubuntulla.

1. Aloita poistamalla Ubuntun paketeista asennettu VirtualBox

sudo apt purge virtualbox virtualbox-dkms
sudo apt autoremove

2. Ota käyttöön Oraclen pakettivarasto

Lisää sen jälkeen Oraclen pakettivarasto. Merkkijonon <mydist> paikalle korvaat oman Ubuntu-versiosi koodinimen, esim. 20.04 on “focal”, 18.04 “bionic” jne.

sudo echo "deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian <mydist> contrib" | sudo tee -a /etc/apt/sources.list.d/oracle.list

Eli Ubuntu 20.04:n tapauksessa:

sudo echo "deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian focal contrib" | sudo tee -a /etc/apt/sources.list.d/oracle.list

Lisää vielä pakettivaraston avain:

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -

3. Päivitä pakettien tiedot

sudo apt update

4. Asenna VirtualBox

sudo apt install virtualbox-6.1

Tämän jälkeen koneelle päivittyy uusin VirtualBoxin 6.1 -versio suoraan Oraclelta. Tarkista VirtualBoxin versio yllä neuvotulla tavalla.

Koetilan varapalvelin ei saa yhteyttä koetilan palvelimeen

Tämä vain virtuaalisia koetilan palvelimia koskeva ongelma aiheuttaa myös sen, että kokelaat eivät näe koetilan palvelinta. Ilmiö johtuu siitä, että jostain syystä Vagrant tai VirtualBox ovat asettaneet virtuaalikoneelle saman Ethernet-osoitteen. Kun verkossa on kaksi samaa Ethernet-osoitetta, ei liikenne suju.

Ongelman korjaaminen väliaikaisesti tapahtuu tekemällä seuraava toimenpide joko koetilan palvelimella tai varapalvelimella. Pysyvä korjaus tehdään seuraavan Abitti-julkaisun yhteydessä.

  1. Lataa oheinen Vagrantfile-tiedosto
  2. Tallenna se ktp-hakemistoon vanhan Vagrantfile-tiedoston päälle
  3. Klikkaa Naksusta Poista kokeet -painiketta
  4. Käynnistä Abitti-palvelin

GeoGebra 6:n käyttöliittymän kieli on englanti

GeoGebra 6:n käyttöliittymän kieli on englanti. Abitin käyttöliittymän kielen (suomi tai ruotsi) mukaiset valinnat näkyvät heti ohjelman ensimmäisen käynnistymisen yhteydessä, mutta ne korvataan välittömästi englanninkielisillä vastineilla. Asiasta on tehty vikaraportti GeoGebralle.

Kielen voi vaihtaa käsin GeoGebrassa: Menu > Settings > Language.

Koneen käynnistys keskeytyy

Koneen käynnistys keskeytyy ennen graafisen käyttöliittymän käynnistymistä. Näytöllä näkyy levyosioiden (partition) luomiseen liittyviä kysymyksiä (Fix, Ignore yms.). Ilmiötä on havaittu sekä palvelin- että opiskelijatikuilla.

Ongelma on korjattu Buster-testitikulla, joka ei kuitenkaan ole SecureBoot-allekirjoitettu. Testiversiolla voi järjestää kurssikokeita.

Virhe kokeen latauksessa

Tämä ilmoitus näkyy koetilan palvelimessa heti käynnistyksen jälkeen, vaikka koetta ei olisi vielä yritettykään ladata. Ongelmaa on havaittu myös aiemmilla tikkuversioilla.

Ilmoituksen voi ohittaa klikkaamalla palvelimen selaimesta reload/refresh-nappia.

Gnome-laskinta ei löydy sovellusvalikosta

Gnome-laskimen käynnistyskuvaketta ei löydy sovellusvalikosta.

Milloin korjausversio julkaistaan?

Seuraamme vielä pari päivää meille lähetettyjä vikaraportteja ja päätämme korjausversion aikataulusta sen jälkeen. Aikaisintaan korjauksia on luvassa viikon 47 lopussa.

Käynnistysvalikon korjaus jaossa

Uudesta Abitti-versiosta löytyi heti korjattavaa. Käynnistysvalikkoon ilmestyi toinenkin Gallium-valinta. Ylempi Gallium-vaihtoehto käynnistää Abitin uudella 5.8-kernelillä, kun alempi vaihtoehto käynnistää tikulla jo pitkään olleen 4.9-version.

Korjattu versio on jaossa ja sen versionumero on ABITTI20459. Korjattua versiota voi käyttää rinnan tiistaina julkaistun version kanssa.

Uusi Abitti-versio beta-testikäytössä

Uusi Debian Busteriin perustuva Abitti-versio on nyt julkaistu testikäyttöön. Julkaisemalla beta-version YTL haluaa kuroa umpeen Abitin kehitysvelkaa, jonka koronaviruspandemian aiheuttama päivitysten viivästyminen on aiheuttanut. Testiversiota ei kannata käyttää vielä laajalti, koska levynkuvia ei ole allekirjoitettu. Testikoneista on siis kytkettävä Secure Boot –tarkistus pois päältä.

Uuden beta-version myötä Abitin pellin alla tapahtuu paljon muutoksia, mitkä mahdollistavat paremman laitetuen ja oheisohjelmien päivitetyt versiot. Beta-testauksen tavoitteena on selvittää, löytyykö uusista käynnistysvaihtoehdoista tukea aiemmin toimimattomiin tietokonemalleihin, sekä testata uusien ohjelmaversioiden toimintaa ennen varsinaista uutta Abitti-julkaisua. Tämänhetkisen arvion mukaan Debian Busteriin perustuva varsinainen Abitti-versio otetaan käyttöön marraskuun alussa. Tällöin levynkuvat on Secure Boot –allekirjoitettu normaaliin tapaan.

Pian testikäyttöön tulee Naksu, joka ei tarvitse toimiakseen HashiCorp Vagrant –ohjelmaa. Muutos helpottaa koetilan palvelinten asennusta ja nopeuttaa jonkin verran virtuaalipalvelimen hallintaoperaatioita.

Muutokset Abitissa ja testaaminen

Tärkeimmät muutokset Abitissa:

  • Uudet Linux-kernel –versiot 5.4 (Caesium, Barium, Cerium, Holmium, Helium, Neptunium) ja 5.8 (Natrium, Polonium, Gallium, Radium, Uranium)
  • LibreOffice on päivittynyt versioon 6.1
  • MarvinSketch on päivittynyt versioon 20.18
  • GIMP on päivittynyt versioon 2.10
  • TI-Nspire on päivittynyt versioon 5.2
  • Casio ClassPad Manager on päivittynyt versioon 2.01.7600-1
  • Yksinkertainen piirto-ohjelma Pinta on korvattu vastaavalla ohjelmalla KolourPaint
  • Koejärjestelmän ohjeessa on karttoja, ks. cheat.test.abitti.fi. Tähän aiheeseen liittyvä blogikirjoitus.

Testaamiseen tarvitset kokelastikun ja palvelintikun levynkuvan. Molemmat kirjoitetaan USB-muistille Etcherillä. Voit myös testata virtuaalista palvelinta käyttäen lataamalla Naksu-testiversion.

Muutokset Naksussa ja testaaminen

Tärkeimmät muutokset Naksussa:

  • Vaatii ainoastaan Oracle VirtualBoxin toimiakseen (Vagrantia ei tarvitse poistaa)
  • Yo-palvelimen lataus toimii salasanalla nykyisen Vagrantfilen sijaan

Testaamiseen tarvitset Naksun alpha-version:

Käynnistä Naksu ensimmäisellä käyttökerralla komentoriviltä seuraavalla komennolla, joka poistaa Naksun automaattipäivityksen käytöstä:

  • Linux: naksu --self-update=disabled
  • Windows: naksu.exe /self-update:disabled

Testiversioiden päivitykset tältä sivulta

Testiversioihin julkaistaan päivityksiä noin viikon välein. Testiversiot eivät päivity automaattisesti. Päivittyneet ohjelmaversiot ovat ladattavissa tältä sivulta.

Palautteet Abitti-tukeen

Palautetta testattavista versioista voi lähettää Abitti-tukeen, abitti@ylioppilastutkinto.fi. Mikäli saamme lukuisia palautteita tai kysymyksiä samasta asiasta, lisäämme ne tälle sivulle.

Ongelmia kaavaeditorissa

Ohjelmistovirheen takia oli mahdollista ladata Abitin verkkopalvelusta koe, jossa oli ongelmia kaavaeditorin kanssa. Virhe on nyt korjattu. Virheellisen kokeen ladanneille on lähetetty sähköposti, jossa suositellaan kokeen lataamista uudelleen.

Pahoittelemme virhettä.

Abittiin ei tehdä muutoksia syksyn 2020 ylioppilastutkintoa varten

Muutosten tekeminen Abittiin ei koronatilanteen takia ole mahdollista, koska lukiot ja kokelaat eivät etäopetuksessa voi ottaa niitä käyttöön. Tämä tarkoittaa samalla sitä, ettei koejärjestelmään tehdä muutoksia syksyn 2020 ylioppilastutkintoa varten, eikä esimerkiksi uudistettuja digitaalisia MAOL-taulukoita saada syksyn tutkintoon. Kokelaat osallistuvat syksyn ylioppilastutkintoon lähinnä sen teknisen kokemuksen varassa, joka heille on kertynyt ennen etäopetukseen siirtymistä.

Lisätietoa Ylioppilastutkintolautakunnan sivulta Koronaviruksen leviämiseen varautuminen.