Bitcoin Meester hoeft wegens bug teruggedraaide transacties niet te vergoeden

Cryptoplatform Bitcoin Meester hoeft veertien transacties van een klant die daarmee vierduizend procent winst maakte maar wegens een systeemfout werden teruggedraaid niet te vergoeden, las ik bij Security.nl. Ook hoeft men geen ruim 42.000 euro schadevergoeding te betalen vanwege misgelopen winst. Dit alles op gezag van de rechtbank Amsterdam die aldus vonniste nadat de klant erg boos was over de misgelopen gelden.

Op 26 februari vorig jaar verkocht de klant de cryptovaluta Hedera aan Bitcoin Meester om daarmee de cryptovaluta Aion te verkrijgen. Vervolgens verkocht de klant de verkregen Aion weer aan Bitcoin Meester voor Hedera. Dat kan, daar is zo’n platform voor.

Alleen, de prijs waarvoor Bitcoin Meester de Hedera van de klant kocht lag 2,5 tot 25 hoger dan de prijs waartegen die vrijwel tegelijkertijd diezelfde Hedera van Bitcoin Meester kocht. Hierdoor kon de klant binnen een tijdsbestek van ongeveer 12 minuten met 14 transacties een winst maken van ruim 4.000%. Doordat deze 14 transacties opvielen maakte een bot in het systeem van Bitcoin Meester melding van de transacties en werd [eiser] uitgelogd uit zijn account. Na opnieuw inloggen bleken de transacties te zijn teruggedraaid.

Zo te lezen had de klant een bug ontdekt in het systeem van Bitcoin Meester:

Bitcoin Meester heeft overtuigend aangetoond dat er een fout in haar systeem zat waardoor zij aan [eiser] een hogere inkoopprijs voor Hedera betaalde dan zij van [eiser] ontving voor diezelfde Hedera. Op zitting heeft Bitcoin Meester uitgelegd dat zij als broker fungeert en zelf pas een transactie uitvoert nadat een klant een cryptovaluta heeft ge- of verkocht. Door de fout in het systeem lag er voor haar geen reële transactie onder de door [eiser] opgedragen transactie, want Bitcoin Meester kon door de foutieve prijs de transactie van [eiser] immers niet uitvoeren op de cryptovalutamarkt.
Dat verklaart ook waarom 14 transacties in zeer korte tijd natuurlijk. En dan krijg je dus de vraag, zit zo’n platform vast aan de bug die ze zelf bouwde? Nee, aldus de rechtbank. Ook bij geautomatiseerde contracten (note to self: cursus Smart Contracts pluggen) geldt gewoon het Burgerlijk Wetboek:
[M]ocht [eiser] er op vertrouwen dat Bitcoin Meester de Hedera keer op keer voor een beduidend hogere prijs van hem wilde terugkopen dan waarvoor zij deze even tevoren aan hem had verkocht?
Dan krijg je een optelsom van factoren. Allereerst ga je dus in 12 minuten 14 keer hetzelfde kop, en ten tweede krijg je steeds 2,5 à 25 keer je inleg aangeboden. Dat kan niet kloppen, althans daarvan moet je je achter de oren krabben of het platform dat wel had gewild. En dan is er dus in juridische zin geen redelijkerwijs gewekt vertrouwen, en dus geen overeenkomst.

Omdat er geen overeenkomst is, kan de klant Bitcoin Meester niet verwijten de transacties te hebben gewist en de gemaakte winst niet te vergoeden. Wel werd de klant veroordeeld tot het betalen van de proceskosten van Bitcoin Meester die bijna 2900 euro bedragen.

Arnoud

Kun je Microsoft aansprakelijk stellen voor schade uit een ransomware-aanval?

De computersystemen zijn nog steeds niet bruikbaar, zo liggen beide containerterminals van APM in de Rotterdamse Haven nog steeds stil. Dat las ik bij Bright. De ransomware Petya wist vele computers te gijzelen in de IT-omgeving van de Haven, en dat is niet eenvoudig op te lossen. De reden blijkt een bug in Windows, die al tijden bij de NSA bekend zou zijn maar nooit gemeld is. Is er nu enige mogelijkheid Microsoft aansprakelijk te stellen voor de schade van zulke downtime?

Het makkelijke antwoord is natuurlijk nee, want in de voorwaarden van Microsoft staat gewoon dat ze niet aansprakelijk zijn voor de gevolgen van fouten in hun software. En ja, dat is rechtsgeldig bij grote partijen zoals de Rotterdamse Haven. Bij consumenten in principe niet, tenzij er heel bijzondere omstandigheden zijn (zoals, blijf ik volhouden, wanneer de software gratis beschikbaar werd gesteld).

