Knoeien met de cijfers van het CBS

Het Centraal Bureau voor de Statistiek doet zijn onderzoekjes anno 2010 nog steeds met een Windows-programma: u moet Microsoft Windows gebruiken om de door het CBS gevraagde gegevens te verzenden. Dat levert een statistische vertekening in de cijfers op (“gebruik van open source software”); erger is het, dat het dataverzamelingsprogramma zo lek is als een mandje.

Het Centraal Bureau voor de Statistiek, CBS, heeft als missie het samenstellen en publiceren van onbetwiste, samenhangende, actuele statistische informatie die relevant is voor praktijk, beleid en wetenschap. Deze missie vereist dat de kwaliteit van de statistische informatie gegarandeerd is.

Sinds ongeveer vier jaar wordt de statistische dataverzameling afgehandeld met een door of voor het CBS ontwikkeld softwarepakket, genaamd “CBSquest.exe”. Om dat pakket te kunnen gebruiken, moet je het installeren op Microsoft Windows. (De fans van statistische methodenleer beginnen nu te gniffelen, want zij begrijpen het probleem, maar voor de geïnteresseerde leek zal ik de zaak nog even grondig uitleggen).

Een van de mooiste voorbeelden van foutieve statistische dataverzamelingen vind ik nog altijd de anekdote over de eerste telefonische enquete, in de Verenigde Staten, over de uitkomst van de presidentsverkiezingen. De uitslag zat er falikant naast. Waarom? Alleen de zeer rijken hadden destijds een telefoontoestel! De voorspelling had dan ook een overweldigende afwijking in de richting van de Republikeinen. (Anekdote trachten te verifiëren; niet gelukt, mogelijk een verdraaiïng van het verhaal over de peilingen van Literary Digest).

Zo geldt ook het aanleveren van statistische gegevens met behulp van een Windows-programma als een wat onhandige manoevre. Niet zozeer omdat verstandige mensen een Mac of Linux-computer hebben, maar simpelweg omdat het CBS ook de vraag beantwoordt of er in de organisatie open source software gebruikt wordt. In de publicatie De Digitale Economie 2009 staat letterlijk: “Kleine bedrijven maakten zoals gezegd veel minder gebruik van open source software dan grote bedrijven en dit geldt vooral voor de open source besturingssoftware.”

Of bovenstaand waar is, weet ik niet. Maar het CBS weet het denk ik ook niet. Want wat doet een Linux- of een Apple-specialist wanneer een vragenlijst begint met: “Open Internet Explorer. Werkt u daar niet mee? Bel ons dan even”? Ik gooide de enquete weg, stiekem hopend op een boete, die ik dan in gezelschap van een paar ICT-journalisten zou gaan aanvechten bij de rechtbank.

De boete kwam niet, en andere mensen hadden al een leuke column geschreven, de statistische blunder kon me niet zoveel schelen, dus toen liet ik het maar zo.

Tot ik bij toeval ontdekte dat de dataverzameling van het CBS lek is: je kunt de vragen van iemand anders beantwoorden; je kunt zelfs je eigen enquete op de site van het CBS hosten!

Eerst maar eens even uitleggen hoe het CBS het bedoeld heeft. De eigenlijke handleiding is een Microsoft-Word-document, maar het kan gelukkig ook simpel op een webpagina:

  1. U gaat naar https://formulieren.cbs.nl/downloads, gaapt naar de website, en downloadt vervolgens http://formulieren.cbs.nl/downloads/CBSquest_setup.exe.
  2. Eenmaal gedownload, installeert u het. (Linux-gebruikers: wine is het codewoord).
  3. Daarna gaat u naar https://formulieren.cbs.nl/vlviewer/Login.aspx en daar moet u uw gebruikersnummer en uw toegangscode invullen. (De toegangscode staat in de uitnodigingsbrief). U kunt nu (met een tussenstap, als ik het me goed herinner) de vragenlijst downloaden. Terzijde: omdat je alleen je eigen toegangscode kent, kun je alleen je eigen vragenlijst ophalen.
  4. Je start het (onder punt 2 geïnstalleerde) programma CBSQuest en je opent daarmee de (onder punt 3 opgehaalde) vragenlijst.
  5. Je beantwoordt alle vragen en kiest voor “verzenden”.

Het programma maakt nu, lokaal op je eigen computer, een HTML-document aan met de naam “CBSquest.htm”. Het staat in een tijdelijke map, bijvoorbeeld in C:\windows\temp\~CBSquest\QNR97229\$Temp\CBSquest.htm. Dat document wordt geopend met Internet Explorer en dan ziet het er ongeveer zo uit:

Jaarstatistiek Computerservice bureaus

Verzenden vragenlijst via het internet

Let op:

