Mag je het netwerkprotocol van een online game uitpluizen?

| AE 8580 | Security | 15 reacties

rink-springer-romdumpEen tijd geleden ontdekte ontwikkelaar Rink Springer het spel Runes of Magic. En zoals dat gaat bij hackers: je raakt op het spel zelf uitgekeken, dus dan ga je kijken hoe het op de achtergrond werkt. In dit geval door het netwerkprotocol van het spel uit elkaar te trekken en te documenteren. Hetgeen uiteindelijk leidde tot een lezing op de CCC vorig jaar. Eh, maar mag dat eigenlijk wel?

Runes of Magic is een free-to-play online MMORPG (oneerbiedig gezegd een World of Warcraft-kloon). Je speelt het op je eigen PC, waarbij het spel allerlei gegevens opstuurt naar de server om je zo met anderen mee te laten spelen. En dat is nou typisch het soort “onder de motorkap”-gebeuren waarvan je graag zou willen weten hoe het werkt.

Met een simpele netwerktool (tcpdump en tcpflow) slaagde Springer erin om het gebruikte protocol te achterhalen. Hij ontwikkelde zelfs een tool (romdump) dat het hem makkelijker maakte om gegevens te decoderen en vervolgens te herkennen. Zo kon hij onder meer de algemene structuur achterhalen van pakketjes informatie over rondlopende spelpersonages.

Vervolgens ontwikkelde hij een transparante proxy tussen de client en de officiële servers, die al het netwerkverkeer kon opnemen voor realtime analyse. Erg handig bij zulk nieuwsgierig speurwerk: zo kun je makkelijk kijken wat de juiste vraag/antwoord-scenario’s zijn (client stuurt pakketje X, is hij tevreden als ie pakketje Y terugkrijgt, etc).

Erg interessant, alleen: mag dat wel? Want reverse engineeren van software, dat was een dingetje onder de Auteurswet immers. En dat klopt. Alleen heeft Springer niet de software uit elkaar getrokken maar de netwerkcommunicatie. En dat mag. Netwerkcommunicatie is openbare data die je mag observeren, en je observaties mag je vervolgens gebruiken zoals je wilt.

Oké, niet helemaal: een nepserver bouwen om mensen op te lichten mag niet, de informatie gebruiken om vals te gaan spelen of jezelf valselijk dure spullen te geven ook niet. En zo zijn er nog wel een paar dingen die problematisch kunnen zijn. Maar dat is een categorie verder dan enkel een protocol uit elkaar halen en constateren: met dit pakketje loggen ze je in, met dat pakket springt je personage over een berg en met dat pakket krijg je een zwaard.

Mag je zomaar al die gegevens publiceren? Daarmee kunnen andere mensen wellicht wel die verboden dingen doen. Dat is een terecht punt, en dat speelt altijd bij responsible disclosure. Publiceer dus alleen neutrale technische informatie en let erop dat die niet triviaal kan worden misbruikt door anderen. Geen kant-en-klare exploits dus. Maar een wetenschappelijke analyse van een netwerkprotocol mag wel.

Het kan anders komen liggen als de leverancier van de software gebruik maakt van beveiliging. Dergelijke beveiligingen omzeilen kan worden gezien als het omzeilen van een softwarebescherming in de zin van de Auteurswet (art. 32a), en dat is onrechtmatig en strafbaar. Het protocol moet dan beveiligd zijn met bv. een sleutel of certificaat. Enkel xor’en van de data (zoals bij dit protocol) is niet genoeg daarvoor.

Bekijk vooral de lezing van Rink!

Arnoud

Mag je software reverse engineeren om fouten te vinden?

| AE 8023 | Intellectuele rechten, Security | 31 reacties

Een lezer vroeg me:

Is reverse engineering legaal als het doel is om beveiligingslekken te vinden? Jij zei ooit van wel, maar in de wet staat volgens mij dat je alleen mag reverse engineeren om compatibiliteit te realiseren.

Oef, dat is lang geleden, maar inderdaad:

