HEMA USB

From RevSpace
Revision as of 20:53, 31 October 2015 by Bertrik Sikken (talk | contribs) (Typo fixes. Dank aan een lezer voor de melding.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

FAQ over HEMA USB+

Wanneer is het probleem gemeld bij HEMA?

Op 13 juli 2015 is het probleem bij HEMA gemeld. Twee maanden later is aangegeven dat er nog steeds onveilige dingen online stonden. Nog eens anderhalve maand later, op 30 oktober 2015, is overgegaan tot publicatie (disclosure); diverse beveiligingsproblemen bij de leverancier van HEMA zijn echter nog niet opgelost.

Het product wordt niet meer verkocht in HEMA-winkels en registratie van nieuwe gebruikers lijkt te zijn gestopt.

http://www.nu.nl/internet/4155497/hema-haalt-usb-sticks-handel-ernstig-beveiligingslek.html

Welke informatie lekt er uit?

Alles wat je aan dit systeem hebt gegeven, ligt in principe op straat. Onder andere:

  • E-mailadres
  • Naam, adres, telefoonnummer (als je die hebt ingevuld)
  • Wachtwoord
  • Bestandsnamen
  • De bestanden zelf

Hoe zit de dienst "online geheugen" van HEMA in elkaar?

Op de USB-stick staat een .EXE-bestand. Daarmee installeer je de software op de USB-stick. Je wordt naar de website gestuurd om je aan te melden, en dan kun je ermee aan de slag. (Deze registratie is het enige dat gebeurt via een versleutelde verbinding, maar die versleuteling is niet goed: het scoort de laagst mogelijke score in de test van Qualys' SSL Labs.) De installatieprocedure controleert of je USB-stick wel van het juiste type is, waarschijnlijk als kopieerbeveiliging.

Bij de installatie worden een paar mapjes aangemaakt op de USB-stick. Bestanden in die mappen kunnen worden gebackupt naar de online opslag, of worden teruggezet vanuit diezelfde online opslag.

De Windows-applicatie communiceert intern (onversleuteld) met PHP-scripts op de webserver om een aantal controles uit te voeren en de toegang tot de opslagruimte te krijgen. Het belangrijkste onderdeel van die communicatie is amazon_values.php, die een "policy document" genereert en ondertekent met een secret key. Met dat policy document krijgt de Windows-applicatie vervolgens toegang tot de map van de gebruiker, in de bucket van Amazon S3.

Hoe lekt mijn informatie uit?

Op meerdere manieren.

Om te beginnen zijn de verbindingen die door het Windows-programma worden gelegd, helemaal niet versleuteld. Iedereen die je verbinding kan aftappen, kan dus meelezen: je netwerkbeheerder, je internetprovider, opsporingsdiensten, maar ook mensen met je WiFi-wachtwoord.

Registratiegegevens worden gemaild naar een Gmail-adres, vanaf het adres info@appstore.com, dat eigenlijk van Apple is. Mocht er iets foutgaan bij het mailen, dan gaat de foutmelding met al die registratiegegevens dus mogelijk ook naar een mailbox van Apple.

Daarnaast is de programmatuur op de server die wordt gebruikt voor de database slecht geschreven en bijvoorbeeld vatbaar voor SQL-injecties, waarmee de database kan worden uitgelezen. De software is op verschillende manieren onveilig.

De bestanden die online staan, kunnen door iedereen worden gedownload, die je gebruikers-ID en de bestandsnaam kent, omdat ze bij het uploaden van de bestanden de acl op "public-read" hebben gezet. Dat downloaden is kinderspel voor iedereen die weet hoe de HTTP-adressen zijn samengesteld.

Tot slot ligt alles ook nog eens op straat omdat een groot deel van de broncode van de server-side software online stond, met daarin cruciaal wachtwoord, waarmee de gehele Amazon S3 bucket kan worden uitgelezen. Daarin staan alle bestanden.

Waar hebben jullie die broncode vandaan?

In open directories van de website stonden .zip-bestanden met namen als "hema_310o7.zip" en "Amazon_jan092012.zip". Het zijn waarschijnlijk oude backups, maar het lijkt erop dat die code uit 2009 tot 2012 nog steeds in gebruik is.

Hoe zou je die broncode omschrijven?

Het PHP-programmeerwerk is warrig en ongestructureerd. HTML, PHP en SQL staan rommelig door elkaar. Er staan veel spelfouten in en er worden veel aannames gedaan over de werking van dingen. Uit de achtergebleven commentaren kun je opmaken dat delen met copy/paste zijn opgebouwd uit diverse bronnen, waaronder een leerling-beoordeel-systeem en online voorbeeldcode.

Op veel plekken wordt gebruik gemaakt van achterhaalde en onveilige dingen zoals addslashes() in plaats van placeholders of correcte escaping. Authenticatie en autorisatie ontbreken vaak: je kunt zonder in te loggen nieuwe admin-gebruikers maken of wachtwoorden aanpassen.

HEMA zei dat het veilig is

De mensen van de HEMA begrijpen waarschijnlijk de techniek niet.

Als antwoord op de vraag "Hoe veilig is het online opslaan van gegevens?" staat in hun FAQ het ontnuchterende antwoord "De opslag van gegevens gebeurt bij de gerenommeerde hosting-organisatie <naam> en voldoet aan hoge veiligheidseisen." Daarbij zeggen ze niks over wat die veiligheidseisen dan zouden zijn. Bovendien is het gewoon niet waar: deze opslag is nauwelijks beveiligd.

Overigens... "<naam>" staat letterlijk op de site van HEMA. Voor de duidelijkheid: de bestanden zijn opgeslagen in de Verenigde Staten van Amerika, bij Amazon. Dat is inderdaad een generommeerd bedrijf. Het is met Amazon S3 wel mogelijk om bestanden veilig te uploaden (TLS) en veilig op te slaan (client side versleuteling), maar van die mogelijkheden is bij het maken van dit product geen gebruik gemaakt.

Hoeveel werk zou het zijn om de problemen op te lossen?

De makers van deze software hebben overduidelijk geen verstand van de technieken waarmee ze werken en zullen niet in staat zijn om dit alsnog te beveiligen. Voor mensen die dat wel kunnen, is het ook een grote uitdaging, omdat er ontzettend veel mis is.

Zoals gezegd zou de opslag bij Amazon in principe wel veilig kunnen, maar we kunnen ons voorstellen dat er gebruikers zijn die hun bestanden liever niet buiten Europa laten opslaan.

Op zich kan de software op de USB-stick zichzelf updaten met een nieuwe versie, maar ook dat mechanisme is onveilig en zou kunnen worden gebruikt door kwaadwillenden om andere dingen mee te doen, zoals het installeren van malware. In feite is dit systeem bruikbaar als rootkit met botnet.

Alsnog beveiligen en upgraden naar een veiligere versie is volgens ons volkomen ondenkbaar.

Wat moet ik doen als ik zo'n USB-stick heb?

Je bestanden verwijderen uit het "online geheugen" is mogelijk, maar je moet dat via de Windows-tool doen. Als je de bestanden verwijdert via de website, worden ze NIET daadwerkelijk verwijderd, ze blijven namelijk voor iedereen toegankelijk downloadbaar.

Zelfs als het lukt om je bestanden te verwijderen, dan nog is dit jarenlang lek geweest. Misschien zijn wij de eerste die dit lek hebben ontdekt, maar het is goed mogelijk dat kwaadwillenden ons voor waren. Ze hebben niet opgemerkt dat wij toegang hebben gehad tot hun broncode, database en bestandsopslag, dus eventueel misbruik zullen ze ook niet hebben doorgehad.

Ga ervan uit dat al je gegevens op straat liggen, en neem maatregelen om erger te voorkomen. Heb je persoonlijke informatie online gezet via dit systeem? Zet je schrap en bereid je voor op de gevolgen van identiteitsfraude.

Nadat je je bestanden verwijderd hebt, kun je je USB-stick formatteren. Zonder de USB+-software is het een normale USB-stick die je kunt blijven gebruiken, maar misschien wil HEMA je wel je geld teruggeven. Dezelfde USB-stick zonder lekke software is goedkoper.

Hoeveel mensen gebruiken USB+ van HEMA?

We geven geen informatie over de inhoud van de database of bestandsopslag.

Is wat jullie doen wel legaal?

ICT-jurist Arnoud Engelfriet kan dit beter uitleggen dan wij: http://www.iusmentis.com/meningsuiting/nieuws-journalistiek/ethisch-hacken/

Veel vormen van hacken zijn overigens helemaal niet strafbaar. Analyse van broncode en je eigen dataverkeer zijn geen computervredebreuk.

De USB+-sticks voor het onderzoek zijn gewoon gekocht in de winkel.