Als u op dit moment geen internetverbinding heeft, breng dan eerst deze verbinding tot stand.

Het is niet van belang welke internetpagina u opent / open heeft staan.
Klik nu op de knop ‘Verzenden’ om de vragenlijst naar het CBS te versturen.

In de “broncode” van dit document staan de antwoorden op alle vragen, klaar om verzonden te worden. Ook je gebruikersnummer staat erin. De toegangscode ontbreekt. Oftewel: het CBS accepteert je antwoorden zonder dat je je hoeft te legitimeren. Daar mailde ik het CBS over; de afdeling persvoorlichting antwoordde het volgende:

Wij achten de kans klein dat een berichtgever/respondent daarbij een (ander) valide gebruikersnummer invult als zeer klein. Dit nummer is random gegenereerd en toegewezen aan een respondent/berichtgever. Het gebruiksnummer is enkel bekend bij de bijbehorende persoon/bedrijf bekent en het CBS controleert binnenkomende berichten op het valide zijn van dit nummer. Wanneer dit nummer niet overeenkomt dan wordt de data vernietigd en bovendien krijgt de berichtgever een rappel op het nog niet inzenden van zijn informatie.

Nou moet ik zeggen: ik acht de kans dat een respondent een ander nummer invult, ook uiterst klein en bovendien geheel irrelevant. Het gaat er hierbij om, dat een willekeurige derde een of ander nummer invult. Een weblog-lezer, bijvoorbeeld. (Nee, u niet natuurlijk). Bovendien is het lariekoek, dat “random nummer”. Mijn enquetenummer was zoiets als 1447859. Ik heb heel wat willekeurige nummers gezien in mijn leven — bijvoorbeeld 42 of 12 — en ik kan u verzekeren dat 1447859 absoluut niet erg random is. Anders gezegd: er  is ook een respondent met gebruikersnummer 1447857, 144758 en 1447860 en 1447861.

Maar het wordt nog onnozeler. Want niet alleen controleert de server van het CBS het wachtwoord niet, “CBSQuest.htm” formuleert ook, vooraf, het bedankje dat het CBS je straks gaat geven. Op je eigen computer staat dus de volgende tekst te wachten:

“Dank u wel<b> </b>voor het invullen van de vragenlijst.<br><br>Uw antwoorden zijn op @@datum om @@tijd door het CBS ontvangen;<br>Ingevulde vragenlijst: Jaarstatistiek Computerservice bureaus Jaar 2011<br><br>Uw correspondentienummer is: 12345678<br>Uw inzendkenmerk is: @@kenmerk<br><br>Maak een afdruk van deze ontvangstbevestiging voor uw eigen administratie.<br><br><b>Afsluiten<br></b>U kunt nu dit scherm en ook het volgende scherm sluiten met het kruisje rechts bovenin.<br><br><b>Heeft u nog vragen? <br></b>Neem dan contact op met onze medewerkers van het CBS Contact Center:<br>via onze website (www.cbs.nl/contactcenter) of via de telefoon: <br>(045) 570 64 00 voor inhoudelijke vragen (op werkdagen van 9-17 uur)”

Ook die tekst kun je zelf aanpassen. Je kunt de CBS-server bijvoorbeeld laten zeggen:

<script type=’text/javascript’ />
<!–
document.write(‘Hallo Wereld’);
//–>
</script>”

En dan is, werkelijk, het eind zoek. Het betekent namelijk, dat iedereen die dat wil, willekeurige content op de CBS-site kan publiceren. Enfin, over cross-site-scripting (XSS) zijn hele boekwerken geschreven, dus dat ga ik u niet voorkauwen.

Wel nog dit. De CBS-server controleert wèl of u een formulier meestuurt. Dat formulier mag helemaal leeg zijn, maar het moet wel aanwezig zijn. Wilt u dus uw eigen enquete publiceren op de site van het CBS, wacht u dan even op de uitnodiging om met CBSquest.exe aan de slag te gaan.

Naschrift. Het CBS is begin november 2010 van dit probleem op de hoogte gesteld – met het verzoek om te reageren. Het XSS-probleem lijkt opgelost: door alle de client-PC aangeleverde HTML-tags, behalve <b> en <i>, worden nu keurig met “&gt;” gecodeerd in de HTML-broncode. Of hun Windows-probleem ook uit de wereld is, weet ik niet. Reageren, daar doen ze namelijk niet aan.

2 Replies to “Knoeien met de cijfers van het CBS”

  1. Anders dan bovenstaand heb ik er geen werk van gemaakt. Het idee dat een Windows-programma (met een Word-document voor de uitleg) de dataverzameling moet doen, was voor mij de hoofdmoot. De rest was bijvangst.

Leave a Reply

Your email address will not be published. Required fields are marked *