aarom ben ik de enige die dit doet?
Het talent volgt het geld, en het geld ligt niet hier. Geen opleiding, geen titel die past, en wie de functies vult tikt lijsten af. Daarom blijft dit liggen, en daarom doe ik het.
Waar het geld ligt¶
Het is voor een groot deel een kwestie van prikkels. Wie hier goed in is, vindt een bug bounty leuker. Duizenden euro's per melding, en het bedrijf betaalt met plezier. Meten of een site je privacy schendt levert geen cent op.
Dat verschil heeft een structurele oorzaak. Een kwetsbaarheid is een defect. Het bedrijf wil hem zelf ook weg, want hij staat het eigen belang in de weg. Wie hem meldt, verkleint iemands risico, en die iemand is aanwijsbaar en heeft een budget. Een privacyschending is meestal iets anders. Die is vaak precies wat er is besteld. De trackers staan er omdat iemand ze heeft ingekocht, de biedstroom loopt omdat er een contract onder ligt. Wie daar een bevinding op tafel legt, verkleint niemands risico. Hij vergroot het. De partij die zou moeten betalen is dezelfde partij die de schade veroorzaakt, en de partij die er baat bij heeft, de bezoeker, weet niet dat het onderzoek bestaat en heeft geen manier om het te bekostigen. Dat is een klassieke externaliteit, en markten lossen die uit zichzelf niet op.
De besten worden bovendien weggekocht door grote bedrijven, en die gaan echt niet na kantooruren voor het publieke belang zitten testen. Het talent volgt het geld, en het geld ligt niet hier.
En dat geld ligt daar grotendeels toevallig. De markt, de aandelenhype, de Amerikaanse tech-economie draaien hard en lekker op wat al die IT'ers ooit gebouwd hebben, en men blijft er bovenop stapelen. Bouwen wordt beloond, doorbouwen wordt beloond. Kijken of het gebouwde wel deugt levert niets op, of hooguit iets theoretisch, na lange tijd. Schade voorkomen laat zich niet demonstreren. Je kunt geen grafiek laten zien van het lek dat er niet kwam. Weer een tooltje bouwen en verkopen, dat wel. Zo stroomt alles naar de ene kant en blijft de andere kant leeg.
Van de andere kant bekeken zit er ook een luchtbel in. Bouw iets, en zodra de juiste mensen er geld in zien, zit je gebakken. Het wordt overal langs iedereens neus gedrukt omdat een manager of directie denkt er verstand van te hebben, ook als de technische of functionele meerwaarde er niet is. Men maakt te veel om het maken.
We kunnen inmiddels te veel. Vroeger legden geheugen, bandbreedte en rekentijd een rem op, en die rem dwong tot keuzes. Die rem is weg. AI-slop is daar het scherpste voorbeeld van: eindeloos kunnen produceren, zonder iets dat dwingt tot een product dat ergens toe dient. Zie ook AI hoort een versterker te zijn, geen vervanging en Twintig jaar lang won werkende software van veilige software.
De aandacht komt en gaat met de krantenkop¶
Zodra er iets groots in het nieuws is, een lek zoals bij Odido, zie je opeens allemaal hackers er tijd, energie en aandacht in steken. Daarna hoor en lees je niets meer. Een CVE gevonden, woohoo. Een bounty geind. Het bedrijf kan door, de bonus zit in de pocket, en de aandacht schuift mee naar het volgende nieuws.
Nerds zijn nerds. De kick zit in de vondst. Het jarenlang bijhouden van iets dat niemand betaalt levert die kick niet op, en dus gebeurt het niet. Dat is menselijk en ik neem het niemand kwalijk.
Het probleem is dat privacyschade zich juist niet als incident gedraagt. Een lek is een gebeurtenis met een datum. Een biedstroom die elke pagina-load je toestel in een veiling gooit, is een toestand. Die heeft geen moment waarop hij nieuws wordt. Hij is er gisteren, vandaag en morgen, en precies dat maakt hem onzichtbaar voor een aandachtseconomie die op gebeurtenissen draait. Wat continu is, moet continu gemeten worden, en daar is de hele infrastructuur van aandacht en beloning ongeschikt voor.
Er is geen opleiding en geen functie die op de kruising zit¶
Er is hier geen opleiding voor. Ik zag het bij NOVI Hogeschool. Je kiest of governance, hoe een bedrijf cybersecurity organisatorisch regelt, of ethical hacking, kwetsbaarheden zoeken in code en componenten. Nooit de twee gecombineerd.
De banen zijn net zo opgehokt. Een SOC-analist reageert op wat binnenkomt. Een privacy officer vindt zelf niets, daar meld je aan. Een pentester krijgt een scope en een tijdvak en levert een rapport op. Niemand zit op de kruising, waar je met een organisatorische blik echt in de code kijkt. Op die kruising kun je vaststellen dat het papier en het gedrag uit elkaar lopen, en daarvoor moet je beide kunnen lezen.
Ik hack ook niet. Ik gebruik een hacker-mindset om te achterhalen wat een site of app werkelijk doet. Reverse-engineeren, meekijken op de verbinding, de code lezen die er al staat. Alles wat ik bekijk, stuurt mijn eigen toestel al toe. Ik breek nergens in. Voor die manier van werken bestaat geen diploma en er hangt geen salarisschaal aan.
Dat wringt met wat de wet eigenlijk vraagt. De AVG legt de bewijslast bij de verwerkingsverantwoordelijke, artikel 5 lid 2. Die moet kunnen aantonen dat hij zich aan de regels houdt. Artikel 11.7a van de Telecommunicatiewet vraagt toestemming voordat er iets op je apparaat wordt gezet of uitgelezen. Beide gaan over feitelijk gedrag van software. Beide worden in de praktijk beantwoord met documenten. Er is dus een wettelijke vraag waar alleen een meting antwoord op geeft, en er is geen beroep dat die meting doet. Zie ook Nederland heeft een wettelijke bekwaamheidseis en toetst hem niet en Dezelfde meetlat voor de overheid en de app in je broekzak.
Wat die extra stap concreet is¶
Het helpt om te laten zien hoe klein die stap technisch is.
Je opent de site in een schoon browserprofiel. Je zet de netwerktab open en bewaart al het verkeer als HAR-bestand. Dat doe je twee keer: één keer waarbij je in de cookiebanner alles weigert, één keer waarbij je alles accepteert. Daarna tel je per run welke domeinen er contact krijgen.
import json, collections
def hosts(pad):
har = json.load(open(pad))
return collections.Counter(
e["request"]["url"].split("/")[2]
for e in har["log"]["entries"]
)
geweigerd = hosts("weigeren.har")
aanvaard = hosts("accepteren.har")
for host in sorted(set(geweigerd) | set(aanvaard)):
print(f"{geweigerd[host]:5d} {aanvaard[host]:5d} {host}")Dat is het. Links wat er gebeurt als je nee zegt, rechts wat er gebeurt als je ja zegt. Alles wat links niet nul is en niet nodig is om de pagina te tonen, is een vraag die het bedrijf moet beantwoorden. En de lijst rechts leg je naast het aantal partners dat de cookiemuur noemt.
Er zitten valkuilen in. Meet als bezoeker. Een kale headless browser krijgt vaak ander gedrag te zien dan een echt mens met een echt profiel. Niet alles vuurt bij het opstarten, dus scroll, klik door en wacht. Een domein in de lijst zegt nog niet wie de ontvanger juridisch is, want CNAME-cloaking laat een derde partij eruitzien als een eigen subdomein. En een lege meting bewijst niet dat de app schoon is, want een mislukte opzet lijkt op stilte. Zie ook Netwerkverkeer lezen via HAR-files, Meet zoals een bezoeker, niet zoals een scanner, Niet alles vuurt bij opstart, sommige trackers wachten op jou, CNAME-cloaking vermomt een derde partij als eigen subdomein en Een mislukte meting is geen schone app.
Die valkuilen zijn te leren. Het hele recept past op een A4. De rem zit dus ergens anders dan in de moeilijkheidsgraad.
Op papier is er geen upside¶
En dan is er de rem die niets met geld te maken heeft. Waarom zou je je mengen, waarom zou je kijken hoe de code echt werkt? De meeste mensen denken: het valt vast mee, het zal wel aan mij liggen. Iedereen is bang voor het eigen hachje.
Wat is eigenlijk de winst van die extra stap, de stap die ik wel zet? De kans is groot dat je wordt teruggefloten. Dat is niet waar je voor bent aangenomen. Of: heb jij daar wel verstand van, joh? De IT-wereld is klein genoeg dat de cultuur dit in stand houdt. Wie buiten zijn hokje kijkt, wordt er vriendelijk weer ingeduwd.
Zet het naast elkaar en er is simpelweg geen upside. Op papier levert die extra stap alleen risico op. Buiten je functie treden, je nek uitsteken, ongelijk kunnen krijgen. De winst is nul, de downside is reeel. Die combinatie, geen opleiding, geen titel, geen prikkel, een ingebouwde twijfel aan jezelf en een cultuur die je terugroept, is precies waarom het blijft liggen.
En toch loopt daar de hele redenering vast. Want in werkelijkheid is vrijwel iedereen enorm blij en opgelucht als iemand de stap wel zet. De Belastingdienst bedankte de melder in zoveel woorden. Bedrijven waarderen het. De downside staat op papier, de opluchting is echt.
Dat gat tussen verwachting en uitkomst is het interessantste deel van dit hele stuk. De rem is een inschatting die vrijwel niemand toetst. Mensen calculeren een straf in die in de praktijk zelden komt, en omdat ze de stap niet zetten, krijgen ze nooit de correctie op hun eigen inschatting. Zo houdt de verwachting zichzelf in stand.
Cybersafe bestaat niet, dus wanneer doe je het goed¶
Er is nog iets dat mensen uit dit vak murw maakt: cybersafe bestaat niet. Er is geen moment waarop je klaar bent. Hacken kan nog steeds, lekken kan nog steeds, hoe goed je je werk ook doet. Wanneer doe je het dan goed, als cybersecurity-persoon of als bedrijf? Die vraag heeft geen antwoord.
In plaats daarvan jaag je KPI's na. Getallen die continu bewegen, een lat die stijgt zodra je hem haalt, een finish die opschuift op het moment dat je hem zou bereiken. En het werk eromheen is monotoon en breindodend geworden. Het niveau van de inpakkers bij PostNL, waar een afvalbedrijf nog meer variatie ziet.
Mensen zien dat, weten dat, en raken erdoor uitgehold in hun functie. Wat eerst heel gaaf was, voelt op een dag als: wat zijn we hier eigenlijk aan het doen? Dat is een voorspelbaar gevolg van werk zonder eindstreep en zonder variatie, en het heeft weinig met luiheid te maken.
En toch loopt niemand weg. Het werk is droog en niet meer inspirerend, en tegelijk is het gewoon oke en zeker financieel beter dan de supermarkt. Bedrijven zijn intussen blij met zulke analytische mensen. Zo is het een comfortabele win-win geworden, en een win-win verandert niet uit zichzelf.
Bij mij werkt hetzelfde gegeven omgekeerd. Juist omdat het nooit af is, is elke meting die iets concreets blootlegt de moeite waard. Ik heb geen eindstreep nodig om te weten of een dag iets heeft opgeleverd. Eén domein dat contact krijgt terwijl ik alles heb geweigerd, is een resultaat. Dat is een klein doel, en het heeft het voordeel dat het bestaat.
Het advies is zo diep als de checklist¶
Het gekke is dat juist de mensen in die functies, bij de overheid en in het bedrijfsleven, veel te zeggen hebben, terwijl ze in de praktijk lijsten aftikken. Pentesten is lopendebandwerk geworden. De drive is eruit, de speurzin is weg. En precies daar zit het gat. Als niemand meer dieper, anders of creatiever kijkt, blijft er van alles onopgemerkt.
Erger nog: de directie kijkt naar precies die mensen voor advies, van de grootste organisatie tot het kleinste MKB. Maar hoe kan een afvinker advies geven dat verder reikt dan de vinkjes? Dat kan niet. Het advies reikt tot de rand van de checklist en houdt daar op. En omdat de checklist de vragen bepaalt, bepaalt hij ook wat er nooit gevraagd wordt.
Daarom vind ik zoveel. Ik neem "wij hebben een ISO-certificaat" voor kennisgeving aan en kijk daarna wat er echt gebeurt op de verbinding en in de code. En dan staat een bedrijf met de mond vol tanden, want het papier zei iets anders dan de meting. Zie ook Op IT-afdelingen beslist wie het vak nooit beoefende en Een DPIA die niemand kan inzien, is geruststelling, geen afweging.
Dit is ook waarom ik elke bevinding op bewijsniveau label. Gemeten, afgeleid of vermoed. Wie het papier aanvalt zonder dat onderscheid, wordt weggezet als iemand met een mening. Wie een meting neerlegt en er eerlijk bij zegt wat die wel en niet aantoont, is veel lastiger weg te wuiven. Zie ook Label elke bevinding op bewijsniveau en Mijn werkwijze: van vermoeden naar bevinding.
Op twee handen te tellen¶
Wat nu van al die IT'ers wordt verwacht, en de meesten zijn nerds die houden van bouwen of slopen, is iets wat maar een handvol mensen echt kan. Ik denk dat je in heel Nederland de personen die creatief genoeg zijn, ver genoeg vooruit denken en de juiste gecombineerde skillset hebben om dit werk werkelijk te doen, op twee handen kunt tellen. Dat is een schatting, en ik label hem als vermoed. Ik bedoel het als tekortdiagnose, en ik hoop dat mijn schatting te laag is.
Er is een goede tegenwerping op die schatting. Ik zie vooral wie er publiceert. Wie dit werk binnen een bedrijf doet, onder een geheimhoudingsclausule, is voor mij per definitie onzichtbaar. Mijn telling kan er dus flink naast zitten. Wat me toch bij die orde van grootte houdt, is iets anders: als er tientallen mensen structureel zo zouden meten, zou ik hun bevindingen tegenkomen op het moment dat ik zelf iets vind. Dat gebeurt zelden. Dat is afgeleid, en zo presenteer ik het ook.
Zelfs de grote namen hadden de combinatie niet compleet. Snowden was in de kern een IT-nerd die aan de bel trok, een bouwer met verstand van governance en een sterk geweten. De schending zelf meten was zijn rol niet. McAfee was een businessman die kon bouwen, en zelfs die twee assen bij elkaar leverden nog geen veiligheid op. Het gaat om meer assen tegelijk. Kunnen bouwen en slopen, organisatorisch denken, creatief speuren, en doorzetten als niemand je ervoor betaalt. De combinatie is zeldzaam, en de arbeidsmarkt vraagt er nergens om.
Terug naar de gemiddelde IT'er, de cybersecurity-man, de data-privacy-persoon: die is deel van de lopendeband. Zonder maatschappelijke drive, zonder onderzoekende houding, zonder een mond die groot genoeg is, en zonder een moreel kompas dat verder reikt dan de eigen portemonnee. Ik verwijt dat niemand persoonlijk. Het systeem selecteert er precies op, want het beloont alle vier de eigenschappen negatief. Dat is de reden dat het werk dat ik doe, niet vanzelf door een ander wordt gedaan. En daarom doe ik het.
Zie ook Randall Munroe verliet NASA en geeft xkcd gratis weg, Vsauce maakt van een kindervraag natuurkunde en Wie ben ik om iets te vinden? Ik draai het om.
- Eigen waarneming aan het speelveld van privacyonderzoek in Nederlandwie meet, meet meestal in opdracht; onafhankelijk meten kent geen verdienmodel