Alleen die vormen waarmee je compatibiliteit met zelfgeschreven software wilt bewerkstelligen, of waarmee je alleen de achterliggende ideeën, concepten en principes achterhaalt zijn legaal. Met name is het niet legaal om de informatie te gebruiken om een kloon van de software te maken.

Waar de vraagsteller naar refereert, is het wetsartikel dat het eerste deel van die zin onderbouwt:

Als inbreuk op het auteursrecht op [software], worden niet beschouwd het vervaardigen van een kopie van dat werk en het vertalen van de codevorm daarvan, indien deze handelingen onmisbaar zijn om de informatie te verkrijgen die nodig is om de interoperabiliteit van een onafhankelijk vervaardigd computerprogramma met andere computerprogramma’s tot stand te brengen, mits: (bla)

Dit is inderdaad beperkt tot reverse engineeren met als doel het maken van een interoperabel eigen programma. Soms is het daarvoor nodig dat je de broncode van andere software achterhaalt, omdat je anders onvoldoende informatie hebt over hoe je eigen software moet gaan werken. Het vinden van een fout in software is natuurlijk niet hetzelfde als “interoperabiliteit tot stand brengen”, tenzij je zegt “ik moet weten hoe die fout werkt want ook daarin moet ik compatibel zijn”.

Er is echter nog een ander artikel dat specifieker op fouten ziet:

De verveelvoudiging, als bedoeld in de eerste zin, die geschiedt in het kader van het laden, het in beeld brengen of het verbeteren van fouten, kan niet bij overeenkomst worden verboden.

Reverse engineeren is een vorm van verveelvoudigen. Dat is waarom deze actie in principe inbreuk op het auteursrecht maakt. Echter, dit artikel verklaart het verveelvoudigen ter herstel van fouten legaal (zelfs als in de EULA staat dat dat niet toegestaan is). Daarom zou dit volgens mij toch gewoon toegestaan zijn.

Dus ik geloof dat ik toch gelijk had, hoewel om een andere reden dan ik zei 🙂

Arnoud

De legaliteit van het uit elkaar halen van een stuk hardware

| AE 6439 | Security | 12 reacties

componenten-delen-onderdelen-partsEen lezer vroeg me:

Stel je hebt een bestaand apparaat (een versterker) en je gaat de elektronica reverse engineeren. Je haalt de printplaat uit het apparaat, neemt potlood, papier en datasheets en je begint uit te knobbelen hoe het apparaat precies werkt. Vervolgens digitaliseer je het zelf getekende schema en ga je het posten op een forum. Mag dat? Het voelt als iets waar vast een wet tegen zal zijn.

Als daar een wet tegen is, dan moet ik die nog tegenkomen. Als je een product koopt, mag je dit uit elkaar pluizen en anderen uitleggen hoe het werkt. Ook bij huur of leen, hoewel je dan wel “als een goed huisvader” moet zorgen voor het produc dus alleen uit elkaar halen wat je ook weer in elkaar kunt zetten.

Heb je het apparaat als demonstrator gekregen of een geheimhoudingscontract getekend) dan ligt dit moeilijker, maar in zulke situaties zou je ook op de hoogte gesteld moeten zijn van beperkingen.

Natuurlijk zijn er intellectuele-eigendomsrechten, zoals het auteursrecht of het octrooirecht. Een auteursrecht schenden met een technisch ontwerp is haast ondenkbaar, zeker als je dat zelf getekend hebt. Dat eigen ontwerp bevat alleen de feitelijke kennis over het origineel, en feiten kunnen niet onder het auteursrecht vallen.

Feitelijke kennis neergeslagen in een apparaat kan onder een octrooi (patent) vallen. Maar dat is pas aan de orde wanneer je het ontwerp gaat bouwen en verkopen. Ja, voor jezelf bouwen mag – octrooien schend je pas bij bedrijfsmatig gebruik van de uitvinding.

