VERBETER JE CODE, VERBETER DE BUURT!

Veel gemeenten in Nederland maken gebruik van de app ‘Verbeter de Buurt’. Je kan hiermee allerlei zaken aan de gemeente melden, zoals bijvoorbeeld losliggende stoeptegels, afvaldumpingen en omgewaaide bomen. Fijn, want dan hoef je niet te bellen, en mijn gemeente lost je melding vaak ook nog eens binnen een dag op. Ook zie je meldingen van andere gebruikers, waardoor je weet of de gemeente al in actie komt.

Verbeter de Buurt maakt het helaas ook erg makkelijk om publiekelijk, anoniem bij de gemeente te klagen over anderen. Waar je vroeger even bij je buurman moest aanbellen als z’n aanhanger een maand voor je huis stond, doen sommige mensen nu anoniem een melding hierover.

Zo werd er ook een melding gedaan over een kunstproject waar ik aan meewerkte. Ik was benieuwd wie er geklaagd had, want er is tijdens de uitvoering van het project niemand naar ons toe gekomen. Ook hadden we van tevoren briefjes met uitleg in de deur gegooid bij de buren, dus ik vroeg me af of we gefaald hadden in onze communicatie in de voorbereiding.

Niet anoniem

De melding werd anoniem gedaan bij Verbeter de Buurt. In de app werd ‘Anonieme Buurtverbeteraar’ weergeven bij de username, wat betekent dat de melder het vinkje ‘anoniem melden’ had aangevinkt. Via een proxy zag ik dat de api van de app toch iets meestuurde. In de json stond bij elke melding de “owner_email“, waardoor het makkelijk te achterhalen was welke buurman de melding had gedaan, aangezien de voorletters en de achternaam in de mailadres verwerkt waren.

Na deze vondst heb ik het voor de verandering een keer niet meteen op Twitter geslingerd. Het lekken van persoonsgegevens is een serieuze zaak, en een platform als Verbeter de Buurt, dat door een enorme hoeveelheid gemeenten gebruikt wordt, is wat anders dan een pretparkje als Walibi.

Het mailadres van de ‘anonieme buurtverbeteraar’

Geen responsible disclosure

Dus ik ging op zoek naar een responsible disclosure, die er niet bleek te zijn. Daarna naar een telefoonnummer, dat vervolgens niet werd opgenomen toen ik een paar keer belde. Uiteindelijk heb ik het contactformulier ingevuld. Toen ik na een dag geen reactie had, heb ik het ook even bij de verantwoordelijke binnen mijn gemeente neergelegd, met het idee dat ze wel een direct lijntje naar Verbeter de Buurt zouden hebben.

Toen ging het snel. De gemeente bereikte Verbeter de Buurt wel. Verbeter de Buurt belde mij. Het lek is aangegeven bij Autoriteit Persoonsgegevens. Er werd een patch gedaan in de api. En toen was het klaar, dachten we.

Nog veel meer persoonsgegevens

De mailadressen in de json vond ik binnen 5 minuten, via een proxy op m’n telefoon. Ik had antwoord op de vraag welke buurman het was, en ben weer verder gegaan met m’n dag. Toch knaagde het, want als er zoiets simpels misgaat, wat zou je dan kunnen vinden als je er nog een uurtje naar kijkt? Hoe goed is er nagedacht over een app die hoogstens eens in de 2 jaar een update krijgt van de developers, en nog steeds niet de iPhone X ondersteunt?

Dus ik besloot er iets beter naar te kijken. Nadat ik de json opende op m’n laptop (niet ingelogd, gewoon element inspect in de browser), zag ik dat er ook een veld werd meegestuurd dat ‘private_note‘ heette. In de meeste gevallen was dit veld leeg, maar na wat scrollen vond ik weer een enorme berg aan persoonsdata.

De “private_note” is volgens de website een veld dat alleen naar de gemeente wordt gestuurd. Hier kan je nog wat info kwijt die niet voor publicatie is, zoals telefoonnummers of verdere informatie. Dat was wel duidelijk toen ik de inhoud zag. Het stond vol met telefoonnummers, adresgegevens en andere notities van de melders.

‘Private_note’ volgens de changelog van VDB

Kladblok voor de gemeente

Ook kreeg ik de indruk dat de gemeente dit veld soms gebruikt om meer info in op te slaan. Dit is slechts een vermoeden, maar dat concludeer ik uit de manier van schrijven. Vaak stond er namelijk iets in de derde persoon geschreven, zoals bijvoorbeeld ‘Mevrouw X die woont op Y meldde dit. Ze is te bereiken op Z.’ Ook stond er soms een telefoonnummer in dat de melder helemaal niet kan hebben, zoals het telefoonnummer waarop de directeur van een school te bereiken was voor overleg over de melding.

Maar of dit vermoeden nou juist is of niet; Er staat heel erg veel persoonsdata en andere gevoelige info in dit veld.

Ook dit datalek heb ik weer gemeld bij Verbeter de Buurt en de gemeente, en is inmiddels gefixt in de api.

Omschrijving in de derde persoon
Telefoonnummer en naam van een schooldirecteur

De moraal van het verhaal?

  1. Bel even aan bij je buren als je iets kwijt wilt. In ons geval had de buurman een excuus, een stuk taart en champagne gehad, om te vieren dat we nog minimaal twee jaar buren zijn.
  2. Ga er nooit zomaar vanuit dat je anoniem bent op internet, klagers.
  3. Mijn leerlingen (6-12 jaar) hadden deze (persoons)datalekken kunnen vinden. Dus step up your game, Verbeter de Buurt. Dit kan en mag echt niet.
  4. Het is me een groot raadsel waarom al die gemeenten in Nederland dit niet hebben opgemerkt de afgelopen jaren. Ik ben heel benieuwd hoe dit door het selectieproces is gekomen, en wat de eisen zijn om met je software zo’n rol in te nemen in de maatschappij.
  5. Als je een patch doet op je api, kijk dan in ieder geval voor de zekerheid even of je op dezelfde pagina niet nog een berg persoonsdata lekt, want dit is natuurlijk niet helemaal handig gegaan.

Joe.

PS. Ik heb uiteraard niet massaal data binnengehaald of opgeslagen. De screenshots zijn gemaakt om de melding richting vdb en de gemeente te kunnen doen. Deze screenshots heb ik alleen nog in geblurde vorm.

Een gedachte over “VERBETER JE CODE, VERBETER DE BUURT!”

  1. Ha Jan,

    Fijn bericht. Volgens de gemeente was verbeterde buurt een soort afstudeerstage/ opdracht van iemand in Nederland. Dat is althans wat ze tegen mij zeiden toen ik meldde dat de app ook op bepaalde Samsungs ook niet meer werkt.
    Qua gebruik is hij ook gedateerd, maar dat is een ander verhaal :).

Laat een reactie achter aan Rik Antwoord annuleren

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *