Mag ik mensen laten checken of hun OpenSSL aan Heartbleed lijdt?

heartbleed-bug-openssl-securityEen kritieke bug in beveiligingssoftware OpenSSL heeft het jarenlang mogelijk gemaakt om wachtwoorden en andere geheime data van servers te achterhalen. Voor hackers, maar ook de NSA, zo is gebleken. De pijnlijke fout, die Heartbleed is genoemd, is zeer wijdverspreid. Logisch dus dat mensen nu tools ontwikkelen om te zien of een site kwetsbaar is. Maar mag dat eigenlijk wel?

De kwetsbaarheid in de OpenSSL software zit hem in een stukje code dat wordt gebruikt om een beveiligde verbinding ‘open’ te houden. Om dat te doen, stuurt de client periodiek een signaal naar de server, die dan een korte reactie geeft. Een soort meten van de hartslag van de server; leeft hij nog? De reactie bestaat uit een kopie van het signaal, oftewel je herhaalt als server wat de client net tegen je zet (“Hallo?” “Hallo!” zeg maar).

Bij dat signaal staat hoe lang het is. En het probleem is dat de server dat opgegeven aantal bytes terugstuurt, ongeacht hoe lang de boodschap feitelijk was. Zeg je dus “64Hallo?” dan krijg je 64 tekens terug, waarvan de eerste vijf “Hallo?” zijn en de rest wat er toevallig in het servergeheugen staat. Dat kan dus van alles zijn, inclusief wachtwoorden en sessie-tokens van anderen. Zie ook deze xkcd. Daar gaat mijn hart ook wel even van bloeden ja.

Je site testen of deze kwetsbaar is, is dus zeer verstandig. Daar zijn tools voor, en natuurlijk is het volstrekt legaal dat te doen op je eigen site. Maar een hoop mensen willen ook testen of andere sites kwetsbaar zijn, bijvoorbeeld omdat ze daar hun webmail of andere belangrijke diensten hebben ondergebracht. Of omdat ze journalistiek nieuwsgierig zijn. Of omdat ze in willen breken. En daar ga je dan, juridisch: mág dat dan wel, andermans site testen op deze veiligheid?

Testen van een kwetsbaarheid is in theorie te zien als computervredebreuk. Het is van dezelfde orde als testen of iemands achterdeurslot met een balpen te openen is. Je dringt binnen in de server en verschaft je toegang tot gegevens waarvoor je niet geautoriseerd bent. Het gaat iets verder dan een portscan, waarbij je immers alleen maar legale verzoeken doet aan de server (“Dag, doet u aan POP3 of NTP?”) en de informatie die je dan krijgt, gebruikt om in te breken. Het testen op de Heartbleed-fout levert je meer informatie op dan de bedoeling is. Dus formeel ben je strafbaar.

Gezien de grote impact van de fout denk ik toch dat dit juridisch niet bezwaarlijk moet zijn. Wel moet je een duidelijk belang hebben bij het testen van die site én de beheerders op de hoogte stellen van de fout. Misbruik maken van de gevonden gegevens maakt het echt strafbaar.

Natuurlijk kun je zeggen, het is niet jouw taak om andermans websites te testen. Dat moeten ze zelf doen. Dat is ook zo. Alleen het teleurstellende feit is dat veel mensen dat gewoon niet dóen. En omdat ze daarmee ánderen in gevaar brengen (in tegenstelling tot dat achterdeurslot, waar ze alleen zelf last van hebben) vind ik het maatschappelijk verantwoord om dan toch aan de bel te trekken: “hoi, je bloedt andermans gegevens, dóe iets”.

Diverse mensen vroegen me ook of ze een site mogen opzetten die onderzoekt of een gegeven website kwetsbaar is (zoals Filippo). Ik denk dat dat wel mag, mits je de tool maar zo voorzichtig mogelijk opzet. Het liefst zegt hij alleen “ja/nee”, een datadump van wat de server lekt (bloedt?) laat zien, gaat echt te ver. En je zou nog een vertraging in kunnen bouwen. Eén site testen prima, twee of drie nou vooruit, maar wie twintig sites achter elkaar gaat testen is een beetje raar.

Helemaal netjes zou zijn dat je zegt, installeer eerst een bepaald bestandje op je website met een unieke naam, en dan controleert of dat bestandje bestaat op die website voordat je de test uitvoert. Dan weet je zeker dat de gebruiker aan de website gelieerd is. Maar dat voelt wat zwaar voor één korte test.

Arnoud