Mag je voor je afstudeeropdracht 17.000 mensen typosquatten?

shell-script-hacker-go-awayEen Duitse student is erin geslaagd zo’n 17.000 mensen zijn eigen script te laten draaien middels typosquatting, meldde Ars Technica onlangs. Hij had het script geïnstalleerd op de bekende sites PyPI, RubyGems en NPM met als naam een spelfout op de 214 populairste scripts daar. “It’s not clear if the experiment broke ethical or even legal boundaries, since it relied on confusion if not outright deceit to trick people into installing something other than what they intended to install,” zegt Ars dan netjes. Nou, ik durf wel een juridisch balletje op te gooien.

De truc van de student was eigenlijk te simpel voor woorden. Steeds meer software maakt gebruik van via internet beschikbare standaardbibliotheken via bekende sites (repositories), en deze worden volautomatisch gedownload bij het gebruik. Natuurlijk typen mensen wel ooit in welk pakket moet worden gebruikt, en daar zit dan de truc: mensen maken spelfouten, en dat levert hier dan een pakket van de slimme student op. Want die had dus eigen software geüpload naar die sites met namen die typefouten van die bekende bibliotheken zijn. Die software deed hetzelfde, maar met een klein stukje tracking dat hem vertelde waar de software gebruikt werd.

Is dit nieuw? Heel algemeen gesproken niet. Typosquatten kennen we al sinds de begintijden van domeinnamen bijvoorbeeld. Binnen software kende ik het echter nog niet. Heel gek is dat ook niet: het is vrij normaal dat als je een bibliotheek wilt gebruiken, dat je die even ophaalt van de bron, er snel doorheen loopt en hem dan in gebruik neemt. Of je software-omgeving zorgt daarvoor, via eerder geïnstalleerde standaardbibliotheken. Recent is echter die trend van “pak het even dynamisch van internet” opgekomen en daar ontstaan nu dus dit soort problemen.

Is het juridisch toegestaan? Nou ja, er is natuurlijk geen harde wet tegen. Typosquatten bij websites was altijd relatief eenvoudig aan te pakken, omdat je dan andermans merk of handelsnaam schond. Maar merknamen op package names, die zijn er niet veel. En dat kán ook niet altijd: veel pakketnamen zijn functioneel en daarmee beschrijvend voor wat ze doen, en dergelijke namen kunnen niet voor merkbescherming in aanmerking komen.

De sites in kwestie kunnen het natuurlijk wel oplossen met eigen regels, zoals we in maart zagen, waar de repository NPM zelf verzon dat de bekendste naam de meeste rechten had. Daar zou dus vrij makkelijk een regel “Geen dingen die typos lijken van andermans namen, hoe functioneel ook” bij kunnen. Niet dat je daar bij echte criminelen veel aan hebt, maar het is iets.

Je zou het met enige fantasie een poging tot binnendringen (computervredebreuk) kunnen noemen. Dan zeg je, hij gebruikte een valse hoedanigheid (de vermomming als de echte bibliotheek) om zijn code naar binnen te smokkelen, met de downloadende ontwikkelaar als willoos werktuig. En die code hoorde niet op die computer te zijn, dus wederrechtelijk.

Het kan, maar dan gaat hier het aspect van de afstudeerscriptie (het afstudeerscript?) spelen. Want criminele activiteiten kúnnen per ongeluk legaal zijn als blijkt dat sprake is van ethisch handelen. Harde regels daarvoor zijn er niet, maar in de cybercontext lijkt me dat wel opgaan voor iemand die een nieuw punt te maken heeft dat van algemeen belang is en dat niet op andere manier dan de criminele aan te tonen is, en bovendien geen schade aanricht. Dus ja, deze ene jongen mocht dit, maar vanaf nu mogen mensen dit niet meer.

Arnoud

10 reacties

  1. Het is ook beter voor sitebouwers om alleen externe scripts van grote publieke content delivery netwerken (CDN) van bijvooorbeeld Google of Microsoft te gebruiken waar niemand zelf scripts kan uploaden. Andere scripts moeten ze gewoon zelf meeleveren en niet van sites waar iedereen contetn kan uploaden zodat daar ook geen risico is op dit soort problemen.

    1. Het gaat niet over CDN’s of het zelf hosten van files. Het probleem is dat wanneer een developer een library nodig heeft hij deze van een repository op haalt. Hiervoor gebruik je een naam en daarin worden typo’s gemaakt en dan kan je dus iets krijgen wat je eigenlijk niet verwacht. Dit probleem doet zich niet alleen voor bij website-bouwers maar ook met tools zoals: Maven, Gradle, Docker, NPM, NuGet, etc.

  2. Je zegt ‘een ander mag het niet meer’, maar dat is toch niet hoe wetenschap werkt? Een studie moet reproduceerbaar zijn, een essentiele stap die tegenwoordig helaas vaak wordt over geslagen buiten de natuurwetenschappen. Op zijn minst zou een ander persoon deze zelfde studie nogmaals uit moeten kunnen voeren om te kijken af de uitkomst geen statistische anomalie was.

    1. Empirische rechtswetenschap? Uitproberen of iets wel of niet mag?

      Er is ook nog zoiets als wetenschapsethiek; dat je bepaalde dingen niet zomaar empirisch mag onderzoeken, omdat het onderzoek zelf schadelijke effecten heeft.

  3. Geen schade is ook relatief, als je denkt de “standaard” (actief onderhouden) library te pakken te hebben en in plaats daarvan baseer je je werk op een knullig kopietje al dan niet met extra bugs en exploitable code wat qua onderhoud dood is zodra ’t geupload wordt, maar dit zal wel te ver gezocht zijn voor het juridische.

  4. Ik vind de schijnbare legale activiteiten van Softonic, Brothersoft, Softpedia en gelijken net zo erg. (“Download”-sites die je extra-gratis voorzien van een “download-manager” en andere opsmuk, terwijl je veelal in de veronderstelling bent dat je een clean kopie van de maker te pakken hebt.)

  5. Uyt den ouden doosch: dit klinkt heel erg als de Morris-worm, ook gemaakt en verspreid met de beste onderzoeksintenties. De maker van de worm is in de VS veroordeeld, op de grond dat hij (hoewel per stommiteit) behoorlijk veel schade heeft veroorzaakt, terwijl ook daar de (moord en brand schreeuwende) systeembeheerders hun zaakjes niet op orde hadden.

    Ik denk dat we ons hier simpelgweg moeten afvragen: is er schade aangericht? Als dat wel zo is, lijkt het me zo klaar als een klontje. Maar wat als er, zoals de onderzoekers beweren, geen schade is? Wordt het bij de rechter dan niet een ‘het enige wat je krijgt is je gelijk’-verhaal?

    Grappig hoeveel ‘nieuwe materie’ eigenlijk stokoud blijkt te zijn…

    edit: Trouwens, valt de ‘exploit’ die men hier gebruikte niet domweg onder misleiding?

  6. Nah, 95% was eigenlijk helemaal geen typosquatting:

    Typo Category: Number of Installations All installations: 19721 (100%) Stdlib: 18855 (95.6%) Creative: 459 (2.3%) Algorithmical: 407 (2.1%)

    Some typo packages used in the empirical phase were originally Python2 standard library names (For example the package names urllib2, urllib, cpickle, md5 and others) that did not continue to exist in the language successor Python3. Therefore, a lot of people tried to install the missing packages via the Python package manager, although the PyPi package repository does not host Python core packages. These names should not be allowed to exist in the packagerepository. Uit http://incolumitas.com/data/thesis.pdf

Geef een reactie

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