De broncode van de veelbesproken CoronaMelder-app bevat vier tegenstrijdigheden. Dat blijkt uit een rapport van onderzoeksbureau Secura dat in opdracht van het ministerie van VWS de code onderzocht. Ze stellen vast dat er een verouderde versie van een softwarebibliotheek is gebruikt. Ook krijgen eigenaren van een gekraakt toestel geen melding dat ze een verhoogd beveiligingsrisico lopen.
Securityspecialist Matthijs Koot en technisch directeur Ralph Moonen delen in hun rapport met de naam ‘Source Code Review’ vier ‘kleine inconsistenties’. Zo maakt de iOS-applicatie van CoronaMelder gebruik van een verouderde versie van een softwarebibliotheek voor de transportbeveiliging en implementatie van andere cryptografische functies. Het gaat om versie v.1.1.1D, die niet de meest recente versie is en waarvan bekend is dat deze kwetsbaarheden bevat.
De onderzoekers: ‘De kwetsbare delen van de bibliotheek worden echter niet gebruikt door de app, waardoor er geen impact is op de veiligheid of privacy.’ Ze bevelen de bouwers van de app aan om altijd de meest recente versie van bibliotheken die geen bekende kwetsbaarheden bevatten, te gebruiken. Daardoor moet voorkomen worden dat toekomstige versies van de app code kunnen bevatten die kwetsbare delen van de bibliotheek aanroept.
Ten tweede worden sommige cryptografische handtekeningen, die worden gebruikt om de sleutels te valideren die blootstellingsmeldingen ontgrendelen (zogenaamde tijdelijke blootstellingssleutels of TEK’s), slechts gedeeltelijk gecontroleerd. Hierdoor zouden in theorie alle houders van een recent door KPN afgegeven PKI Overheid-certificaat geldige handtekeningen kunnen overleggen. Dat schendt volgens de onderzoekers gedeeltelijk de integriteitsvereisten die in de architectuur zijn vastgelegd. Secura kan echter geen scenario noemen waarin deze fout door een aanvaller zou zijn te misbruiken.
Privacy-risico’s
Ten derde voert de app geen controle uit om te zien of deze op een ge-root of gejailbreakt apparaat draait. In zo’n geval is het toestel gekraakt om bijvoorbeeld ongeautoriseerde programma’s te installeren of beperkingen van de fabrikant te omzeilen. De onderzoekers wijzen erop dat het uitvoeren van een app op een ge-root (Android) of gejailbreakt (iOS) apparaat beveiligings- en privacyrisico’s met zich meebrengt. ‘Dit kan de integriteit van alle apps en communicatie schaden.’ Ook benadrukken ze dat mogelijk niet alle gebruikers die risico’s kennen. Een waarschuwingsmelding zou daarom op zijn plaats zijn.
Ten vierde noemen de onderzoekers zogenoemde ‘afleidingsberichten’ die verzonden worden om het voor aanvallers moeilijker te maken om zinvolle informatie uit berichten te halen. ‘Als de app is uitgeschakeld, worden er nog steeds ‘lokmeldingen’ verzonden. Dit is niet volledig in overeenstemming met de functionele vereisten en kan onder specifieke omstandigheden een aanvaller helpen om gebruikers van de app te identificeren, zelfs als de app is uitgeschakeld.’
Het rapport wordt door het Eindhovense onderzoeksbureau Secura als vertrouwelijk aangeduid. Dat is opmerkelijk omdat het als openbaar te downloaden bijlage is toegevoegd aan de Kamerbrief. In die brief informeert minister De Jonge de Tweede Kamer over de voortgang van de ontwikkeling van de CoronaMelder.
Aanbevelingen
De onderzoekers doen de volgende vier aanbevelingen:
- Valideer dat het “Onderwerpnaam” -gedeelte van het TEK-toewijzingscertificaat het juiste “Algemene naam” -veld (CN) bevat.
- Toon een waarschuwing op toestellen die proberen de app te installeren op apparaten met een vastgelopen of ge-root apparaat.
- Werk de OpenSSL-bibliotheek bij naar de nieuwste versie die geen publiekelijk bekende kwetsbaarheden bevat.
- •Schakel het verzenden van lok-berichten (decoy messages) uit wanneer de app is uitgeschakeld.
Controle Github en appstore
In de Kamerbrief vermeldt minister De Jonge dat Secura op zijn verzoek de broncode van de app heeft onderzocht en dat het bedrijf constateert dat er geen ongewenste code is toegevoegd en dat de code veilig is. Wel verwijst hij naar de genoemde aanbevelingen en benadrukt dat deze worden opgevolgd.
De Jonge: ‘Ik heb tevens een notaris laten meekijken of de versies die beschikbaar zijn gesteld aan Apple en Google voor de app-winkels dezelfde versies zijn die op Github zijn gepubliceerd en waarop door de community is meegekeken. Hiertoe heeft de notaris een zogenaamde ‘verified build’-verklaring afgegeven.’
Zo’n verklaring, waarbij een accountant controleert of de versie in de App Store (Apple) en Play Store (Google) overeenkomt met de versie die op het ontwikkelplatform (Github) gepubliceerd is, is volgens betrokkenen een nieuwe stap binnen de ontwikkeling van opensource-apps bij de Nederlandse overheid.
Vertraging app
De CoronaMelder voor contactonderzoek naar Covid-19-besmettingen zou, na eerder te zijn uitgesteld, rond 1 september 2020 landelijk worden ingevoerd. Dat is onder meer vertraagd doordat er nog niet door de Eerste en Tweede Kamer is ingestemd met een spoedwet waarin belangrijke privacy-kwesties zijn vastgelegd.
Deze week verschijnt ook een rapportage over een pentest van de app. Uit die bijlage van de Kamerbrief over de voortgang van de app (Managementsamenvatting Penetratietest CoronaMelder), komen 25 kwetsbaarheden naar voren die inmiddels zouden zijn opgelost. Dat staat in een andere bijlage van de Kamerbrief over de voortgang van de app. Het uitgebreide pentest-rapport laat nog op zich wachten, maar volgens minister De Jonge staan er geen zaken in die een veilige invoering van de app in de weg zouden staan.