Kóðinn af Rakning C-19 appinu hefur verið gefinn út!

Gleðifregnir!

Kóðinn að appinu hefur verið opnaður og finnst hér: https://github.com/aranja/rakning-c19-app

Um helgina áttum við @smari samtal við Aranja, um það hvernig væri best að standa að þessu til þess að loka fyrir alla tortryggni gagnvart rakningarappinu. Að ofan er að finna allan kóða að appinu sem fer inn á síma hjá fólki. Appið sendir síðan upplýsingarnar á móttökuvef, sem er kallaður „API“. Það stendur til að opna þann kóða líka, en hann er hinsvegar ekki nauðsynlegur til að sýna fram á hvernig appið virkar. Aðalatriðið er að kóðinn að appinu sé opinn, og hann hefur núna allur verið gerður aðgengilegur, sem er mikið gleðiefni, en ég ítreka að það stendur til að gefa móttökuvefinn út opinn líka. Ég fer aðeins nánar út í þetta síðar í þessu innleggi.

Sjálfur er ég búinn að gramsa í kóðanum og finna þá punkta sem taka upp GPS staðsetningar, geyma þær og senda. Appið er ekki flókið, heldur er frekar auðvelt að rekja sig í gegnum hvar hlutirnir séu (þ.e. fyrir forritara). Hér eftir er smá tæknileg greinargerð frá mér við að skoða kóðann. Ekki er víst að þetta meiki sens fyrir öðrum en tæknimönnum, en ég legg nú samt til að fólk reyni, því tæknimenn eru bara venjulegt fólk sem reyndi á einhverjum tímapunkti að skilja svona hluti og tókst það. :slight_smile:

(Allur kóðinn er undir src möppunni.)

Í skránni tracking.js má finna kóðann sem tekur upp staðsetningarnar. Hann er ágætlega skjalaður og útskýrt er hvað gerir hvað. Notast er við skipanasafn (e. library) sem heitir @mauron85/react-native-background-geolocation til þess að taka upp hnitin, og það skipanasafn er einnig opinn hugbúnaður, sem er hægt að lesa.

Nokkur lykilatriði um tracking.js.

Breytan LOCATION_AGE_LIMIT segir til um hversu lengi er haldið utan um gögn, og þar eru tilgreindar þær tvær vikur aftur í tímnn sem talað hefur verið um. Í sömu skrá er fallið getPoints sem er notað til að sækja uppsöfnuð hnitin þegar það á að senda þau. Eins og sést í fallinu getPoints er gögnum sleppt sem eru eldri en tveggja vikna, þ.e. skv LOCATION_AGE_LIMIT. Þannig getum við staðfest að einungis hnit seinustu tveggja vikna eru send, þegar þau eru send.

Einnig er þarna hægt að glöggva sig á þeim GPS stillingum sem eru notaðar, en ég hef ekki orðið var við sérstakan áhuga á þeim og sleppi því umfjöllun um þær. Það eru hlutir eins og nákvæmni og þess háttar.

Síðan má leita í kóðanum að því hvar getPoints er notað, og sést þá að það er einungis notað í skránni router/logged-in/screens/RequestDataScreen.js.

Sú skrá er skjámyndin þar sem síminn biður notandann um að senda inn gögnin, eins og sést við að opna þá skrá og skoða. Þannig getum við staðfest að gögnin eru einungis send með vitund og vilja notandans, og að notandinn sé spurður í hvert það tilfelli sem þau eru send.

Einnig kemur fram í kóðanum hvert gögnin eru send, en það er á https://api.tracking.covid.is, sem er staðfest undirlén COVID-19-vefsins, sem er á vegum yfirvalda.

Af yfirferðinni tel ég ljóst að appið virkar eins og mér hafði verið lýst því áður af tæknimanni (sbr. fyrra innleggi hér í spjallkerfinu), þegar notandinn er beðinn um að senda inn gögnin. Hvergi í kóðanum er að sjá neitt sem sendir gögn til móttökuvefsins, eða nokkurt annað, undir öðrum kringumstæðum, og sömuleiðis sýnir kóðinn fram á að þeim sé einungis safnað tvær vikur aftur í tímann, enda ekki gagnleg til smitrakningar ef þau eru eldri.

Ef einhver vill spyrja nánar út í kóðann get ég reynt að svara eftir bestu getu.

Að lokum langar mig samt að fjalla aðeins um móttökuvefinn, sem verður gerður opinn seinna, en ég tel ekki nauðsynlegan til að sýna fram á virkni appsins.

Ég hef sjálfur fengið afrit af móttökuvefnum og er með hann á tölvunni hjá mér, en þau vilja bíða með að gefa hann út alveg opinn vegna þess að þau vilja ganga betur frá honum af öryggisástæðum sem ég ætla ekki að fjalla um hérna - en að mínu mati eru málefnaleg og skynsamleg. Viðbót: Það er ekki vegna þess að öryggisgallar séu í þeim kóða, heldur vegna þess að hvernig hann er birtur þarf að taka tillit til samhengis hans við önnur verkefni, sem ekki eru opin. Að mínu mati skiptir hann hinsvegar minnstu máli, vegna þess að alveg sama hvað stendur í honum, getur mótttakandi gagnanna auðvitað alltaf afritað þau eitthvert annað ef hann beinlínis ætlar sér. Þannig er ekki hægt að nota kóðann að móttökuvefnum til að sýna fram á það hvernig mótttökuaðilinn kýs að fara með gögnin; til þess þarf alltaf að treysta honum til að fara með þau samkvæmt því sem hann segir. Enginn kóði og ekkert ferli getur sannað að smitrakningarteyminu sé treystandi.

