image

Juridische vraag: Hoe legaal is reverse engineeren?

woensdag 5 mei 2010, 00:07 door Arnoud Engelfriet, 30 reacties

Heb jij een uitdagende vraag over beveiliging, recht en privacy, stel hem aan ICT-jurist Arnoud Engelfriet en maak kans op zijn boek
"De wet op internet".

Arnoud is van alle markten thuis, maar vindt vooral in technische / hacking vragen een uitdaging. Vragen over licenties worden niet behandeld, aangezien die geen raakvlak met beveiliging hebben. De Juridische vraag is een rubriek op Security.nl, waar wetgeving en security centraal staan. Elk kwartaal kiest Arnoud de meest creatieve vraag, die dan zijn boek zal ontvangen.

Vraag: Hoe legaal is het reverse engineeren van software? Mag ik bijvoorbeeld proberen te achterhalen hoe software werkt, of zelfs daarvan de functionaliteit veranderen?

Antwoord: Het reverse engineeren van software is onder omstandigheden legaal. Software is beschermd door het auteursrecht, en het bewerken (wijzigen, aanpassen en uitbreiden daarvan) wordt gezien als een vorm van verveelvoudigen. Je hebt daar normaal dus toestemming voor nodig van de rechthebbende.

Bij reverse engineeren moet je de software uitvoeren om te kunnen zien wat hij doet. Uitvoeren van software op een wijze die de licentie te buiten gaat, is normaal inbreuk op het auteursrecht. Maar voor deze vorm van reverse engineering is er een speciaal artikel in de Auteurswet. Dit artikel zegt dat je mag reverse engineeren om interoperabiliteit van onafhankelijk gemaakte software tot stand te brengen met de software die je wilt reverse engineeren. Wil je bijvoorbeeld een eigen module integreren in Microsoft Excel, dan mag je daarvoor met Excel gaan prutsen om de interface te achterhalen en dit aan de gang te krijgen.

Een beperking is wel dat de gegevens niet al snel en gemakkelijk beschikbaar zijn. Biedt Microsoft dus een officiele API om dit soort modules toe te kunnen voegen, dan hoef je niet meer te reverse engineeren om die API te achterhalen en dan mag je ook niet meer reverse engineeren.

Daarnaast is er ook nog artikel 45l Auteurswet dat zegt dat je bevoegd bent "de werking van dat werk waar te nemen, te bestuderen en te testen teneinde de daaraan ten grondslag liggende ideeën en beginselen te achterhalen." Dat klinkt ook als reverse engineeren maar het slaat in feite nergens op: er staat in juridische taal dat je goed mag opletten wat de software doet, maar met de handjes op de rug. Het enige dat je hieraan hebt, is dat je mag achterhalen wat het idee achter een bepaalde functie is (bv. het algoritme of het stappenplan) en dat je daarmee je eigen programma mag gaan maken. Leuk, maar dat valt sowieso al buiten het auteursrecht.

Reverse engineeren voor andere doelen mag niet. Maar voor de duidelijkheid: het herstellen van fouten wordt niet gezien als reverse engineeren in de wet. Artikel 45j Auteurswet bevat expliciete toestemming voor het kopiëren van de software voor het verbeteren van fouten, en die toestemming kan niet bij overeenkomst worden uitgesloten.
Arnoud Engelfriet is ICT-jurist, gespecialiseerd in internetrecht waar hij zich al sinds 1993 mee bezighoudt. Hij werkt als partner bij juridisch adviesbureau ICTRecht. Zijn site Ius mentis is één van de meest uitgebreide sites van Nederland over internetrecht, techniek en intellectueel eigendom. In 2008 verscheen zijn boek "De wet op internet".

Reacties (30)
05-05-2010, 00:49 door Eerde
Gelukkig hoef je 'open source' niet te 'reverse engineeren' ;)

PS
Software is beschermd door het auteursrecht, en het bewerken (wijzigen, aanpassen en uitbreiden daarvan) wordt gezien als een vorm van verveelvoudigen.
Verveelvoudigen = verspreiden ?

Dan gaat het niet op voor open source waar verspreiden pas is als je de aangepaste software naar buiten brengt op welke manier dan ook. Voor eigen gebruik, binnen je organisatie hoef je de nieuwe broncode niet te leveren aan de gemeenschap, hoe vaak je het ook verveelvoudigd.

