minvws / nl-covid19-coronacheck-app-android

European Union Public License 1.2
44 stars 28 forks source link

Kwetsbaarheid in de methode om de QR + identiteit te controleren #39

Closed Sikerdebaard closed 3 years ago

Sikerdebaard commented 3 years ago

Hi,

Deze kwetsbaarheid is eerder doorgegeven aan het NCSC maar zij zien het niet als technisch beveiligingsprobleem en gaan dit niet verder behandelen. Omdat er verder nergens aangegeven is waar dit aan te kaarten post ik het hier publiekelijk. De kwetsbaarheid vereist geen raketgeleerde om er op te komen dus dit zal ongetwijfeld al veel in het wild toegepast worden.

De kwetsbaarheid: De methode zoals aangegeven in de scanner app laat teveel human error toe. Hier volgt een vector die naar mijn inzicht het makkelijkst te exploiten is in venues die zich netjes aan de stappen in de scanner app houden.

  1. Genereer een (papieren) QR code. Geef hiervan een kopie aan een maatje. Papier is het makkelijkst want hier zit geen time-based challenge in waardoor je niet vast zit aan die 3 minuten. Eventueel kun je ook met je DigiD op de telefoon van een maatje inloggen en de QR Code met time based challenge genereren op de telefoon van je maatje aangezien er geen limiet zit op hoeveel devices gekoppeld zijn.
  2. De meeste mensen hebben meer dan een identiteitsbewijs. Bijvoorbeeld een id-kaart / rijbewijs / paspoort. Een van deze leen je uit aan het betreffende maatje en eentje gebruik je zelf.
  3. Loop de venue binnen. Als er slechts een portier aanwezig is zorg er dan voor dat je een klein stukje uit elkaar in de rij aanschuift zodat de portier twee maal dezelfde naam en geboortedatum niet te verdacht vindt. Je maat indentificeer zich met kopie QR code + geleend identiteitsbewijs. De meeste portiers kijken niet naar de pasfoto op het identiteitsbewijs omdat ze hier niet toe opgedragen worden door de app, er niet voor getrained zijn of vanwege low-light condities die dit bemoeilijken.

Uiteraard zijn er genoeg variaties op deze methode te bedenken waarbij je je telefoon / id uitleent nadat je al binnen bent in een venue mits de situatie dit toelaat. Hierdoor kun je potentieel best wel wat mensen naar binnen krijgen.

Impact: De impact op de volksgezondheid is potentieel groot omdat je ongemerkt mensen toelaat die potentieel niet gevaccineerd of getest zijn maar wel actief het virus verspreiden, of als men het niet zo nauw neemt en positief test maar vervolgens met deze methode een negatieve test / vaccinatie van een maatje gebruikt om toch binnen te komen.

De impact op het individu die van deze kwetsbaarheid gebruik maakt is op dit moment laag. Er is op dit moment weinig toezicht op dit soort identiteitsfraude.

De impact op de horecazaak is potentieel groot omdat zij potentieel een superspread event organiseren en hierdoor de deuren moeten sluiten terwijl hun niet per-sé iets toe te wijten is wanneer ze de scanner volgens de procedure gebruiken.

Potentiele oplossing: Om het gebruik van dubbele id's / QR's tegen te gaan zou je een gastenlijst bij moeten houden. Bijvoorbeeld in de app een lijst met welke id's/QR's reeds gebruikt zijn om toegang te verkrijgen. Dit is lastig vorm te geven door wetgeving maar ook omdat, indien meerdere keren vrij uit/in lopen toegestaan is, je deze mensen constant uit/in moet checken.

Eventueel zou je de scanner app ook de MRZ + NFC uit een identiteitsbewijs kunnen laten gebruiken voordat een groen scherm afgegeven wordt met een fallback naar manuele input wanneer het device geen NFC ondersteund. Dit dwingt de portier om de methode op de juiste manier te gebruiken en staat toe om automatisch een lijst bij te houden. Het gebruik van de NFC is hier enigszins key omdat die lastiger na te maken is terwijl de MRZ slechts een goede kopieer machine vereist.

Bij grotere evenementen is het gebruik van meerdere scanners gewenst die offline moeten kunnen functioneren. Deze zullen de gastenlijst onderling moeten synchroniseren. Dit is geen triviale taak om op te zetten. Dit vereist een vorm van een (P2P) netwerk communicatie tussen de devices en de nodige encryptie om de synchronisatie veilig uit te voeren.

ijansch commented 3 years ago

Dank voor je suggesties. Deze, alsook het gebruik van digitaal ondertekende selfies, zijn overwogen, maar in de afweging tussen security en privacy is ervoor gekozen om niet bij te houden wie waar naar binnen gaat.

NFC is ook overwogen maar omdat het niet 100% dekkend is voor alle devices heb je een fallback nodig die zonder werkt, en zodra die fallback bestaat kan een fraudeur gewoon die fallback benutten, dus het voegt netto helaas te weinig end to end security toe.

Voor nu is inderdaad goede controle aan de deur de beste remedie.