Maar goed, wat in het hypothetische geval dat er geen rechtsgeldige beperking van aansprakelijkheid was. Dan zou het kunnen. Wel moet er dan aan een aantal eisen zijn voldaan. Kort gezegd is de belangrijkste vraag of Microsoft deze fout had moeten voorkomen, vanuit hun zorgplicht als dienstverlener. Of iets anders geformuleerd, of je het Microsoft kunt aanrekenen dat die fout erin zat (toerekenbare tekortkoming).

Ik denk dat je daar in het algemeen niet meteen van kunt spreken, tenzij men de fout kende en deze dan onnodig lang liet liggen. Alle software heeft fouten, zeker zulke grote en complexe software als Windows. Het is onvermijdelijk dat er dan van tijd tot tijd een exploit opduikt die mensen schade berokkent.

Verder, zelfs als je uitkomt bij een toerekenbare tekortkoming of verzaken van de zorgplicht, dan nog heb je altijd het verweer “waarom had je geen backup” of andere maatregelen ter beperking van de schade. Want anno 2017 behoort iedereen te weten dat je je systeem goed moet afschermen voor onheil van buitenaf, en dat je je data moet backuppen om terug te kunnen na een geslaagde aanval. Het voelt weinig redelijk om je bedrijfsdata kwijt te spelen door een aanval en dan Microsoft de rekening te geven.

Bij consumenten blijf je zitten met het probleem dat zij juridisch gezien meestal geen schade hebben. Zet maar eens een geldbedrag op het gegijzeld hebben van je vakantiefoto’s of persoonlijke administratie. En zonder schade geen claim.

Arnoud

Ben ik nog aansprakelijk als ik het IE op mijn software overdraag?

software-disc-cd-dvd-dragerEen lezer vroeg me:

Voor een klant heb ik maatwerksoftware ontwikkeld. Zij willen nu het intellectueel eigendom daarop verkrijgen. Op zich prima, alleen wil ik dan geen aansprakelijkheid meer voor fouten. Ik heb er dan immers geen controle meer over. Daar reageerden ze heel verbaasd op. Maar dit is toch geen gekke vraag?

Nee, een gekke vraag is dit niet. Maar ik kan me de verbazing ook wel weer een beetje voorstellen.

Aansprakelijkheid en intellectueel eigendom staan in principe los van elkaar. Aansprakelijk ben je als je een fout maakt in de opdracht, en dat heeft niets te maken met wie eigenaar wordt van de auteursrechten op het resultaat.

De verwarring hier gaat volgens mij over fouten die de opdrachtgever aanbrengt nadat de software klaar is. Wie het auteursrecht verwerft, mag ook zelf gaan knutselen in het geleverde. Maar het is natuurlijk evident dat je de leverancier niet aansprakelijk kunt houden voor je eigen fouten. Dit heeft niets te maken met eigendom op het werk. Als ik een huis laat bouwen, is de aannemer aansprakelijk voor fouten terwijl ik er eigenaar van ben. Hetzelfde gebeurt bij auteursrechten.

Het lijkt me wel verstandig dit even uit te werken in het contract, om bewijsproblematiek te verkleinen. Je zegt dan bijvoorbeeld dat iets alleen een fout is als het ook zit in de code zoals overgedragen. Je hebt dan een manier nodig om vast te leggen exact welke code dat is. Denk aan een hash, een lijst bestandsnamen met datum en grootte of het nummer van een github-repository.

Arnoud

Waarom garandeert mijn softwarelicentie de afwezigheid van virussen?

Een lezer vroeg me:

Vaak zie ik in softwarelicenties iets als dit: “Leverancier garandeert dat de Software geen virussen, achterdeuren, logische bommen of andere kwaadaardige routines bevat.” Waarom doen juristen dat? Het is toch raar dat een leverancier zou zeggen “onze software bevat een virus”?

Voor mijn gevoel is de clausule vandaag de dag een copypasteclausule: iedereen doet dit al jaren, dus laat ik het ook maar doen. Maar dat terzijde.

Het idee achter een garantie is dat je de leverancier kunt aanspreken als het toch gebeurt. Het zal zelden voorkomen dat er een virus (van een ander) in software zit, dus dit is een goedkope garantie om te geven.