(Denk maar aan het MoD van de USA, die aangepaste Linux software -kernel e.d.- draait en die aanpassingen niet hoeft vrij te geven).
05-05-2010, 01:18 door Necrowizard
artiekel: Een beperking is wel dat de gegevens niet al snel en gemakkelijk beschikbaar zijn. Biedt Microsoft dus een officiele API om dit soort modules toe te kunnen voegen, dan hoef je niet meer te reverse engineeren om die API te achterhalen en dan mag je ook niet meer reverse engineeren.

Dit is wel een heel slecht voorbeeld; Mark van Sysinternals (o.a. Process explorer) zei in een van zijn videos bijvoorbeeld ook dat hij delen van windows heeft ge-reverse engineerd om achter verschillende ongedocumenteerde functies te komen, en Sysinternals is later overgekocht door Microsoft, dus blijkbaar vinden ze het niet zo erg ;)
05-05-2010, 08:04 door Arnoud Engelfriet
@Eerde: Verveelvoudigen = kopie maken, ongeacht of je die verspreidt of niet. Dat mag alleen als de licentie het toestaat. Gelukkig dus dat elke opensourcelicentie je toestaat om te verveelvoudigen zo veel als je wilt. Pas bij openbaarmaken (verspreiden) treden de licentievoorwaarden in werking die bv. zeggen dat je de broncode erbij moet doen.
05-05-2010, 10:55 door WhizzMan
Ik meen me te herinneren dat er ook nog een artikel in de wet staat dat het legaal maakt om te reverse-engineeren als je gebruiksrechten hebt voor de software en de leverancier/copyrighthouder geen ondersteuning meer bied op de software (abandonware)?
05-05-2010, 13:53 door Anoniem
Ik zou zeggen iedereen heeft het recht om te leren weten hoe software werkt.
Maar als je Windows7 gebruikt mag je niet zo maar de code ervan veranderen,en dan verder distribueren omdat windows gesloten bron software is.
Wel mag je dingen er aan voor eigen gebruik veranderen als je dat kan,dacht ik zo voor eigen handigheidjes.
Als je Linux of een ander open bron besturingssysteem gebruikt mag je wel alles veranderen en dan her distribueren.
05-05-2010, 15:39 door Arnoud Engelfriet
Zo'n artikel is er niet. Er is wel een keer een [url=http://www.computable.nl/artikel/ict_topics/development/1421082/1277180/leverancier-van-maatwerk-moet-broncodes-afgeven.html]arrest van de Hoge Raad[/url] geweest waarin werd gezegd dat de klant recht heeft op de broncode van maatwerksoftware, als er geen ondersteuning meer is en de leverancier niets heeft geregeld over escrow of zo.
05-05-2010, 23:04 door Ilja. _V V
Ondersteunde BBcodes
Security.nl ondersteunt de volgende bbcode codes:

Het plaatsen van afbeeldingen (img tags) wordt niet ondersteund.
06-05-2010, 09:09 door Anoniem
"Maar voor de duidelijkheid: het herstellen van fouten wordt niet gezien als reverse engineeren in de wet."

Wat is de juridische definitie van een fout ?
06-05-2010, 09:33 door johanw
Maar voor de duidelijkheid: het herstellen van fouten wordt niet gezien als reverse engineeren in de wet.

Wat wordt juridisch precies onder "fouten" verstaan? Zijn dat alleen echte bugs, of is het ook een "fout" als een programma voor het opstarten contact wil opnemen met een verificatieserver en die is na 10 jaar niet meer bereikbaar omdat het bedrijf overgenomen is en de nieuwe eigenaar zegt dat je maar moet upgraden? Als ik die beveiliging dan uit mijn legaal gekochte versie sloop dan wel laat slopen, mag dat van de wet?
06-05-2010, 09:43 door Arnoud Engelfriet
Fouten zijn bugs. Het uit de lucht zijn van een server elders is geen fout in de client, dus nee je hebt niet het recht om dan "de fout te herstellen" oftewel een beveiliging te omzeilen.
06-05-2010, 10:05 door johanw
OK, dus met de aangepaste installer voor een DOS spel (de originele vliegt er op windows >= NT 4.0 altijd uit met de melding dat het systeem te traag is om het spel te kunnen spelen) het spel installeren vanaf de originele CD die ik heb mag wel (niet dat ik verwacht dat men daar erg lastig over gaat doen in de praktijk)?
06-05-2010, 11:00 door Arnoud Engelfriet
Een andere installer gebruiken is geen herstel van een fout. Dat de hardware te traag is, is geen bug in de software.

