Belgische toezichthouder onderzoekt mogelijk beveiligingslek in CovidScan-app

De Belgische Gegevensbeschermingsautoriteit onderzoekt een mogelijk beveiligingslek bij het valideren van Covid Safe Tickets in de CovidScan-app. Daarbij zijn mogelijk ruim 39.000 mensen getroffen.

De Gegevensbeschermingsautoriteit heeft het mogelijke beveiligingslek op woensdag zelf bekendgemaakt, schrijven verschillende Belgische media, waaronder De Morgen. De CovidScan-app wordt gebruikt om QR-codes uit de Belgische CovidSafe-app te lezen en te valideren. Met zo'n QR-code kunnen mensen aantonen dat ze gevaccineerd of getest zijn voor het coronavirus, of eerder het coronavirus zelf hebben opgelopen, om daarmee toegang te krijgen tot bepaalde evenementen.

Volgens de GBA doet het mogelijke beveiligingslek zich voor bij een bepaalde versleutelde lijst. Daarop zouden mensen staan die gevaccineerd zijn tegen het coronavirus, maar later alsnog positief getest zijn voor dat virus. Van die mensen wordt hun vaccinatiebewijs opgeschort, waarna ze op een suspension list terechtkomen, die via het web benaderbaar is. Deze lijst is versleuteld, maar kon via de CovidScan-app alsnog worden uitgelezen. Volgens de GBA zijn er 'ruim' 39.000 mensen getroffen.

De privacytoezichthouder geeft aan dat het probleem is opgemerkt door een burger, schrijft ook Le Soir. Het gaat om een medewerker van de Universiteit van Louvain-la-Neuve, die erin slaagde om de suspension list uit te lezen, dankzij een encryptiesleutel die in de CovidScan-app zit verwerkt. Het zou daarmee in theorie voor hackers mogelijk zijn om een lijst in te zien met gegevens van gevaccineerde personen die positief zijn getest op het coronavirus. Volgens De Morgen geeft de GBA aan dat het de zaak als 'zeer ernstig' opvat en deze zal 'opvolgen', maar er zijn nog geen details over mogelijke vervolgacties. Voor zover bekend is het lek nog niet gedicht, meldt het dagblad.

Door Daan van Monsjou

Redacteur

13-10-2021 • 20:02

24 Linkedin

Lees meer

Reacties (24)

24
24
15
4
1
9
Wijzig sortering
Pour la petite histoire: Guillaume Derval van de LLN universiteit die het ontdekte is ongetwijfeld een uitstekend informaticus, maar is ook de drijvende kracht achter de antivax-website "covidrationnel", die in Franstalig België enorme invloed uitoefent en zowat eigenhandig verantwoordelijk is voor de lage vaccinatiegraad in Brussel en Wallonië.

Kudos voor het ontdekken van een belangrijk beveiligingsissue, maar dat hij er voor kiest om bij de GBA aan te kloppen en het in de media uit te smeren *voordat* hij een poging tot responsible disclosure doet met de developers, lijkt me niet alleen ethisch bedenkelijk maar dient bovendien ook politieke motieven voor die man.

Hij had een mogelijkheid om op constructieve manier bij te dragen aan de strijd tegen covid maar heeft bewust gekozen voor een tactiek die meer chaos creeert, want dat is in zijn ideologische voordeel. Dat is misschien zijn recht, maar dat is ook jammer.
Meer duidelijkheid over de 'lek':
https://datanews.knack.be...article-news-1790141.html
'Wij zien dat niet als een veiligheidsprobleem. Unieke certificaatnummers moeten rood scannen als ze niet meer geldig zijn, dus die worden in een publieke lijst bijgehouden zodat de app dagelijks kan nagaan welke codes vandaag ongeldig zijn. Maar dat gaat enkel om certificaatnummers, geen ID's, geen reden waarom ze ongeldig zijn.'
Het gaat om certificaatnummers die op geen enkele manier gelinkt kunnen worden aan personen.

[Reactie gewijzigd door THA_ErAsEr op 15 oktober 2021 10:52]

Als de decryptie-sleutel überhaupt aanwezig is in de app, dan mag het geen verrassing zijn dat deze uitlekt. Dat zouden ze toch wel horen te weten?

Zelfde idee als keys in (client-side) javascript inbouwen. Kleine moeite om dit te 'kraken'.
There’s no way to secure secrets stored on the client. Once someone can run your software on their own device, it’s game over.
Afhankelijk van de hoeveelheid rechten die je met je programma kan krijgen, kun je heel goed geheimen aan de clientkant bewaren. Dat is bijvoorbeeld hoe restrictieve DRM werkt. Een Netflix-4K-stream downloaden doe je niet eventjes, daar zit serieuze beveiliging op. Toch kun je op de meeste Android-TV's en Chromecasts gewoon je eigen apps testen en debuggen.

