Ik ben de "ethisch hacker" die deze kwetsbaarheden (inmiddels 15 en verder oplopend) op 8 November bij de Gemeente Eindhoven gemeld heeft. Ik zal hier de feiten vertellen, waarvan de meesten niet in het
artikel van het Eindhovens Dagblad verschenen zijn.
De hoofdreden dat er een melding bij de Autoriteit Persoonsgegevens is gedaan, is dat onduidelijk is wat er met de in de ZwemApp ingevulde persoonsgegevens gebeurt. Om de simpele reden, omdat de Algemene Voorwaarden en Privacy Policy van de Eindhoven Sport webshop vanuit de app niet gelezen kunnen worden. Terwijl er wel expliciet door het zetten van 2 vinkjes mee akkoord gegaan moet worden, wanneer een zwemreservering gemaakt wordt. Zelfs als dat als gast gebeurt, waarbij voor-, achternaam en e-mailadres ingevuld moeten worden.
Hoe kan een gebruiker akkoord gaan met voorwaarden die niet getoond worden?
Mijn boerenverstand en nieuwsgierigheid vroegen zich direct af wat het nut is van deze ZwemApp?
Aangezien na installatie en het kiezen van het zwembad, de app niks anders doet dan het vertonen van de Eindhoven Sport webshop in een fullscreen web view.
De
Privacy Policy van de ZwemApp ("SportCom" in de App Store en Play Store) op de website van ontwikkelaar Business Apps B.V. bevindt zich op een smartphone achter een fullscreen Engelstalige cookiemuur. De Engelstalige details op deze cookiemuur, alsook het Nederlandstalige cookiebeleid (wat te lezen is na een keuze voor cookies) noemt bedrijven als LinkedIn, Facebook en Google. Er worden direct marketing en tracking cookies van deze bedrijven in de browser geplaatst, terwijl nog geen toestemming is gegeven.
De Privacy Policy is vervolgens
zeer onduidelijk voor welk product het is ("website", "de app", "onze diensten", "onze apps", "het CMS"), en wie de lezer is ("je", "de afnemer", "de gebruiker").
Bedenk dat ik in deze onduidelijkheid ben beland, alleen maar omdat ik zoiets simpels wil doen als het maken van een reservering voor baantjes zwemmen. Iets wat tot vorige week al 15 jaar volledig anoniem en zonder afspraak kon.
Omdat de app zo vaag is over de Privacy Policy en volledig overbodig lijkt omdat het slechts een bestaande website van de Gemeente Eindhoven opent, vraag ik mij serieus af hóe en óf de Gemeente Eindhoven vooraf haar huiswerk heeft gedaan in het (aanbesteding)traject dat geleid heeft tot introductie van het online reserveringssysteem en de ZwemApp.
Met name omdat na mijn onthulling van de
kwetsbaarheden met de Sportpas vorig jaar, door onderzoek achteraf is gebleken, dat zij hier ernstig in gebreke is gebleven.
Mijn melding vorig jaar werd adequaat opgepakt, de toegangspoortjes werden een dag later buiten gebruik gesteld, gebruikers werden geïnformeerd en maanden later werden verbeterde passen en poortjes in gebruik genomen.
Deze keer werd mijn melding ontzettend laconiek ontvangen door de Gemeente Eindhoven. Uit hun reactie bleek dat mijn melding maar half gelezen was, maar volgens overleg met de afdeling privacy was er niks aan de hand. Waar zij later toch op terug moesten komen, omdat die afdeling wel degelijk een melding had gemaakt bij de Autoriteit Persoonsgegevens.
Verdere vragen van mij werden niet bevredigend beantwoord, of zelfs met leugens.
Vanwege de kwetsbaarheden met de ZwemApp en de ogenschijnlijk overbodigheid ervan, had ik aangeraden om per direct de promotie voor deze app te stoppen, Dat gebeurt middels flyers bij de entree van de zwembaden en op de website van de Gemeente. De flyers lagen er maandag 18 November, 10 dagen na mijn melding, nog steeds. En de
Eindhoven Sport webpagina om de SportCom app te downloaden is tijdens dit schrijven, 11 dagen na de melding, nog steeds beschikbaar.
Een dag voor de invoering van de ZwemApp en het reserveringssysteem heeft een zwemmer op 10 November al zorgen geuit in het Eindhovens Dagblad, zoals in deze
ingezonden lezersbrief te lezen is. Uit de 23 commentaren vallen diverse lezers over de slechte gebruiksvriendelijkheid, en vragen zich openlijk af waarom de app nodig is.
Waarom is deze app zo belangrijk voor de Gemeente? En wat doet die app precies?
Inmiddels heb ik Zondag 17 November mijn 5e rapport met de Gemeente gedeeld en ben ik met mijn 6e bezig.
De vervolgrapporten gaan vooral over de Android en iOS apps en het feit dat de
Privacy Policy van de Gemeente Eindhoven op de webshop niet voldoet aan de eisen van de grondslag toestemming uit de Algemene Verordening Gegevensbescherming (AVG).
De
Play Store omschrijving van de SportCom app toont 24 machtigingen voor toestemming tot apparaat gegevens (zoals camera en microfoon). Ik heb nooit gezegd dat de app (ongevraagd) deze toestemmingen geeft. Dit is waarschijnlijk verkeerd geïnterpreteerd door de verslaggever van het Eindhovens Dagblad. Mijn vraag was: "Waarom is dit nodig voor het maken van een zwembadreservering?".
Veel kwalijker is dat zowel de Android als iOS app software bevatten van Firebase (van Google) en App Center Analytics (van Microsoft). Voor Android zelfs specifiek Firebase Analytics. Terwijl de
Play Store omschrijving van de SportCom app expliciet vermeldt dat er in de app geen gegevens verzameld worden, en geen gegevens met derden gedeeld worden.
Tot overmaat van ramp zijn deze Firebase SDKs sterk verouderd. In de Android app zit een 2,5 jaar oude versie, bij iOS 4,5 jaar oud. Google heeft sindsdien in updates van beide varianten diverse kwetsbaarheden gedicht. Die dus niet zitten in de SportCom app, waarvan de Android versie vrijdag nog een update heeft gekregen.
Dat vertelt mij dat app ontwikkelaar Business Apps B.V. niet erg verantwoordelijk omgaat met zijn producten. Die hij verkoopt aan tientallen klanten. Een iOS IPA bestand is gewoon een ZIP bestand. Even die van de SportCom app uitpakken, niemand hoeft iets te hacken. Dan staan er 187 icoontjes van klanten, zoals Eindhoven Sport met klantnummer 1758.
Ik heb gisteren het HTTP verkeer vanuit de Android versie van de SportCom app geanalyseerd. Hieruit blijkt dat de app bij iedere actie die je doet (zoals het klikken op "Reserveer je activiteit") een log stuurt naar de server van Business Apps B.V. met allerlei device data, zoals device ID, device name, taal, tijdzone, platform naam en versie, wifi status en uiteraard de actie.
Daarnaast gaat er periodiek een soortgelijk log bestand naar de App Center server van Microsoft met als service "Analytics" in de request body.
Met dit nieuwe onderzoek is aangetoond dat de Android versie van de SportCom app wel degelijk gegevens verzamelt én deelt met derden. Dit is in strijd met de verklaring van Business Apps B.V. in hun
Play Store omschrijving.
Omdat deze SportCom app een verzamel app is die door tientallen bedrijven (waaronder Gemeente Eindhoven) gebruikt wordt, is de impact groter dan alleen de inwoners van Eindhoven. Daarom zal ik op korte termijn hiervan een melding maken bij de Autoriteit Persoonsgegevens.
Er zijn 3 redenen waarom ik als "ethisch hacker" nu onethisch (
80s 90s hacker?) de publiciteit heb opgezocht:
- Ondanks mijn waarschuwingen blijft de Gemeente Eindhoven de ZwemApp actief promoten.
- Ondanks dat de Gemeente Eindhoven onder verscherpt toezicht staat van de Autoriteit Persoonsgegevens, maakt ze weer dezelfde fout door vooraf geen risicobeoordeling te maken. Dit onverantwoordelijke gedrag mag aan de kaak gesteld worden.
- De ZwemApp ("SportCom" van Business Apps B.V.) wordt door tientallen andere klanten (waaronder gemeenten) gebruikt. Ook de eindgebruikers daarvan worden blootgesteld aan de kwetsbaarheden en moeten gewaarschuwd worden.
[Reactie gewijzigd door The 80s hacker op 19 november 2024 16:13]