Een openbaar toegankelijk script manipuleren is ook gewoon computervredebreuk

| AE 10806 | Security | 20 reacties

De rechtbank Den Haag heeft geen straf opgelegd aan een 45-jarige it’er die een datalek had ontdekt en aan de grote klok had gehangen. Dat las ik bij Tweakers vorige week. De man was met een script binnengedrongen in een databank. De beveiliging daarvan was minimaal, maar dat was genoeg voor de rechtbank om van computervredebreuk te spreken. Het ethisch karakter van de computerkraak was echter reden om geen straf op te leggen.

In 2015 ontdekte de it’er hoe hij toegang kon krijgen tot donateursgegevens van een stichting. In het robots.txt-bestand van de webserver was een script vermeld dat op basis van een ID donateursgegevens teruggaf. Het script kende een gebrekkige beveiliging, waardoor de man simpelweg 80.000 ID’s kon doorlopen en de bijbehorende gegevens kon verkrijgen.

Uit het vonnis blijkt dat de man digitaal was gaan rammelen aan de deur nadat hij in de robots.txt dit script ontdekte. Hij wilde gebreken in de beveiliging van vertrouwelijke persoons- en betalingsgegevens aantonen, en daarvoor achtte hij het nodig om uitgebreid te testen om de omvang van het probleem vast te stellen. Daarna stapte hij naar klokkenluidersite Publeaks, waarna onder meer Tweakers erover berichtte. Opmerkelijk genoeg koos hij er niet voor de stichting zelf in te lichten. En dat wordt hem zwaar aangerekend.

Allereerst kijkt de rechtbank echter naar de vraag of überhaupt sprake is van computervredebreuk. Het script was niet met een wachtwoord beveiligd, maar bij artikel 138ab Strafrecht is dat ook geen vereiste. Enkel willens en wetens binnengaan waar je niet mag zijn, is een strafbaar feit. Analogieën zijn altijd gevaarlijk, maar in dit geval zou de analogie zijn dat je iemands achtertuin betreedt door een per ongeluk opengelaten tuinhekje. Dat is erfvredebreuk, ook als je niets kapotgemaakt hebt.

In dit geval komt de rechtbank tot de conclusie dat sprake is van ‘valse signalen’, een specifieke vorm van computervredebreuk:

De webserver is zo ontworpen, dat een record werd geretourneerd aan wie pictura.php opvroeg en daarna een geldig ID invoerde. De veronderstelling van de beheerder daarbij was dat alleen rechthebbenden dat konden en zouden doen. Door als niet-rechthebbende het pictura.php script op te vragen en een geldig ID in te voeren – en daarmee de webserver “enig teken” te geven –, heeft verdachte een gevolg uitgelokt – het retourneren van een record aan een niet-rechthebbende – waartoe de webserver weliswaar de mogelijkheid bood, maar waarmee de beheerder geen rekening had gehouden. Daarmee is sprake van het geven van valse signalen.

Dit betekent dus inderdaad dat je een strafbaar feit begaat door URL’s te raden. Ik zou wel zeggen, pas vanaf het moment dat je denkt “hé dat is raar, krijg ik echt hiermee gegevens die ik niet behoor te krijgen” en dan gaat doorvragen. Een URL overtypen en dan een typefout maken, waarna je andermans records krijgt, is natuurlijk een heel ander verhaal.

Juridisch is het mogelijk dat je een strafbaar feit begaat zonder zelf strafbaar te zijn. Dat kan bijvoorbeeld wanneer sprake is van ethisch hacken – vanuit een wezenlijk maatschappelijk belang handelen. Dat belang weegt dan zwaarder dan de achterliggende norm die het gedrag strafbaar verklaart. Wel is vereist dat je dan proportioneel en subsidiair handelt.

Proportioneel wil zeggen dat je niet meer doet dan nodig is voor dat belang. In dit geval ging het erom vast te stellen dat er inderdaad persoonsgegevens opvraagbaar waren zonder beveiliging. Daarvoor was het in dit geval niet nodig om 80.000 gegevens te downloaden, met een handjevol kom je ook al een heel eind. Hier ging de man dus veel verder dan nodig.