Dat gezegd hebbende, je moet de secrets wel goed bewaren als je ze bewaart. De secure enclave wordt genoemd in de post die je linkt, en die kun je gebruiken voor een lokaal-gegenereerd geheim zonder bang te hoeven zijn dat anderen daar aanzitten.

De echte les hier is wellicht dat het gebrek aan een goede terugroeplijst een probleem is. De Nederlandse versie heeft deze feature niet eens (ben je gevaccineerd en krijg je corona dan heb je nog gewoon een groen vinkje) maar als ze zo'n feature toevoegen, dan hoop je op zijn minst dat de identiteit van de mensen op die lijst voldoende geheim blijft.

Er is overigens een reden dat men op het web OCSP stapling heeft ontwikkeld: certificaatterugroepingen zijn moeilijk goed te doen zonder privacyproblemen, en daarom sturen veel servers een kort geldig, door hun CA-ondertekend bericht mee met hun certificaat dat bewijst dat het niet teruggetrokken is. Om zoiets in de corona-apps te doen, moet er serieus worden nagedacht zodat er geen misbruik van kan worden gemaakt.
Op de Nederlandse versie moet je dan vziw de client/bezoeker de QR code laten intrekken middels een check bij de server. Dit maakt de app afhankelijk van Internet en online infrastructuur.

Als je de code ongeldig laat verklaren aan de controlerende kant middels een lijst moet je een unique identifier toevoegen wat niet kan c.q. tegen de belofte/regels in is.
Een Netflix-4K-stream downloaden doe je niet eventjes
De stream downloaden doe je niet zo maar. Met voldoende motivatie breekt iemand daar ook zo iemand doorheen.

De stream kopiëren is anders wel relatief makkelijk. Windows beschermd bv de DRM van Netflix (en andere programma's), maar op driver niveau banjer zo om die beveiliging heen.

Elke beveiliging is te breken en je kunt nooit clients vertrouwen. Er is altijd wel een weg omheen. Het was bij DOOM al bekend dat je nooit de client kan vertrouwen hoe goed je je best ook doet.
Kun je niet gewoon een Elgato gebruiken, of iets soortgelijks wat tussen de hdmi-verbinding te plaatsen is?
Afhankelijk van de hoeveelheid rechten die je met je programma kan krijgen, kun je heel goed geheimen aan de clientkant bewaren. Dat is bijvoorbeeld hoe restrictieve DRM werkt. Een Netflix-4K-stream downloaden doe je niet eventjes, daar zit serieuze beveiliging op. Toch kun je op de meeste Android-TV's en Chromecasts gewoon je eigen apps testen en debuggen.
Corrigeer me aub als ik er naast zit. Is het voor DRM (Fairplay-streaming oid) niet van belang dat dit ondersteund wordt door het OS (of browser)? De server die de key opstuurt moet 100% zonder twijfel weten dat deze alleen bij de legitieme app terecht komt. Voor zover ik kan vinden bestaat deze functionaliteit simpelweg niet, enkel DRM voor streaming video (en audio?). Zonder support van Android/iOS lijkt me dit gewoon niet veilig te kunnen. Mocht dit wel kunnen lees ik hier graag meer over.
Dat gezegd hebbende, je moet de secrets wel goed bewaren als je ze bewaart. De secure enclave wordt genoemd in de post die je linkt, en die kun je gebruiken voor een lokaal-gegenereerd geheim zonder bang te hoeven zijn dat anderen daar aanzitten.
Een lokaal-gegenereerd geheim kan je inderdaad veilig bewaren. Hoe ga je hier echter een bestand mee decrypten? Het probleem is dat de key vanuit een andere server moet komen, en juist niet lokaal gegenereerd moet zijn. Public/Private keys lossen wel een deel op, maar hoe kan je zeker weten dat een key gegenereerd is door een legitieme app, of door een neppert?
...rest van je bericht....
Mee eens, bedankt voor de toevoeging! Dit is heel moeilijk (zo niet onmogelijk) om voor elkaar te krijgen zonder privacy in te leveren.
Maar wat staat er precies in die lijst? Enkel een identifier naar je app of ook echt persoonsgegevens?
Hij kan de lijst uitlezen, maar is er ook daadwerkelijk een lek van persoonsgegevens?
Naar alle waarschijnlijkheid is het een lijst van rijksregisternummers. Op zich kan je hiermee niet meteen aan identiteitsfraude doen en kan je normaal gezien ook niet meteen weten over wie het gaat. Er zit wel een geboortedatum in het nummer verwerkt, dus als je een vermoeden hebt van een persoon kan je op deze manier wel een vrij grote zekerheid bekomen. De HR-afdeling van een werkgever kent dit nummer wel, dus dat zou wel een probleem kunnen geven.
Wat mij dan meer dwars zit is dat blijkbaar in de Belse variant niet enkel de initialen + geboortedag/maand in de QR staat maar ook het bsn nummer of equivalent. Ik weet niet of men in België is beloofd dat de privacy gewaarborgd zou zijn, maar da's dus een wassen neus.
Het werkt niet (enkel) met rijksregisternummers. Bv. Mensen zonder verblijfsvergunning kunnen ook een vaccinatie certificaat krijgen, en hebben niet altijd zo'n rijksregistratie nummer.
Uit https://twitter.com/philaloux/status/1448686526741811208 leid ik af dat het gaat om een lijst met ingetrokken QR-codes. Het lek bestaat er dan in dat je, mits je de QR-code hebt kunnen kopiëren van iemand wiens identiteit je kent, je die code dan kan kruisen met de lijst en daaruit kan afleiden of hij/zij op die lijst staat of niet (hetgeen iets prijsgeeft over vaccinatiestatus). Maar je moet dus eerst de hand kunnen leggen op iemands QR-code.

Het lijkt een "lek" van het genre, dat iemand die je paspoort steelt, daarmee je woonplaats te weten komt.
Wat me meer opvalt is dat er 39000 mensen zijn die positief zijn getest ondanks dat ze gevaccineerd zijn. En dat kan wel vrij deelnemen aan de huidige situatie want ze hebben een geldige qr.
Het is geen nieuw lek, het is een lek wat er al langer in zit maar wat nu pas naar buiten gekomen is, dit betreft dus alle mensen die op de lijst staan, maar ook zij die er op hebben gestaan.

Er zijn op dit 8.37 Miljoen Belgen volledig gevaccineerd (73.3%)
Alleen de afgelopen 2 maanden zijn er al 120.000 besmettingen geconstateerd.

Het vaccin doet zijn werk dus schijnbaar goed want niet-gevaccineerden lopen dus een vele malen grotere kans om een geconstateerde besmetting te hebben.

Ik vindt het prima cijfers :)

