Het lek bij wijkzorg-app “Naaste”
Fictief incident bij de doorlopende casus, opgeschreven zoals een publieke post-mortem eruit zou zien. Realistisch samengesteld uit terugkerende patronen: een kopie van productiedata buiten productie, een melding die op de verkeerde mat belandt, en een organisatie die het nieuws niet als eerste vertelt.
1De feiten
- Wie
- Wijkzorg-organisatie “Naaste”, ca. 60 medewerkers, 1.412 cliënten. App gebouwd en beheerd door een extern bureau van negen man.
- Wat
- Een volledige kopie van de productiedatabase stond ruim elf weken in een testomgeving van de bouwer, bereikbaar vanaf het open internet met een standaardwachtwoord.
- Welke gegevens
- Zorgnotities (A1) en medicatiegegevens (A2) van 1.412 cliënten over zes maanden, plus de chatgeschiedenis met mantelzorgers (A5) en 214 mantelzorgeraccounts (A3).
- Hoe lang
- 79 dagen tussen het plaatsen van de kopie en de eerste melding van buiten; 116 dagen tot cliënten het hoorden.
- Hoe bekend geworden
- Een externe onderzoeker mailde het naar info@ — daar bleef het twee weken liggen. Cliënten lazen het uiteindelijk in de regionale krant.
2De tijdlijn
Drie momenten zijn gemarkeerd. Wat ertussen zit — 79 dagen blind, 14 dagen doof, 6 dagen stil — is waar dit lesblok over gaat.
- 3 nov09:12T0 · het begint
Een ontwikkelaar kopieert productiedata naar een testomgeving
Er is een melding dat medicatiegegevens niet synchroniseren bij een deel van de cliënten. De ontwikkelaar krijgt het probleem niet nagebootst met testdata en trekt een kopie van de productiedatabase naar de sandbox-omgeving van het bureau. Niemand verbiedt dit; er is ook geen afspraak die het toestaat. De handeling wordt nergens vastgelegd.
- 3 nov17:40
De bug is gevonden en opgelost — de kopie blijft staan
De sandbox draait een dashboard voor logs en database-inspectie, bereikbaar vanaf internet, met de meegeleverde inloggegevens. Dat was voor testdata nooit een probleem.
- 79 dgn79 dagen niemand die kijkt
Geen monitoring op de sandbox, geen inventarisatie van omgevingen, geen periodieke controle vanuit “Naaste” bij de bouwer. Het contract regelt beschikbaarheid en support, niet wat er met data mag gebeuren.
- 14 jan02:40
Een geautomatiseerde scanner vindt het dashboard
Niet gericht op de zorgorganisatie: een scanner die het hele internet afgaat op bekende dashboards met standaardwachtwoorden. In de twee nachten erna wordt de database in delen gedownload.
- 22 jan16:20iemand merkt het
Een onderzoeker mailt info@naaste.nl
Een beveiligingsonderzoeker treft de dataset aan, herkent Nederlandse zorgdata en stuurt een keurige melding naar het enige adres dat op de site staat. Er is geen security.txt, geen meldpunt, geen procedure.
- 22 jan16:55
De officemanager markeert de mail als phishing
De mail vraagt om bevestiging dat het domein van de organisatie is en bevat een link. Dat is precies het patroon uit de awarenesstraining van vorig jaar. De mail gaat naar de spammap — de training werkte, de organisatie niet.
- 14 dgn14 dagen niemand die luistert
Er is geen tweede kanaal. De onderzoeker probeert het telefoonnummer op de site: dat komt uit bij de zorgplanning, die niet weet waar ze zo’n vraag moet laten.
- 4 feb11:30
De onderzoeker vindt de functionaris gegevensbescherming via LinkedIn
Hij meldt erbij dat hij het over twee weken publiek maakt, en tipt een regionale journalist zodat het niet stil kan blijven.
- 5 feb08:50
De directeur hoort het en belt de bouwer
Er is geen incidentprocedure. De directeur, de FG en de teamleider zoeken in de loop van de ochtend uit wie waarover gaat. Bij de bouwer weet in eerste instantie niemand van welke omgeving sprake is.
- 5 feb11:30
De sandbox gaat offline
Binnen tweeënhalf uur na het eerste telefoontje. Vanaf hier gaat het snel — en dat is precies waarom de trage helft ervoor zo zwaar weegt.
- 6–7 feb—
De omvang blijkt niet vast te stellen
De sandbox bewaarde geen toegangslogs. Er is te zien dát het dashboard open stond, niet wie er is geweest of wat is opgehaald. De zin “we hebben geen aanwijzingen dat gegevens zijn gedownload” is letterlijk waar en volstrekt misleidend.
- 8 feb17:00
Melding bij de Autoriteit Persoonsgegevens
Drie dagen nadat de directeur het hoorde — maar zeventien dagen nadat de organisatie de eerste melding ontving. Of de 72-uursklok op 22 januari of op 5 februari begon, is de scherpste discussievraag van dit lesblok.
- 6 dgn6 dagen niemand die het vertelt
In de tussentijd wordt intern gewerkt aan “een compleet beeld”. Cliënten, mantelzorgers en verzorgenden weten van niets. De journalist heeft zijn deadline al staan.
- 11 feb06:30iemand vertelt het
Het artikel verschijnt
Cliënten en mantelzorgers lezen het in de krant. Verzorgenden krijgen die ochtend vragen aan de deur die ze niet kunnen beantwoorden — zij zijn niet ingelicht.
- 11 feb09:15
De mail aan cliënten gaat uit
Tweeënhalf uur na de krant, in een toon die is geschreven voor de toezichthouder. Zie deel 5.
- 12–22 feb—
De schade wordt zichtbaar op een andere plek dan verwacht
41 mantelzorgers trekken hun toegang in, twee cliënten stappen over naar een andere aanbieder. De teamleider is anderhalve week vrijwel volledig kwijt aan telefoongesprekken. Twee verzorgenden zeggen achteraf dat ze zijn gaan twijfelen of ze notities nog wel in de app zetten — en dat raakt de betrouwbaarheid van het dossier (A1).
3De ontwerpkeuze eronder
Drie keer doorvragen. De eerste laag is wat er misging, de derde laag is wat je in een ontwerp kunt veranderen.
- Wat ging er mis?
Een testomgeving met echte cliëntdata stond open met een standaardwachtwoord.
- Waarom kon dat?
Omdat er een kopie van productiedata buiten productie mocht bestaan. De testomgeving was ingericht voor verzonnen data en werd nooit opnieuw beoordeeld toen er echte data in kwam. De beveiliging paste bij wat er hoorde te staan, niet bij wat er stond.
- Waarom had niemand dat besloten?
Omdat de vraag “mag productiedata de productieomgeving verlaten, en wie beslist dat?” bij niemand op het bordje lag. De zorgorganisatie ging ervan uit dat de bouwer dat regelde; de bouwer ging ervan uit dat de klant het zou zeggen als het niet mocht. Dezelfde aanname stond in week 1 al onderaan het Security Context Canvas — als open vraag, niet als risico met een eigenaar.
Niemand heeft besloten dat productiedata de deur uit mocht. Er was ook niemand die kon besluiten dat het niet mocht.
4Wat er goed ging
Bewust vóór de communicatieparagraaf, zodat het gesprek daarna over ontwerp gaat en niet over schuld.
- Na het eerste telefoontje stond de omgeving binnen tweeënhalf uur offline. De technische respons was niet het probleem.
- De onderzoeker meldde netjes en gaf ruim de tijd. Dat de organisatie die tijd niet gebruikte, ligt niet aan hem.
- De awarenesstraining wérkte: de officemanager herkende het phishingpatroon correct. Wat ontbrak was een route voor een échte melding van buiten.
- De FG greep binnen een dag in nadat zij het hoorde, en drong aan op melden bij de AP ondanks druk om te wachten op “een compleet beeld”.
- Er is een post-mortem gehouden, met de bouwer erbij. Dat is minder vanzelfsprekend dan het klinkt.
5De communicatie
Vier berichten, letterlijk zoals ze de deur uit gingen. Elk bericht is op zichzelf verdedigbaar; samen vertellen ze het verhaal van een organisatie die zichzelf beschermt in plaats van haar cliënten.
Er is bij een externe leverancier een beperkt aantal gegevens onbedoeld toegankelijk geweest. Er is geen sprake van een hack van de app “Naaste”.
Hoe het landde: Beide zinnen zijn waar en allebei worden ze gelezen als wegduiken. “Beperkt” gaat over 1.412 dossiers, en dat “het niet de app was” interesseert niemand wiens medicatiegegevens erin stonden. Het bericht kwam bovendien ná de krant — daarmee werd het geen mededeling maar een reactie.
— geen datum waarop het begon, geen aantal, geen antwoord op “stonden mijn gegevens erbij?”
Hoe het landde: De helpdesk kreeg 90 telefoontjes met precies die vraag, en had er geen antwoord op. Elk gesprek herhaalde de fout die de mail al had gemaakt. Eén regel met een datum en een aantal had het grootste deel daarvan voorkomen.
Verwijs vragen van cliënten door naar de teamleider.
Hoe het landde: Verzorgenden stonden al sinds acht uur ’s ochtends bij mensen thuis. Zij waren het gezicht van de organisatie en waren als laatste geïnformeerd — precies andersom als het zou moeten. Dit is de fout die het meest kostte aan vertrouwen, en de goedkoopste om te voorkomen.
Wij nemen privacy zeer serieus en hebben direct maatregelen genomen.
Hoe het landde: De standaardzin. Hij werd in het vervolgartikel letterlijk geciteerd, met daaronder de tijdlijn van zeventien dagen. Een zin die je niet kunt onderbouwen met een tijdlijn maakt het verhaal erger, niet beter.
6Herstel & post-mortem
De post-mortem vond drie weken na het lek plaats. Dit is de maatregelenlijst met de stand van zaken vier maanden later — het deel dat in echte writeups meestal ontbreekt.
- gedaanVerbod op kopieën van productiedata buiten productie, vastgelegd in de verwerkersovereenkomst
Contract aangepast bij de verlenging in juni. De testomgeving werkt sindsdien met gegenereerde data.
- gedaanMeldpunt voor kwetsbaarheden: security.txt en een adres dat bij de FG uitkomt
Binnen twee weken geregeld. Sindsdien zijn er twee meldingen binnengekomen, beide binnen een dag opgepakt.
- halfIncidentprocedure met rollen, escalatiepad en een woordvoerder
Concept van vier pagina’s ligt er, nooit geoefend. Bij de eerstvolgende storing greep men er niet naar.
- halfLogging op alle omgevingen van de bouwer, ook niet-productie
Productie is gedekt. Voor de overige omgevingen is geen budget vrijgemaakt.
- nietCommunicatiedraaiboek: eerst medewerkers, dan betrokkenen, dan pers
Als actiepunt genoteerd, geen eigenaar toegewezen. Vier maanden later onveranderd.
- nietJaarlijkse controle van de leverancier op omgevingen en toegang
Afgesproken voor het najaar. Nog geen datum, geen checklist, geen aanwijsbare eigenaar.
7Wat we niet weten
De eerlijke open einden. Voor het lesblok zijn deze belangrijker dan de feiten: ze laten zien wat je vooraf had moeten inrichten om ze wél te weten.
- Of de dataset daadwerkelijk volledig is opgehaald, en door wie. Zonder logging op de sandbox is dat niet meer vast te stellen — en dat is een ontwerpkeuze, geen pech.
- Of de gegevens nog ergens circuleren. Er zijn geen aanwijzingen van, maar “geen aanwijzingen” betekent hier letterlijk: we hebben geen manier om te kijken.
- Wanneer de 72-uursklok van de AVG precies begon te lopen. Bij ontvangst op info@ (22 januari) of bij kennisname door de directie (5 februari)? De organisatie hanteert de tweede lezing; de eerste is verdedigbaar en zou de melding zeventien dagen te laat maken.
- Hoeveel cliënten zijn vertrokken om deze reden. Twee zeiden het er hardop bij; hoeveel er stil zijn weggegaan is niet te achterhalen.
- Of verzorgenden sindsdien minder in de app noteren. Twee gaven het aan; als het breder speelt, verplaatst het lek zich naar de betrouwbaarheid van het dossier (A1) — en dat merk je pas als er iets misgaat in de zorg.