De enige uitzondering hier zou kunnen zijn als hetgeen je uit elkaar haalt een kopieerbeveiliging voor muziek of films betreft. De Auteurswet verbiedt in art. 29a het omzeilen van doeltreffende kopieerbeveiligingen (en de DMCA doet in de VS iets vergelijkbaars). En omdat dat lastig te bewijzen/aan te pakken is, is er ook een “hulpmiddelen”-artikel toegevoegd in lid 3:

Degene die diensten verricht of inrichtingen, producten of onderdelen vervaardigt, invoert, distribueert, verkoopt, verhuurt, adverteert of voor commerciële doeleinden bezit die:<br/> a) aangeboden, aangeprezen of in de handel gebracht worden met het doel om de beschermende werking van doeltreffende technische voorzieningen te omzeilen, of<br/> b) slechts een commercieel beperkt doel of nut hebben anders dan het omzeilen van de beschermende werking van doeltreffende technische voorzieningen, of<br/> c) vooral ontworpen, vervaardigd of aangepast worden met het doel het omzeilen van de doeltreffende technische voorzieningen mogelijk of gemakkelijker te maken,<br/> handelt onrechtmatig.

Het enkel publiceren van informatie (dus een blauwdruk) wordt hier niet genoemd, en ook het publiceren an sich niet (hoewel dat “distribueren” zou kunnen zijn). Een stuk software aanbieden valt onder “inrichtingen, producten”, dus dan kom je wél in de problemen. Ik denk dus dat ook dit het probleem niet moet zijn, tenzij je er heel nadrukkelijk bij gaat zeggen dat je zo gratis betaalde films kunt kijken.

Arnoud

Wanneer is een API reverse engineeren computervredebreuk?

| AE 6374 | Security | 27 reacties

Een lezer vroeg me: Onlangs is de OV-Chipkaart app uitgekomen. Uit analyse blijkt dat de app per request een specifieke signature meestuurt, en zonder die signature komt er geen reactie vanuit de server van Trans Link Systems. De methode waarop de signature gemaakt wordt is te achterhalen met decompileren en daarna eenvoudig na te maken…. Lees verder

Mag ik een API reverse engineeren voor mijn eigen app?

| AE 5041 | Intellectuele rechten | 43 reacties

Een lezer vroeg me: Steeds meer sites en platforms komen tegenwoordig met een eigen mobiele app, maar lang niet altijd zo handig als wel zou kunnen. Nu werken deze apps met op de achtergrond een API (application programming interface) die ik met mijn eigen app ook zou kunnen aanroepen. Maar mag ik hun app reverse… Lees verder

Mag Skype worden gereverse engineered?

| AE 2572 | Innovatie, Intellectuele rechten | 25 reacties

Een beveiligingsonderzoeker heeft het gedrag van de VoIP-software Skype onderzocht. Op basis van die reverse engineering heeft hij een groot deel van de code achterhaald, meldde Webwereld vrijdag. Daarop, zo meldde Phoronix, vloog Skype meteen in de tegenaanval, met gestrekt been, Zidane-kopstoot én kruistrap: This unauthorized use of our application for malicious activities like spamming/phishing… Lees verder

Mag reverse engineering bij EULA verboden worden?

| AE 1549 | Security | 8 reacties

Een lezer vroeg zich af: Is het rechtsgeldig in Nederland om in een EULA reverse engineering van een softwarepakketgeheel te verbieden, ook voor toepassingen als het maken van interoperable software? Reverse engineering, in goed Nederlands decompilatie, is volgens artikel 6 van de Software-richtlijn een handeling die geen inbreuk op het auteursrecht oplevert. Desondanks zie je… Lees verder

De legaliteit van reverse engineeren – hardware en drivers

| AE 823 | Intellectuele rechten, Security | 5 reacties

Het is toegestaan om te achterhalen hoe dingen werken. Heb je een mooie grafische kaart gekocht, en wil je weten welke signalen deze afgeeft, dan mag je gerust met je multimeter aan de slag. Wil je zien hoe je televisie er van binnen uitziet, veel plezier met de schroevendraaier. De garantie vervalt natuurlijk wel, maar… Lees verder