Een fout is waar een objectief kijkend deskundige van zou zeggen "ja, dat is een fout". Verder dan dat gaat de wet niet, wanneer iets een fout is hangt af van het vakgebied en de opvattingen die men er daar zoal op nahoudt. Bij consumentenelectronica is iets bijvoorbeeld sneller een fout (je cassettebandje dat opgegeten wordt) dan in de IT (je harde schijf wordt geformatteerd). Dat is dom en raar en zo maar de wet respecteert de gebruiken in de branche.
06-05-2010, 11:40 door Bitwiper
Het komt regelmatig voor dat bedoelde functionaliteit in closed source software een security risico vormt, waarvoor derde partijen, na reverse engineering daarvan, oplossingen aanbieden om bedoelde functionaliteit uit te schakelen.

Voorbeeld: oudere versies van Foxit Reader ondersteunden het "Launch" commando in PDF bestanden conform de officieele PDF specificatie (die niets vermeldt over het waarschuwen van gebruikers). Foxit Reader waarschuwde niet en startte externe (en mogelijk ook executable bijlagen in het PDF bestand) zonder vragen. Zelf heb ik het advies van ene "Thomas" (eerste comment in http://blog.didierstevens.com/2010/03/31/escape-from-foxit-reader/) opgevolgd: d.w.z. met een hexeditor in de executable gezocht naar de ASCII string "Launch" en hierin iets gewijzigd, waardoor deze functionaliteit effectief wordt uitgeschakeld.

Maar ook in andere gevallen zijn er personen geweest die third-party patchtools beschikbaar stelden voor dit soort gevallen (o.a. Ilfak Guilfanov bij de WMF problemen in 2005). Een wat technische verhandeling over "Hotpatching and the Rise of Third-Party Patches" is hier te vinden: http://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Sotirov.pdf.

Kortom, is het zelf uitschakelen van functionaliteit (daartoe adviseren en/of een tool daarvoor uitbrengen) en vanzelfsprekend de daaraan voorafgaande reverse engineering handelingen, in closed source en auteursrechtelijke software, d.w.z. ter bescherming tegen kwetsbaarheden, strafbaar of niet, c.q. bestaat er sowieso jurisprudentie over? En hoe zit het met het adviseren m.b.t. het op dergelijke wijze patchen van executables?

N.b. in geen geval bedoel ik het verspreiden van gepatchte executables (waaronder DLL's, ActiveX applets etc), dat dit niet mag lijkt me duidelijk, het gaat dus om het verstrekken van tools en/of aanwijzingen om dergelijke patches zelf uit te kunnen voeren.
06-05-2010, 11:43 door johanw
Het punt is nu juist dat de hardware helemaal niet te traag is (dat zou ook verbazingwekkend zijn met een spel dat nog onder MS-DOS kan draaien en, toen ik het kocht, al speciale instructies had om het onder win95 en OS/2 werkend te krijgen), maar dat de installer dat wel zegt (misschien ergens een integer overflow omdat de hardware juist erg snel is). Vergelijkbaar met installers die roepen dat je te weinig diskspace hebt omdat ze problemen hebben met schijven met meer dan 2^(32-1) bytes (2GB) erop.
06-05-2010, 11:53 door Arnoud Engelfriet
@johanw: Dat klinkt als een fout in de installer, en die mag je dan herstellen ja. Maar je mag alleen die fout herstellen, dus zorgen dat hij de juiste snelheid detecteert. Je mag niet de hele detectieroutine eruit slopen.

@Bitwiper: het uitschakelen van kwetsbare functionaliteit lijkt me vallen onder het repareren van fouten. Het is strikt gesproken geen reparatie, maar de functie uitzetten neemt wel de fout weg.
06-05-2010, 12:04 door Bitwiper
@Johanw: of jouw toepassing in Turbo/Borland Pascal geschreven is weet ik niet, maar in de runtime library daarvan werd tijdens initialisatie een timer-test uitgevoerd met een "loopje", dat op PC's >= 200MHz te snel werd uitgevoerd en tot een "Runtime error 200" leidde (zie http://en.wikipedia.org/wiki/Runtime_error_200). Daarvoor waren al snel verschillende patches in omloop.

In tegenstelling tot mijn bijdrage hierboven is in zo'n situatie wel duidelijk sprake van een bug - tenzij de leverancier van de software expliciet heeft aangegeven dat de software slechts op PC's langzamer dan 200Mhz gedraaid mag worden, maar die kans lijkt me klein. Maar dan nog betreft het in het geval van de Turbo Pascal bug een probleem in code toegevoegd door de compiler, niet door de applicatiebouwer geschreven code. Vergelijkbare problemen zijn ook goed denkbaar in andere ontwikkelomgevingen dan van Borland (aka Inprise aka Embarcadero Technologies, zie http://www.embarcadero.com/).
06-05-2010, 12:15 door Bitwiper
Door Arnoud Engelfriet: @Bitwiper: het uitschakelen van kwetsbare functionaliteit lijkt me vallen onder het repareren van fouten. Het is strikt gesproken geen reparatie, maar de functie uitzetten neemt wel de fout weg.
Arnoud, dank voor jouw antwoord, maar helemaal zeker voel ik me nog niet - in het geval van de Lauch functionaliteit (en WMF destijds) is er geen sprake van een fout, maar van de mogelijkheid van aanvallers om misbruik te maken van goed bedoelde functionaliteit.

Je zou kunnen stellen dat de fout van de fabrikant er in zit dat hij niet heeft voorzien dat de betreffende functionaliteit zou kunnen worden misbruikt. Maar misschien heeft de fabrikant dat wel voorzien, maar geconstateerd dat het nut groter is dan het risico. Blijft lastig...
06-05-2010, 15:48 door johanw
@Arnoud, als de source code bekend was zou dat een optie zijn. Nu is de installer zo aangepast dat hij altijd zegt dat de aanwezige hardware OK is. Maar die installer wordt wel los verspreid, ik heb wel nog steeds de originele CD nodig (hoewel een copie ook werkt maar da's een ander verhaal).

@Bitwiper: dat TP probleem ken ik (ben ik als programmeur zelf tegenaan gelopen rond 2002), maar daar was hier geen sprake van.
06-05-2010, 15:55 door SirDice
Als ik het goed begrijp is het reverse engineeren van malware eigenlijk ook bij wet verboden. De malware valt onder het auteursrecht, je hebt geen toestemming van de maker, je herstelt ook geen fout (de malware doet immers wat het moet doen). Hoe zit dat?
06-05-2010, 17:25 door Arnoud Engelfriet
SirDice: praktisch gezien zou ik zeggen "so sue me". Maar juridisch zou je het moeten scharen onder een aantoonbare noodzaak om het auteursrecht opzij te zetten. De software is tegen de wet en de rechthebbende heeft dan weinig belang bij uitoefening van zijn auteursrechten, plus de software richt schade aan dus jij hebt veel belang bij het tegenhouden van die software.

Er is een grijs gebied: advertenties uit legitieme software slopen (bv. de gratis Opera of Foxit PDF) lijkt me niet juist, maar waarom ik dan wel adware mag verwijderen kan ik niet goed onderbouwen. Waar leg je de grens?
06-05-2010, 17:37 door SirDice
Door Arnoud Engelfriet: SirDice: praktisch gezien zou ik zeggen "so sue me". Maar juridisch zou je het moeten scharen onder een aantoonbare noodzaak om het auteursrecht opzij te zetten. De software is tegen de wet en de rechthebbende heeft dan weinig belang bij uitoefening van zijn auteursrechten, plus de software richt schade aan dus jij hebt veel belang bij het tegenhouden van die software.
Ik kan me ook niet voorstellen dat een malware auteur aangifte gaat doen. Maar ik heb altijd begrepen dat er niet altijd door een 'slachtoffer' aangifte gedaan hoeft te worden. Justitie kan dat ook zelf.
06-05-2010, 17:49 door Arnoud Engelfriet
Dit is geen strafbaar feit waar Justitie over gaat vervolgen. Dit is auteursrechtschending, en op dit punt is het een civiele zaak. Los daarvan zal Justitie niet vervolgen voor auteursrechtinbreuk zonder aangifte of ander bewijs dat er tegen de wil van de rechthebbende is gehandeld.
06-05-2010, 19:58 door johanw
Door SirDice: Ik kan me ook niet voorstellen dat een malware auteur aangifte gaat doen. Maar ik heb altijd begrepen dat er niet altijd door een 'slachtoffer' aangifte gedaan hoeft te worden. Justitie kan dat ook zelf.

Er zijn toch wel rechtszaken over geweest in het verleden: Kaspersky is ooit aangeklaagd door Zango (180 Solutions) omdat hun anti-virus programma de rotzooi van Zango verwijderde. Kansloos uiteraard voor Zango.
07-05-2010, 10:36 door Anoniem
Welke idioot zit nou alle reacties van een minnetje te voorzien ?

@ redactie: welke meerwaarde heeft dit +/- systeem ? je weet niet waarom iemand een artikel wel/niet waardeert, en het heeft daardoor geen enkele meerwaarde.
07-05-2010, 10:53 door Anoniem
Aan de redactie van security.nl! loop de waarderingsmods is na... iemand verveeld zich en loopt nu alle reacties naar beneden te moden :|
07-05-2010, 13:52 door gebruiker
Reverse engineeren voor andere doelen mag niet. Maar voor de duidelijkheid: het herstellen van fouten wordt niet gezien als reverse engineeren in de wet. Artikel 45j Auteurswet bevat expliciete toestemming voor het kopiëren van de software voor het verbeteren van fouten, en die toestemming kan niet bij overeenkomst worden uitgesloten.

als ik wel fouten mag herstellen, dan mag ik ze toch ook wel eerst gaan zoeken.....
klinkt voormij als, coffeshop mag wel wiet verkopen maar niet kweken:P
07-05-2010, 16:25 door DJ de DJ
Arnoud, volgens mij interpreteer je de wet veel te strikt. Immers, reversen is niet automatisch het aanpassen van een stuk software. Wel is het meestal: decompileren, in een debugger (Ollydb ofzo) laden en draaien om te kijken hoe het werkt. Op basis van de auteurswet kan dat echt niet illegaal zijn. Als je daarna de op die wijze doorgronde werking elders zelf implementeert is er niets aan de hand. Gebeurt dagelijks, en als dat illegaal was dan hadden de vendors daar heus wel op geprocedeerd. Pas als je gaat patchen of andere dingen wijzigen, heb je met het auteursrecht te maken. Maar dat was slechts het tweede deel van de vraag. De eerste was: 'is reveren legaal' en ik heb geen argument gezien dat dat illegaal is, en al helemaal niet op basis van het autersrecht.

Ook is je aanname dat bewerken gezien wordt als verveelvoudiging ook wat te kort door de bocht volgens mij want er zijn talloze vormen van bewerken die ook binnen het kader van de auteurswet legaal zijn: het aanpassen van de toonregeling van de stereoinstallatie bij het afspelen van muziek bijvoorbeeld is toch echt 'bewerken' maar volkomen legaal.

Ok schiet maar af, want ik ben geen jurist ;-)
07-05-2010, 16:33 door Arnoud Engelfriet
De auteurswet heeft het over "het vervaardigen van een kopie van dat werk en het vertalen van de codevorm daarvan". Het is inderdaad beter om dat "decompiling" te noemen, maar de term reverse engineering is nu eenmaal bekender. Decompiling mag dus niet, tenzij je dat doet omdat je anders je eigen plugin of extensie niet werkend krijgt of omdat je een fout moet herstellen.

Wat jij beschrijft heet "werking van dat werk waarnemen, bestuderen en testen". Dat mag inderdaad zonder meer.

Een bewerking zoals jij noemt, valt wel degelijk onder "verveelvoudiging". Volgens artikel 13 "iedere geheele of gedeeltelijke bewerking of nabootsing in gewijzigden vorm" (sic). Je hebt geluk dat dit onder de thuiskopie-regeling valt als je thuis gaat zitten remixen of de toonregeling aan gaat passen. Hoewel je ook goed kunt betogen dat dit zo gebruikelijk is dat je er altijd vanuit mag gaan dat een licentie mede deze vorm van bewerking omvat.
07-05-2010, 16:39 door DJ de DJ
Hmmm..... ik ben wel geschokt dat decompileren illegaal is. Lijkt me hoog tijd voor een revisie van die wet. Gelukkig is de pakkans 0 (waarop je je natuurlijk mag afvragen wat voor zin een wet heeft maar ja)....
07-05-2010, 16:51 door Arnoud Engelfriet
Tsja, die wet is natuurlijk uit een tijd dat shrinkwrap closedsource de enige aanpak leek (GNU kon nog niet booten en BSD lag in rechtszaken).
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.