Specifiek voor de achterdeuren en logische bommen kan de clausule belangrijker zijn dan ze lijkt. Het is enige tijd werkelijk praktijk geweest dat software werd voorzien van achterdeurtjes waarmee de leverancier ondanks alle beveiliging ‘in’ de software kon komen, of van logische bommen die bij wanbetaling afgingen zodat de software onbruikbaar werd.

Vandaag de dag is het vrijwel ondenkbaar dat geleverde software dergelijke kwaadaardige code bevat. Althans, stiekem. Software kan nog steeds uitschakelroutines hebben, maar die wordt dan netjes gemeld. En dan is het moeilijk dit een ‘kwaadaardige’ routine te noemen. Een enkele keer blijkt een ontevreden werknemer dergelijke code ingebouwd te hebben om zijn werkgever dwars te zitten of af te persen, maar dat is iets dat naar de klant toe toch echt voor rekening van die werkgever moet komen.

Arnoud

Is mijn provider aansprakelijk voor bugs in zijn router?

Een lezer vroeg me:

Is mijn Internet Service Provider aansprakelijk voor schade die ontstaat door een fout of een bug in de door hem aan zijn klanten beschikbaar gestelde router? Hierbij ga ik er van uit dat mijn eigen PC qua veiligheid op orde is.

Wie een product levert, moet zorgen dat die aan de redelijkerwijs gewekte verwachtingen voldoet. Of het nu gaat om een appel, een wasmachine of een tablet. Blijkt dat niet zo te zijn, dan heeft de consument recht op gratis herstel of vervanging van het product.

Deze ‘conformiteitseis‘ staat geheel los van eventuele garanties of toezeggingen van de fabrikant of leverancier. Een fabrikant kan garanderen dat de tablet een jaar lang perfect werkt, maar als na anderhalf jaar de batterij de geest geeft dan kun je toch écht bij de winkel gratis herstel daarvan verlangen. Ja, bij de winkel. Want volgens de wet is niet de fabrikant maar de winkel verantwoordelijk.

Probleem is altijd wel: wat is een redelijke verwachting bij dit soort dingen? Dit is namelijk niet hetzelfde als “is foutloos”. Dat een appel na een week bruin en oneetbaar wordt, is niet onredelijk. Die appel voldoet dus aan de conformiteitseis, en je kunt geen herstel of vervanging van de appel eisen. Een wasmachine die na een week defect is, is evident niet conform de verwachtingen.

Bij ICT-producten is dit een groot grijs gebied, met name als het gaat om security. We blijken met z’n allen nog steeds niet in staat om veilige en foutloze producten af te leveren. Dus enige fouten of problemen moet je helaas verwachten. Er is nog geen norm zoals we die wel kennen voor veiligheid: een router mag niet fysiek ontploffen of 240 volt op de netwerkaansluitingen zetten. Dat is per definitie buiten de conformiteitseis, ongeacht de reden voor een dergelijke fout.

Je moet dus op zoek naar de aard van de fout: hoe kon deze schade ontstaan, hoe moeilijk was het geweest dit te fixen en vooral had je redelijkerwijs mogen verwachten dát de fout er niet zou zijn? En daar is weinig zinnigs over te zeggen zonder te weten wat voor fout, wat voor router en wat voor gebruik daarvan.

Het lijkt mij dat wanneer een bedrijf een router levert met verouderde firmware – dus met bekende fouten – je al heel snel mag spreken van een conformiteitsgebrek. Dat hoort gewoon niet te gebeuren. Maar dat er fouten worden ontdekt in wat er is uitgeleverd, dat is nu eenmaal de praktijk. Meer dan een upgrade installeren, kun je niet doen denk ik. Natuurlijk moet die dan wel gratis beschikbaar gesteld worden.

Arnoud

Mijn router heeft een backdoor, mag ik mijn geld terug?

ziggo-modem-wifi.jpgEen lezer vroeg me:

Ik las op Tweakers dat mijn oude router een backdoor bevat. Dat is natuurlijk niet wat ik mocht verwachten, dus kan ik nu bij de winkel mijn geld terug vragen?

Een product zoals een router moet aan de redelijkerwijs gewekte verwachtingen voldoen. Dat heet de conformiteitseis, soms ook wel de wettelijke garantie genoemd.

Een router die niet routeert, is niet conform de verwachtingen. Die mag dus terug, en de winkel moet deze herstellen of een vervangend product geven. En lukt dat niet, dan heb je recht op je geld terug.