En hvað varðar appið, þá er það núna opið, og hvaða forritari sem er getur lesið kóðann og reyndar líka stungið upp á lagfæringum.

Sem leiðir mig að síðasta punktinum, sem er ákall til forritara, um að senda inn tillögur að breytingum ef þeir sjá eitthvað sem betur mætti fara. :slight_smile:

3 Likes

Nytsemi þess að gefa út API kóðann er að minnsta kosti 2:

  1. Fólk sjái hvernig er farið með gögnin, þ.e. hverjir geta haft aðgengi að þeim, að gefnum fyrirvara um öryggi.
  2. Öryggisrýni til að staðfesta að ekki séu augljósir öryggisgallar

Ég vil taka fram að ég hef enga ástæðu til að ætla að þessi atriði séu í ólagi.

2 Likes

Þetta eru frábærar fréttir og ég fagna þessu. Þú átt þakkir skildar @helgihg fyrir að standa vaktina í þessu.

En auðvitað þarf ég samt að vera enn með smá leiðindi. :wink:

Ég á alveg eftir að skoða kóðann, en ég hlakka mikið til að fara yfir hann, svo ég ætla ekki að fullyrða neitt um virknina. En almennt séð, þá get alls ekki fallist á það að það sé nægjanlegt að gefa einungis út þann hluta sem keyrir á tækjum fólks. Ef mestöll virknin á sér stað utan viðmótsins (sem er nú oft tilfellið) þá hefur lítið að segja hvernig það virkar.

Þetta, til dæmis, setur mína tortryggni alveg á yfirsnúning. Security by obscurity á sjaldnast rétt á sér og ef enginn má sjá móttökuvefinn af öryggisástæðum, hvað í ósköpunum skyldi þá vera í gangi þar?

Takk fyrir pælingarnar.

Enginn kóði getur sannað að viðtakandinn afriti ekki bara gögnin og setji þau í einhverja aðra dómsdagsvél. Sá sem treystir ekki viðtakandanum til að fara með gögnin samkvæmt því leyfi sem notandinn veitir, ætti aldrei að senda gögnin. Það er engin önnur niðurstaða, alveg sama hversu mikill kóði er opinn.

Hárrétt, en kóðinn fær ólíklega betri yfirferð en þá sem hann hefur fengið nú þegar vegna þess að hún hefur verið eins góð og hún gerist á Íslandi. En samt, alveg rétt hjá þér.

Afsakaðu, ég var óskýr en er búinn að uppfæra innleggið.

Vandinn er ekki öryggisgallar í kóðanum sjálfum, og hann verður gefinn út í þeirri mynd sem hann er núna. Málið snýst um hvernig hann er birtur í samhengi við annan hugbúnað sem ekki er opinn og hefur ekki (ennþá, allavega) farið í gegnum sömu öryggistékk. Ég get því miður ekki útskýrt betur og ef þú telur þig þurfa móttökuvefinn líka, þá þarftu því miður að bíða aðeins lengur. En þetta er ekki „security by obscurity“, enda myndu þau rök gilda yfir appið líka, ef þau giltu yfirhöfuð, sem þau gera ekki.

1 Like

En mestöll virknin á sér ekki stað utan viðmótsins, eins og sést í kóðanum að appinu. Appið býður ekki upp á það. Endilega skoðaðu kóðann og komdu með hugmyndir um hvernig það myndi virka, því það væri fróðlegt að sjá.

Ef þú skoðar kóðann hefði ég einlægan áhuga á því að vita hvernig þú telur að móttökuvefurinn gæti misfarið með kóðann, sem ekki væri nákvæmlega jafn auðvelt þótt sá kóði væri líka opinn. Það er sama hvernig hann virkar, gögnin enda alltaf í höndum smitrakningarteymisins og ef þú treystir því ekki, nú, þá ættirðu aldrei að láta þau hafa gögnin, hvort sem er í gegnum appið, né í smitrakningarskýrslu, né í smitrakningarsamtali.

Ég dreg þá ályktun út frá þessu að verið sé að endurnýta að hluta kóða sem ekki sé frjáls hugbúnaður. Sé svo þykir mér það heldur aum afsökun og ég get í raun ekki séð, sama hvernig ég á að túlka þetta, að þetta séu gild rök fyrir því að birta ekki kóðann. Það hefði átt að vera skýrt frá upphafi af hálfu landlæknis að þannig vinnubrögð væru ekki í boði.

Ég hef ekki komist í að skoða kóðann enn, en þessar 30 sekúndur sem ég hef eytt í að það nú þegar benda nú til þess að þetta sé rétt hjá þér. Ég sá ekki betur en að mestu væri verið að nota local gagnagrunn sem er væntanlega geymdur á símtækinu sjálfu. Ef það er bara kallað í apann til að skila gögnum þegar þar að kemur er þetta mögulega ásættanlegt, en samt á vel gráu svæði og apinn ætti að vera opinn.

Kærar þakkir fyrir þetta Helgi og fyrir að fylgja þessu svona vel eftir.

1 Like

Hjartanlega sammála þessu.

Það verður reyndar að geta þess að þetta var sjálfboðaliðaverkefni af hálfu einkaaðila en ekki að frumkvæði yfirvalda. Hinsvegar ættu yfirvöld að vera með stefnu sem hefði leitt þetta strax á braut opins kóða frá upphafi.

3 Likes