Subsidiair wil zeggen dat je bij de uitvoering van het feit zo zorgvuldig mogelijk te werk gaat. Dat betekent bij ethisch hacken dat je het ontdekte meldt aan de organisatie. Natuurlijk is het mogelijk dat een organisatie je negeert, maar het is gewoon een verplicht nummer. Het feit dat hij dit niet heeft gedaan, maar direct de publiciteit zocht, wordt hem dan ook zwaar aangerekend. Omdat de man dus niet aan de eisen van proportionaliteit en subsidiariteit heeft voldaan, wordt zijn handelen strafbaar verklaard. Echter, vanwege zijn nobele doel, het feit dat hij steeds meewerkte en dat hij geen strafblad had, wordt hem uiteindelijk geen straf opgelegd.

Voor mij is de uitspraak vooral van belang omdat hij onderstreept dat ethisch hacken wel degelijk een goede grond kan zijn om computervredebreuk te ‘mogen’ plegen. Je moet daarbij wel héél netjes te werk gaan, én natuurlijk de organisatie altijd inlichten.

Arnoud

Deel dit artikel

  1. Het maatschappelijk belang van het publiceren van (nieuwsberichten over) onbeveiligde systemen is vele male groter dan het belang van een stichting om haar brakke beveiliging geheim te houden. We vertrouwen elke dag een hele rits partijen onze gegevens toe, hoewel het vaststaat dat tenminste een deel van die partijen de beveiliging niet op orde heeft – en onze gegevens dus voor het oprapen liggen. Het ontbreekt de bedrijven aan een drijfveer om daar wat aan te doen.

    Eigenlijk is de politiek hier aan zet, maar die heeft nu eenmaal de handen vol met een belastingverlichting voor grote multinationals.

    • Je hebt een punt als het om het publiceren van lekken in systemen gaat. Alleen is de weg die hier gevolgd werd, compleet de verkeerde.

      Ten eerste heeft de dader een absurde hoeveelheid data verzameld, veel meer dan dat nodig was om het lek aan te tonen. De hoeveelheid data die verzameld werd, is dusdanig groot dat hier van misbruik sprake is.

      Ten tweede heeft de dader geen contact opgenomen met de organisatie waar het lek was (wat echt wel de volgende logische stap is), maar heeft het direct via publeaks aan de grote klok gehangen, waardoor er geen mogelijkheid was om het lek te verhelpen zonder dat het lek publiekelijk bekend was en het risico op misbruik van het lek dus aanzienlijk groter werd.

      Dat de dader in deze uiteindelijk geen kwade bedoelingen had, zijn daad direct heeft toegegeven en volledig heeft meegewerkt aan het onderzoek, toont aan dat hij zelf ook weldoor had dat zijn acties niet helemaal in de haak waren. Een terechte veroordeling, maar geen straf vind ik dus een goede beslissing van de rechter in deze zaak.

    • Dus eigenlijk zeg je: Als jouw voordeur open staat, mag iedereen naar binnen gaan, want hij is niet dicht, en dan anderen inlichten dat jouw voordeur open staat. Die anderen hoeven jou niet te wijzen op die openstaande deur, want dat is jouw verantwoordelijkheid.

      Ik zou zelf die deur niet dicht doen (iemand kan even naar buiten zijn gegaan zonder sleutel), maar de bewoner er wel op wijzen. Dat is netjes.

      De hacker werkte hier niet in opdracht van die stichting, dus wist dus van niets. Volgens mij is dat geen ethische hacker, maar iemand die meer aan zich zelf denkt. Had wat mij betreft zwaarder gestraft mogen worden.

      • Mijn vrouw heeft wel eens bezwaar gemaakt tegen een mat waarop “Welkom” staat, omdat dat zou impliceren dat je wel naar binnen mag als de deur toevallig open staat.

        In andere tijden stonden voordeuren veel vaker open, en was het gebruikelijk “volluk!” te roepen als je binnen wilde komen…

        De vergelijking met open deuren is onjuist. Een webserver moet je niet zozeer beschouwen als een deur, maar als een portier (dat is een vertegenwoordiger van de bewoner of gebruiker van het pand). Als je die vraagt, mag ik na binnen, moet je er redelijkerwijs op kunnen vertrouwen dat deze gemachtigd is daarover een beslissing te nemen, en moet een positieve beslissing niet leiden tot lokaalvredebreuk. Neemt deze een onbedoelde positieve beslissing omdat jij hem doelbewust misleidt, dan heb je wat mij betreft nog steeds geen huisvredebreuk gepleegt… Als ik aan de fysieke deur van de RVD vraagt, he mag ik alvast de kersttoespraak 2019, en je krijgt hem, dan heb je ook niets fout gedaan, wat mij betreft zelfs als je heel goed weet dat dat ding nog geheim moet blijven. Een verzoek aan de webserver voor datzelfde kan ik niet anders zien.

  2. Te evil voor ‘white hat’, te dom voor ‘black hat’. Wat moet een rechter doen? Enorm slechte OPSEC. Eerst met je eigen IP-adres iets ontdekken en testen, daarna je VPN aanslingeren (dezelfde user agent, browser, etc.) om lekker te een nachtje te experimenteren en daarna via Amazon je gestructureerde extractie te doen.

    Vooral leuk is de naam ‘rollema’ – is dat zijn eigen naam, of die van één van zijn slachtoffers (en waarom niet geanonimiseerd?). Volgens Fox-IT had hij toen hij ‘rollema’ invulde nog geen succesvol record gezien, dus hoe komt hij tot die input? ‘Rick Roll-ema’?

    En dan ben ik gegeven zoveel ‘black hat’-dommigheid het nog eens met het ‘white hat’-argument dat je éérst een PoC moet hebben, voordat iemand wakker wordt. Alleen 80k records is overtrokken. Puur de constatering dat ‘pictura.php’ onbeveiligd op nummer persoonsgegevens retourneert, was voor niemand interessant geweest. Duivels dilemma. Slecht uitgevoerd.

  3. Is de analogie niet meer dat hij het bordje niet op het gras lopen ……. nee dat is het ook niet helemaal. robots.txt is een aanwijzing voor robots, als je als mens dat negeert dan kun je giechel zeggen dat je geen robot giechel bent en dus nergens had kunnen weten giechel dat dat niet mag?

  4. Dat ‘URL raden’ blijft een raar punt.

    Heel af en toe kom je nog eens een website tegen met oplopend genummerde URLs, met rottige navigatie. Bijvoorbeeld to niet zo heel lang geleden de Rolling Stone Top 500. Het is nu – veel irritanter – een eindeloos scrollende pagina, maar vroegah kon je gewoon er willekeurig doorheen springen door in de URL een getal op te hogen of te verlagen. De website zelf bood toen alleen maar de mogelijkheid voor vorige en volgende.

    Als je vervolgens op zo’n site een te hoog nummer invoert en iets ziet wat nog nergens gelinkt is, dan is het computer vrede breuk? En wat als ik die pagina vervolgens link, pleegt dan iedereendie op die link klikt computervredebreuk?

    edit: niet oneindig scrollend, maar 50 nummers onder elkaar … nog steeds irritant omdat je niet direct naar een positie kan springen.

    • Een hoger ID invullen is computervredebreuk als je daarmee als doel hebt iets te vinden wat je eigenlijk niet behoort te zien. “page=2” veranderen in “page=10” om snel naar de tiende pagina van de zoekresultaten te springen is OK, maar “kersttoespraak=2017” veranderen in “=2018” is dat niet omdat de RVD niet wil dat die toespraak nu al te zien is. Onwetend op een toegestuurde link klikken is nooit computervredebreuk, omdat opzet nodig is. Maar als de tekst van de link “Klik hier om ongeautoriseerd toegang te krijgen tot de uitgelekte kersttoespraak” is, ja, dan is dat computervredebreuk.

      • Dan mijn probleem: Hoe gaat een rechter ooit onderscheid maken tussen: 1. Ik was de kerst toespraak van 2017 aan het lezen en dacht, eens kijken of 2018 al gepubliceerd is. en 2. Morgen komt de toespraak 2018 uit, eens kijken of die ICT klunsen bij de overheid hem onbeveiligd hebben neergezet. Die eerste persoon zou ik kunnen zijn, ik manipuleer regelmatig tellers in URL’s, omdat dat sneller is.

        Ik heb voor wel scripts geschreven die op die manier beleggingsinformatie scrapen, met als stop conditie dat een pagina niet bestaat. Als ik op die manier de teksten van de kersttoespraak scrape, dan had ik dus ook bijvangst gehad.

        Mijn probleem is dat een rechter nooit kan weten dat jij zoiets simpels bewust hebt gedaan of niet. Tenzij je zo dom bent om te zeggen dat je dat om reden 2 hebt gedaan. Een rechter die dat wel denkt te kunnen heb ik geen enkel vertrouwen in.

      • Maar als je die toespraak vindt door een typfout? Dus ik wilde 2017 typen maar mijn vinger raakt per ongeluk de ‘8’ aan (wat heel goed kan – overkomt me wel eens met toetsen vlak naast elkaar, zoals in dit geval dus ook), dan pleeg ik dus computervredebreuk door een typfout? Zou raar zijn. Dan zou ik dus ook erfvredebreuk plegen doordat ik per ongeluk, omdat ik in gedachten liep, de tuin van de buren van mijn kennis/familielid/etc. naar binnen loop maar direct weer verlaat omdat ik mijn fout realiseer? Of ik mag zwaar worden bestraft omdat ik per ongeluk mijn knipperlicht naar rechts aanzette terwijl ik naar links ging? Dan wordt het allemaal wel erg makkelijk om mensen veroordelen. Dit is een democratie, geen gevangenis.

  5. Het robots.txt bestand is slechts een verzoek aan zoekmachinecrawlers om bepaalde pagina’s niet te indexeren. Het betekent absoluut niet dat de betreffende pagina niet toegankelijk mag zijn. Vaak vind je in robots.txt juist alleen pagina’s die prima toegankelijk zijn maar die men gewoonweg liever niet in de index wil hebben staan, zoals PDF documenten waarvan de bezoeker eerst even langs de voorwaarden of samenvattingspagina moet. Sterker nog, de voornaamste reden om een pagina in robots.txt te noemen is omdat er blijkbaar naar de pagina verwezen wordt vanaf andere plekken op het web, anders zou de crawler er niet kunnen komen en was het dus geen probleem.

    Blijkbaar kan elke donateur zijn eigen gegevens inzien op de betreffende pictura.php pagina zoals cbg.nl/pictura.php?id=10384, en die pagina is niet beveiligd. Dus de donateur heeft dan bijvoorbeeld een e-mail gehad met de link, maar kan de link ook op een andere manier krijgen. Misschien deelt de donateur de link met vrienden en familie, of plaatst het CBG sommige links zelf op een overzichtspagina: dit zijn de niet-anonieme donateurs! Dat je op één of andere manier aan de link komt, zelfs al is het via het robots.txt indexeervoorkeurenbestand, maakt het géén computervredebreuk. En het veranderen van de URL is géén script manipuleren, dat is gewoon het opvragen van data. Het script doet blijkbaar precies wat het moest doen: eenieder toegang geven tot de gegevens van alle donateurs.

    Elke idioot had deze gegevens kunnen vinden, en misschien zijn er zelfs eerder bezoekers geweest die alle data hadden binnengeharkt. Deze specifieke ‘hacker’ vervolgen voor computervredebreuk laat slechts zien dat men liever schiet op het zwarte schaap dan werkelijk zorgen voor degelijke beveiliging.

  6. Ik ben het er niet mee eens dat iets aan PubLeaks bekend maken gelijk staat aan de publiciteit zoeken. Dan had hij het ook op Social Media kunnen delen. PubLeaks komt bij mij juist als een plek over waar kundige journalisten de gegevens ontvangen en daar zorgvuldig mee omgaan. Tweakers heeft dit vervolgens wel netjes aan de website gemeld. Daarmee is het gewenste traject, via een tussenpersoon, alsnog gewoon bewandeld. Pas daarna is hierover gepubliceerd.

    Ook vind ik dat er echt geen sprake is van enige beveiliging. Daar hebben anderen al genoeg over gezegd. Maar naar mijn mening slaat de rechter hier de plank echt compleet mis. Sterker nog; In het vonnis is het volgende te lezen:

    Wordt geen ID meegegeven, dan wordt een invulveld getoond waar een ID kan worden ingevuld. Het script wordt normaal gesproken alleen door [benadeelde] gebruikt vanaf een strikte set aan IP-adressen, maar het script is wel bereikbaar en bruikbaar vanaf het gehele internet.

    Ten eerste wordt er functionaliteit geboden om een ID in te vullen. Het bedoelde gebruik van het script! Daarnaast zou dit alleen door de benadeelde vanaf specifieke IP-adressen gebruikt worden. Scherm het dan ook af! De benadeelde heeft dit script simpelweg publiek geplaatst. Dat was 10 jaar geleden nog gewoon. Maar dit had al lang aangepast moeten zijn.

    Blijft over het ophalen van die 80k entries. Dat is het enige wat niet goed te praten is. Het onderzoeken van hoeveel entries er bestaan misschien nog wel. Maar vervolgens aan de hand hiervan al deze (zie vonnis) IDs automatisch doorlopen (en waarschijnlijk alle data opslaan – dat wordt niet echt genoemd of weersproken dus is aan te nemen) zeker niet.

    Kortweg; De rechter slaat plank mis wat betreft publiciteit zoeken en zogenaamde beveiliging. Maar de uitspraak en straf zou er niet anders van zijn geworden.

    Hmm, Arnoud, de 0 (nul) lijkt wel erg veel op een 0 (letter) in dit font, kun je een andere gebruiken?

  7. Als een bedrijf een grove persoonsgegevens-lek heeft en deze heeft geen responsible disclosure protocol, dan dient zo’n bedrijf een flinke boete te krijgen.

    Als een amateur een lek vindt, en niet meteen rapporteert, maar eerst 80k stuks gegevens download, en probeert anoniem te blijven, dan dient zo iemand een flinke waarschuwing / of lichte straf te krijgen. Ik vindt dat geen ethisch hacken, maar een slecht excuus en aandachtsvragerij (dat slecht afstraalt op werkelijke ethische hackers).

    Het “manipuleren” van een address (het verhogen van een ID) is een volstrekt legitieme manier om te browsen. Ik reken dit zelf dan ook niet onder hacken / computervredebreuk, zelfs al gebeurd het met slechte intentie. Verkrijg je op deze manier echter persoonsgegevens en ga je die publiceren, dan pas zit je fout. Dit soort nieuws is achterlijk! Je hoort nu nooit dat de systeembeheerder (die tot op het strafbare af niet geschikt is voor zijn/haar beroep, en dus mijn inziens fraudeert door loon te vangen) een flinke straf krijgt voor het mogelijk maken van een lek.

    https://www.cbc.ca/news/canada/nova-scotia/freedom-of-information-request-privacy-breach-teen-speaks-out-1.4621970

    https://www.wired.com/2013/03/att-hacker-gets-3-years/

    Ik snap het op zich wel: ID +1 is natuurlijk erg dichtbij een XSS of database extractie via URL. Maar waar ik (met een gerust hart) een ID increment (uit due diligence, of zaakwaarneming oogpunt), zo kijk ik wel even uit voor ik XSS probeer. Ik vindt het maar een glijdende schaal: straks is het illegaal om een combinatie van getalletjes uit te proberen (omdat dit een van-buiten-toegankelijk IP van een industrieel systeem zou kunnen zijn). Het wordt reeds illegaal om browser plugins te publiceren die websites aanpassen als ze zich reeds in je browser bevinden.

    De beheerder zit hier ook fout. Als er een piratenzender naast mij zit en ik draai aan knoppen van mijn radio en ontvang deze, dan heb ik geen probleem.

Laat een reactie achter

Handige HTML: <a href=""> voor hyperlinks, <blockquote> om te citeren en <em> en <strong> voor italics en vet.

(verplicht)

Volg de reacties per RSS