En deze 39.000 mensen konden dus gedurende een bepaalde periode juist niet deelnemen aan de veel dingen want hun code was tijdelijk opgeschort.

[Reactie gewijzigd door Groningerkoek op 14 oktober 2021 00:34]

Het is geen nieuw lek, het is een lek wat er al langer in zit maar wat nu pas naar buiten gekomen is
Das vrijwel altijd zo, de lekken zijn niet zo obvious dat ze gelijk bij release door een derde partij gevonden worden. Ze zitten al tijden (soms +20 jaar, zoals bij de recente printer issues) in de functionaliteit, maar zijn niet eerder opgemerkt.
De gelekte lijst maakt je (Belgische) QR code dus blijkbaar ongeldig. Waarom zou de lijst anders bestaan en uitgelezen kunnen worden door de app.

[Reactie gewijzigd door gimbal op 13 oktober 2021 23:02]

Wat me meer opvalt is dat er 39000 mensen zijn die positief zijn getest ondanks dat ze gevaccineerd zijn.
Met ruwweg 28000 positief geteste Belgen in de afgelopen 14 dagen (waarvan waarschijnlijk de meerderheid niet gevaccineerd is) is dat inderdaad zeer veel.

Wellicht zit ik er helemaal naast, maar wat ik kan bedenken als redenen is dat de "intrekkening" niet tijdelijk is (d.w.z. voor volledig gevaccineerden niet automatisch vervalt na de quarantaineperiode) en/of dat het deels gaat om permanente intrekkingen van frauduleus uitgegeven QR-codes.
Nee, ze kunnen net niet vrij deelnemen dankzij deze lijst die aan de scan app doorgeeft dat hun code tijdelijk ongeldig is.
Was handiger geweest als ze zoiets in EU verband zouden developen
De app zelf is gebaseerd op de open source app die ook in andere landen gebruikt wordt. De suspension list van mensen die gevaccineerd zijn maar toch positief getest hebben is een recente toevoeging aan de app, en dus mogelijk zelf ontwikkeld.
Het niet in kunnen trekken van een 'QR code' is dan ook een stompzinnige miskleun. Dat had na uitrol gezamenlijk ontwikkeld moeten worden.
Erg lastig want elk land heeft zijn eigen methoden voor opslag van persoons en medische gegevens, er is overeenstemming omtrent het accepteren van elkaars QR codes en dat lijkt mij in het gegeven tijdsbestek het hoogst haalbare.
Dit is inderdaad bijzondere dom..

Slimmer was geweest als er alleen keys op de lijst stonden die niet direct herleidbaar zouden zijn tot een burger. Ik snap echt niet waarom dat wel het geval was. Dan was encryptie nergens voor nodig.. het had net zo goed een lijst met SHA256 hashes kunnen zijn (hash van de volledige data van de QR oid..).

Op dit item kan niet meer gereageerd worden.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee