Een NDA in je bug bounty stoppen is een heel slecht idee, ook voor Uber

OpenClipart-Vectors / Pixabay

Het hoofd security van Uber hangt strafvervolging boven het hoofd voor de manier waarop hij een datalek wilde verstoppen, las ik bij Ars Technica. Dat deed hij namelijk door de hackers een ton in bitcoins te geven en ze een bug bounty contract met geheimhoudingscontract (NDA) te laten tekenen, waarna hij in het openbaar verwees naar het lek als een “geplande securitytest”. En dat is dan net nadat ik twee bedrijven (zakelijk) heb moeten overtuigen dat je ethical hackers géén NDA moet voorleggen als ze je ongevraagd een potentieel datalek komen melden.

In 2016 liet Uber een fors datalek gebeuren, met kort daarna nog eentje. (Ik vind “was hit by a data breach” geen gepaste tekst, het is geen meteoor maar nalatigheid, kom nou.) Bij die laatste wilden de hackers een ton aan losgeld, anders zouden ze de data op internet zetten. “Information is extremely sensitive and we need to keep this tightly controlled,” zo besloot men intern. Toenmalig Uber security chief Joe Sullivan handelde ook daarnaar: hij onderhandelde met de hackers en liet ze een bug bounty contract tekenen, in ruil voor een ton die in bitcoin werd betaald.

Dat was in zoverre onhandig dat de FTC na dat eerste datalek een onderzoek had ingesteld en van plan was Uber met een schikking weg te laten komen. Toen dat tweede datalek een jaar later alsnog uitkwam, kwam daar natuurlijk weinig meer van terecht.

Nu kan het natuurlijk gebeuren dat iemand een datalek ontdekt en dat meldt, om aanspraak te maken op de financiële beloning – bug bounties – die een bedrijf uitlooft. Ook Uber doet dat: tot tienduizend dollar kun je verdienen met je tip over een datalek. Maar daar is een aparte website en procedure voor, en je krijgt het geld dan ook gewoon overgemaakt. Deze manier van afhandelen riekt dan dus ook niet naar een gewone bountyclaim.

Het blijkt echter wel staande praktijk om tipgevers aan een dikke geheimhouding te binden, en ik vind dat dus raar. Ja, als je iemand inhuurt dan kun je voorwaarden onderhandelen en geheimhouding is dan een prima onderhandelpunt. Maar wanneer iemand van buitenaf komt aanwaaien, dan moet dat zeker geen voorwaarde zijn. (Een tijdelijke, redelijke periode zodat je het lek kunt dichten is natuurlijk wél prima.) Het schrikt mensen af, ondanks dat het niet bindend is, en het laatste wat je zou moeten willen als organisatie is dat een tipgever liever de pers belt dan jouw organisatie.

Arnoud

Nee, geheimhouding bij ethical bug reporting is niet bindend

De researcher die een ernstige bug bij messaging dienst Telegram meldde, heeft afstand gedaan van de $1000 beloning omdat er geheimhouding aan gekoppeld was, las ik bij Ars Technica. Als verantwoordelijk security-onderzoeker had Dmitrii (geen achternaam) deze netjes gemeld. Telegram moedigt dat ook aan, en je kunt zelfs een bug bounty krijgen. Maar het was nog moeilijk genoeg om de aandacht te krijgen, en toen die kwam, zat er een NDA aan vast. Daar hoef je geen genoegen mee te nemen als onderzoeker.

De bug betrof de zogenaamd zelfvernietigende afbeeldingen: deze bleven per abuis in de cache op telefoons staan, ook nadat gemeld was dat deze berichten verwijderd waren. Iets om te melden natuurlijk, maar makkelijk ging dat niet:

But for a simple bug like this, it wasn’t easy to get Telegram’s attention, Dmitrii explained. The researcher contacted Telegram in early March. And after a series of emails and text correspondence between the researcher and Telegram spanning months, the company reached out to Dmitrii in September, finally confirming the existence of the bug and collaborating with the researcher during beta testing. For his efforts, Dmitrii was offered a €1,000 ($1,159) bug bounty reward.
Voor die beloning moest Dmitrii wel een contract tekenen (van acht pagina’s), waarin een eeuwigdurende geheimhoudingsclausule opgenomen was. Wie in het goede gelooft, zal denken dat Telegram een foutje maakte: dit contract was namelijk een standaard consultancy agreement, waarmee Dmitrii als zzp’er zou werken aan het melden van de bug zeg maar. Niet raar om daarin geheimhouding op te nemen, maar wél raar om dat contract als basis te gebruiken voor het afhandelen van een melding.

Wie niet in het goede gelooft, zal concluderen dat Telegram Dmitrii de mond wilde snoeren met een wurgcontract. (Excuses, mijn metaforen botsen soms.) Ik geloof zelf altijd meer in incompetentie: de persoon die de tip van Dmitrii kreeg, had geen idee waar het over ging en pakte toen maar het best passende contract, iemand wil wat voor ons doen en mijn baas zegt dat dat mag, dan is deze persoon dus een ingehuurde consultant.

De les voor de meelezende security researchers, ethical hackers en ander goedwillend volk: je hoeft zulke dingen niet te tekenen, ongeacht wat een bedrijf zegt. Als je ongevraagd een fout opspoort, dan is melden je goed recht maar zeker niet je plicht. Meteen naar buiten met de bug mag ook, het is vooral dat het nétjes is om even zestig dagen te wachten voordat je dat doet zodat de impact bij het bedrijf redelijkerwijs wat gedempt wordt. Natuurlijk zijn hier allemaal weer uitzonderingen op, maar geen van die komen neer op “je hebt toestemming van het bedrijf nodig om te publiceren wat er mis ging”.

Een bedrijf kan op zich een beloning koppelen aan een eeuwigdurende geheimhouding, dat dan weer wel. Want omgekeerd zijn zij niet verplicht om mensen te betalen die ongevraagd bugs komen melden. De enige echte uitzondering daarop zou zijn als er een bug bounty programma is gepubliceerd waarin staat dat je na x dagen mag publiceren, en je dan zo’n eeuwige NDA opgelegd krijgt.

Arnoud