Maar niet elke verrassing bij het product is een conformiteitsgebrek. Zo hadden we ooit de discussie over IPv6 versus conformiteit in de context van netneutraliteit; die zou je ook hier kunnen voeren. Mag je anno 2014 van een router verwachten dat hij een IPv6-netwerk aan kan? Natuurlijk, als het op de doos staat dan moet hij dat doen. Maar als er niet over v4 of v6 gesproken wordt, wat mag je dan verwachten?

Je moet dan gaan kijken naar wat de stand der techniek is, wat gebruikelijk is in de markt, oftewel wat de redelijke verwachting mocht zijn bij dit soort producten. Prijs en doelgroep tellen mee. Een simpel routertje van €10 zal minder kunnen dan een topmodel van een als innovatief bekendstaand bedrijf. En bij dat simpele routertje mag je dan ook eerder storingen of problemen verwachten.

Onbedoelde backdoors zou ik in eerste instantie niet meteen als conformiteitsgebrek zien. Fouten worden overal gemaakt, en zeker bij IT-producten. Het is bekend dat dat kan gebeuren, en dat weegt mee bij het bepalen van de verwachtingen.

Een opzettelijk ingebouwde backdoor wordt een ander verhaal. Daarmee introduceert de fabrikant opzettelijk een beveiligingslek of kwetsbaarheid, en dat kan toch niet de bedoeling zijn. Maar bewijzen dat de backdoor opzettelijk ingebouwd was, lijkt me niet echt haalbaar.

Arnoud

Ben ik aansprakelijk voor de fouten in mijn software?

bug-fout.pngEen lezer vroeg me:

Ik heb als freelancer een stukje software gemaakt voor een groot bedrijf. Nu melden ze me dat er een bug in zit waardoor ze maanden aan data kwijt zijn, en ze willen mij aansprakelijk stellen voor de schade! Ik werk eigenlijk altijd zonder algemene voorwaarden, omdat ik niet houd van dat formele gedoe, maar nu maak ik me toch wel zorgen. Kunnen ze zomaar een grote claim indienen?

Dat zou zomaar kunnen inderdaad. Wanneer een leverancier geen algemene voorwaarden hanteert, dan geldt de wettelijke regel voor aansprakelijkheid. Die zegt dat de ontwikkelaar aansprakelijk is voor alle schade, als de fout hem te verwijten was. Daarvan is kort gezegd sprake als hij niet de gebruikelijke mate van zorg heeft betracht die een normaal ontwikkelaar in acht zou nemen.

Het zal dus aankomen op de aard van de fout. Was dit een zeer subtiele moeilijke fout of juist een triviale bug die de vraagsteller gewoon had moeten ontdekken bij het testen? En zit de fout wel in de door hem geleverde code, of zit het hem in de interactie tussen zijn code en die van het bedrijf? In het laatste geval is het moeilijk de ontwikkelaar te verwijten dat de fout er zat.

Ik moet zeggen dat ik schrik van hoe veel programmeurs blijken te werken zonder algemene voorwaarden, of met een generiek modelletje van de Kamer van Koophandel of van een op internet gevonden concurrent dat dan net niet de clausules heeft die je wilt. Of die wel aansprakelijkheid uitsluit maar dan zó ver gaat dat de clausules ongeldig zijn (“Leverancier is te allen tijde nergens voor aansprakelijk”).

<reclame style=’schaamteloos’>Het starterspakket voor softwareontwikkelaars van mijn bedrijf zou hier goed geholpen hebben.</reclame> De ICT~Office voorwaarden zijn ook een gratis optie, hoewel die dan weer zó eenzijdig zijn dat grote klanten ze vaak direct afwijzen. Maar in gevallen als deze helpen ze wel: vorig jaar kon een ontwikkelaar een schadeclaim pareren van 300.000 euro dankzij de algemene voorwaarden.

Meelezende ontwikkelaars: Hoe zijn jullie gekomen tot de algemene voorwaarden die je nu hebt?

Arnoud

Mag ik weigeren aan prutswerk te programmeren?

ruine-rommel-kasteel-ingestort-veiligheid.jpgEen lezer vroeg me:

Ik werk sinds kort bij een bedrijf dat webapplicaties bouwt in PHP. Helaas moet ik constateren dat meer dan de helft van mijn collega’s echt te weinig verstand van zaken heeft. Men gebruikt procedureel PHP alsof het 1997 is (in plaats van het veel veiligere object-georiënteerde), men heeft geen enkel benul van veiligheidsrisico’s en documentatie ho maar. En nee, we onderhouden geen antieke applicatie van een belangrijke klant maar dit is code die vorig jaar geschreven is. Kan ik weigeren nog langer op deze manier door te gaan? Ik vind de risico’s voor onze klanten onaanvaardbaar.

