Tweak-A-bitin tutkiminen

Haavoittuvuudet
Hackabi
Digabi-webinaarit
**Abitti**
Ohjelmistot
Tehdyt parannukset
Vanhat Abitti-versiot
**Tweak-A-bitin tutkiminen**
**Laitteisto**
WLAN-tukiaseman konfigurointi
Tutkintoverkko

Tweak-A-bitillä saa joukon lisätoiminnallisuuksia YTL:n Abitti-järjestelmän koelaadintaan (oma.abitti.fi). Tämä sivu selvittelee Tweak-A-bitin rakennetta ja sisäistä toimintaa. Lopussa pohditaan lyhyesti, miten lisäosat on pystytty rakentamaan. Tweak-A-bitin käytöstä ja ominaisuuksista on olemassa oma sivunsa.

## Saatavat lisäominaisuudet

Saat YTL:n Abitti-kokeiden laadintaan (https://oma.abitti.fi) seuraavia lisäominaisuuksia:

1. pidetyt kokeet piilotetaan automaattisesti
2. pidetyt kokeet saa näkyviin "Näytä pidetyt kokeet" -napista
3. saat tehtyä kokeista kopioita yhdellä napinpainalluksella
4. voit muokata tehtävänantoja graafisella editorilla
5. voit lisätä tehtävänantoihin matemaattisia kaavoja
6. voit muuttaa kysymysten järjestystä
7. voit kopioida yksittäisiä tehtäviä samaan tai toiseen kokeeseen
8. voit kopioida aukkomonivalintojen vaihtoehtoja saman tehtävän loppuun
9. kokeita pisteytettäessä opiskelijoiden nimet piilotetaan oletuksena
10. kokeita pisteyttäessä voit halutessasi tallentaa opiskelijoiden vastaukset opiskelijakohtaisiksi PDF-tiedostoiksi, esim. kosketusnäyttölaitteella ja stylus-kynällä tehtävien vapaamuotoisten merkintöjen kirjoittamista varten
11. kokeiden palautuksen yhteydessä voit halutessasi ladata pisteytyksen Excel-tiedostona
12. Mikäli jaat opiskelijoille oheisaineistoja Nettiniilon materiaalinjaon kautta, näytetään opiskelijoille linkki materiaalinjakoon automaattisesti

## Tweak-A-bitin lataaminen

Tweak-A-bitti on Google Chrome -selaimen lisäosa. Jos lisäosan rakennetta haluaa tutkia, kannattaa lisäosa ladata ensin omalle tietokoneelle ilman asentamista ja sen jälkeen purkaa lisäosa tiedostoiksi ja lopuksi avata puretut tiedostot selväkielisiksi. Tweak-A-bitin tekijä on käyttänyt paljon aikaa lisäosan tiedostojen saattamiseksi sellaiseen muotoon, ettei niiden analysointi onnistuisi kovinkaan helposti.

Ensiksi lataa lisäosa Firefox-selaimen avulla omaksi tiedostokseen. Tätä varten tarvitset Tweak-A-bitin extensio ID:n, joka tällä hetkellä on "eiieippmbdofchdjnobcghafkcdnekai" ja lisäksi Google Chrome selaimen versionumeron.

Latauskomento on muotoa

https://clients2.google.com/service/update2/crx?response=redirect&prodversion=**[Google-version]**&x=id%3D**[extension-ID]**%26uc

eli täydentämällä nuo vahvennetut kohdat oikein saadaan komennoksi

https://clients2.google.com/service/update2/crx?response=redirect&prodversion=54.0.2840.71&x=id%3Deiieippmbdofchdjnobcghafkcdnekai%26uc

Komento lataa tiedoston "*extension\_0\_17\_.crx*". Vaikka tiedostopääte on .crx, on tiedosto itse asiassa .zip-tyyppinen, joten muuttamalla tiedostopäätteeksi .zip voidaan paketti purkaa kovalevylle. Paketin tiedostoissa suurin osa merkkijonoista on muutettu hexakoodiksi lukemisen estämiseksi. Helppo tapa muuttaa tiedostot tutkimuskelpoisiksi on käyttää Javascript beatufier -ohjelmaa, esimerkiksi osoitteesta http://jsbeautifier.org/ . Tämän jälkeen tiedostot ovatkin jo varsin selväkilisiä, paikalliset muuttujat ja funktiot ovat kuitenkin alaviivalla alkavia numerosarjoja. Näitä voi muutaa käsin editorin replace all -toiminnolla paremmin toiminnallisuutta kuvaaviksi.

## Havaintoja Tweak-A-bitistä

Seuraavat havainnot on tehty tutkittaessa Tweak-A-bitin lähdekoodia.

Rakenteen tutkimiseen ei käytetty paljoakaan aikaa tämän sivun ensimmäistä versiota kirjoitettaessa - jos jollakulla on kiinnostusta tutkia tuota rakennetta tarkemmin, ja varsinkin oma.abitti.fi-palvelimelle lähetettäviä komentoja, niin pydän lisäämään tänne tehdyt havainnot.

### Evästeet

Tweak-A-bitti kääyttää Googlen Analytics-palvelua ja palvelun evästeitä. Analyticsiin liittyvää koodia löytää mm. tiedoston *editing.js* lopusta. Evästeiden avulla lähetetään tämän lisäosan tekijälle paljon yksityiskohtaista tietoa siitä, mitä loppukäyttäjä kulloinkin tekee. Myös monia yksilöiviä tietoja, kuten kokeen tunnistetiedot, lähetetään lisäosan tekijälle.

Lisäosan evästekäytäntö ja osan tekijälleen lähettämät tiedot ovat ristiriidassa Sähköisen viestinnän tietosuojalain (SVTSL) 516/2004 (1.6.2009) määräysten kanssa.

### Injektio-tekniikka

Tweak-a-bitti käyttää toteutuksessaan niinkutsuttua injektiotekniikkaa, jossa valmiiin oma.abitti.fi-palvelun olemassa olevan koodin sisään lisätään uusia ominaisuuksia. Vastaavaa tekniikaa käytetään mm. menestyksekkäissä tietoturvahyökkäyksissä.

Jotta injektio-menetelmällä lisätty koodi toimisi kunnolla, pitää koodin lisääjällä olla erittäin yksityiskohtainen tieto olemassa olevasta järjestelmästän kaikista osista: sekä loppukäyttäjän koneelle ladatusta ohjelmasta että palvelimella sijaitsevasta taustajärjestelmästä. Injektio-tekniikka vaatii toimiakseen sen, ettei varsinaisen järjestelmän toimittaja muuta omaa koodiaan miltään osin.

Tweak-A-bitin tekijä on pyrkinyt monin keinoin peittelemään keinoja, jotta käytetään sekä loppukäyttäjän koneen koodin lisäykseen että taustajärjestelmälle lähetettäviin https-pyyntöihin.

## Ihmettelemisen aihetta

Jotta laajan ja monimutkaisen Injektio-tekniikkaan perustuvan lisäosan (jollainen Tweak-a-bitti) pystyisi ylipäätäään rakentamaan, on todennäköisesti tapahtunut toinen kahdesta seuraavasta (ellei molemmat):

### Työsuhteessa saatujen luottamuksellisten tietojen hyväksikäyttö

Lisäosan tekijä on voinut aiemin olla työsuhteessa järjestelmän toimittajan kanssa. Työsuhteen aikana lisäosan tekijä on saanut haltuunsa järjestelmän rakenteen dokumentit, joita hän sitten hyödyntää työsuhteen päätyttyä.

### Järjestelmän tekijä vuotaa tietoja lisäosan tekijälle

Järjestelmän toimittaja tai joku muu sisäpiiriläinen voi jakaa yksityskohtaista tietoa järjestelmän rakenteesta lisäosan tekijälle. On myös sangen mahdollista, että järjestelmään toimittaja tai sen edustaja ja lisäosan tekijä ovat sopimussuhteesssa keskenään, jolloin etukäteen on päätetty siitä mitä toiminnallisuusksia kumpikin kehittää. Tarpeen tullen järjestelmän kehittäjä voi auttaa lisäosan tekijää, ja etsiä virheitä lisäosan koodista.

Ylioppilaslautakunnan Digabi-tiimin tekemästä (ilmaisesta?) testaustyöstä on myös maininta blogissa http://jannecederberg.fi/2016/04/03/tehtavien-jarjestelyvirhe-korjattu-abitti-selainlaajennuksesta/:

YTL:n kommentti yhteistyöhön:
<tweet id="811654651691102209" conversation />

### Muita vaihtoehtoja

Onhan tietenkin olemassa mahdollista, että oma.abitti.fi:n sisäinen toiminnallisuus ja webbiselaimen rakenne on joko julkisesti tai maksua vastaan saatavilla Ylioppilaslautakunnalta. Tämäkin selittäisi sen, miten joku kolmas osapuoli pystyy tekemään lisäosan järjestelmään.

## Loppusanat

Ylioppilaslautakunnan abitti-järjestelmää kehitetään julkisilla rahoilla. Jos kehitystyöstä hyötyy suoraan tai epäsuorasti joku ylioppilaslautakuntaa lähellä oleva kaupallinen taho, olisi asia syytä selvitää julkisesti mahdollisimman pian.