Het kan zeker frustrerend zijn om ergens te werken waar men zwaar onder je eigen kwaliteitsstandaards werkt. Alleen, dat is geen reden om te stoppen met werken en te eisen dat het bedrijf haar standaards aanpast. Als er wettelijke regels worden overtreden, ja dan kun je denk ik wel terecht het werk neerleggen.

Dat is hier echter niet zo. Een bedrijf is vrij om procedureel PHP te gebruiken, en als ze onveilige applicaties oplevert dan krijgt ze daar wel claims over van haar klanten (hoop ik). Er zijn geen wetten of regels die je overtreedt door procedureel code te schrijven of niet-onderhoudbare code te maken.

Afgezien van een paar stevige gesprekken voeren met collega’s of de veiligheids-evangelist uithangen, zie ik geen mogelijkheden om te weigeren op deze manier door te gaan. Dit zal worden uitgelegd als werkweigering, en dat is grond voor ontslag. Het feit dat je het oneens bent met het beleid, is niet genoeg om het werk te mogen weigeren. De werkgever beslist hoe het werk verricht wordt, en zolang men redelijke beslissingen neemt, heb je die uit te voeren. Ook al vind jij ze onveilig, ouderwets of gewoon dom.

Arnoud

Betalen voor dataverkeer veroorzaakt door een inbraak

data-traffic-spike.pngEen lezer vroeg me:

In januari is mijn (zakelijke) website gehackt. Diegene heeft vervolgens heel veel dataverkeer veroorzaakt, o.a. door spam te versturen vanaf de site. De hoster heeft dit na een paar dagen gemerkt en het lek gerepareerd. Hij meldde me dat dit door een bug in het controlepanel van de site (Directadmin) was veroorzaakt. Dat is dus de software die hij aanbiedt om de site te beheren.

Vervolgens stuurt hij me doodleuk de rekening voor het extra dataverkeer! In de voorwaarden staat namelijk dat ik moet betalen voor alle dataverkeer boven de 4 gigabyte, en hij zegt nu dat het niet uitmaakt dat het een hacker is geweest. Dat kan toch niet zomaar?

Ik hoop dat iedereen hier het met me eens is dat dit inderdaad niet zomaar kan. Maar goed, daar kom je niet ver mee bij de kantonrechter. Je zult moeten uitleggen waarom die bepaling in de algemene voorwaarden niet op deze manier kan worden toegepast, ook al staat er dat al het extra verkeer voor rekening van de klant komt.

Artikel 6:248 BW biedt de mogelijkheid om de contractsbepalingen naar redelijkheid en billijkheid aan te vullen of zelfs in te perken. Stel er staat in een huurcontract dat de verhuurder “op elk moment” toegang tot het pand kan verlangen voor inspectie. Als het gaat om een woonhuis, dan volgt uit de redelijkheid en billijkheid dat hij dat niet op vrijdagnacht om 03:25 kan eisen, maar zich moet beperken tot normale tijden. En waarschijnlijk ook wel dat hij een afspraak moet maken voordat hij naar binnen mag. Bij een datacentrum of opslagruimte zou dat iets anders liggen. Er zijn dan eerder redenen om zomaar om 03:25 naar binnen te gaan, dus het kan dan best redelijk zijn dat de verhuurder ineens binnen staat.

Het lijkt me dat je met dit artikel ook deze interpretatie van het contract van tafel kunt krijgen. Het is volstrekt onredelijk dat de klant moet betalen voor dataverkeer dat een derde veroorzaakte door een een fout in een controlepaneel onder het beheer van de leverancier. Daarom mag deze contractsregel in deze situatie redelijkerwijs niet toegepast worden (edit: zin half afgemaakt).

Als het nou zelfgekozen software was, dan kon ik wel wat zien in het standpunt van de leverancier. De bug is dan binnen de risicosfeer van de klant, die kiest voor die software en moet dan de gevolgen dragen voor exploitatie van die bug. Denk aan forumsoftware die slecht beveiligd is, of een zelfgeschreven mailscript waar een spammer mee aan de haal gaat.

Hoewel in zo’n geval de klant wellicht een beroep op overmacht kan doen, als hij alles heeft gedaan om de software dicht te timmeren en er toch een fout in bleek te zitten. Maar ergens wringt dat: het kan toch niet de bedoeling zijn dat de hoster dan dat meerverkeer gaat betalen?

Arnoud