OpSec am Smartphone? Ein Vergleich mobiler Bitcoin-Apps

„Don’t trust, verify“ ist einer der Leitsprüche von Bitcoin und eine Adaption des Spruchs „Trust, but verify“. Im Deutschen sind wir Bitcoins Leitsatz mit „Vertrauen ist gut, Kontrolle ist besser“ deutlich näher und dennoch nimmt kaum jemand diesen Satz ernst. 

Egal ob es sich um Gigachad Saylor, Krypto-Youtuber, diverse Artikel auf schwindligen Krypto-News-Outlets oder unsere Wallet-Apps handelt – es wird zu schnell geglaubt und vertraut, solange es nur gut klingt. Gerade bei Smartphone-Apps hat mich diese Haltung immer sehr überrascht.

Smartphones – Feind hört mit 

Ein wichtiger Tipp ist das Risiko zu minimieren. Daher sollte auf dem Smartphone-Wallet nie mehr drauf sein als man bereit ist Bargeld in seinem Portemonnaie mit sich zu führen. Ein guter und notwendiger Rat. Allerdings wird gerne ein Punkt ausgeblendet, wenn es sich um das Smartphone dreht: Das Betriebssystem, welches uns Google oder Apple zur Verfügung stellt, ist nur spärlich ausgeleuchtet und kaum einsehbar. Während Apple lange einen guten Ruf hatte auf die Privatsphäre seiner Kunden zu achten, war es bei Google der Open-Source-Kern des Android-Betriebssystem, welcher für ein wenig Transparenz gesorgt hat. 

Während Apple in jüngster Zeit Schlagzeilen mit der Totalüberwachung aller Fotos gemacht hat, ist es, um Googles Bestrebungen alle Benutzer durchsichtig zu machen ruhig geblieben. Der Grund dafür liegt auch an Googles Plan. Anstatt „zum Wohl der Kinder“ lokale Daten und sicher geglaubte Cloud-Daten zu analysieren, hat Google noch nie einen Hehl daraus gemacht die Daten seiner Benutzer auszulesen. Schon in den 2000ern als Google GMail einführte, wurde darüber diskutiert. Bei Android erzwingt Google dessen Nutzung nicht nur durch die Integration von E-Mail und Browser-Apps, sondern geschickter mit der Bereitstellung von Schnittstellen für Drittanbieter-Apps. Fehlen diese Schnittstellen, weil die Google Services nicht installiert sind, bleibt nur die Verwendung einer kleinen Zahl an unabhängigen Apps übrig. 

Google hat mit dem „OK, Google“-Sprachassistenten auch die ständige Aufnahme seiner Umwelt salonfähig gemacht. Smartphones höhlen systematisch den Widerstand gegen Überwachung aus. Der aktuell erreichte Gipfel ist die App Quarantine SA. Diese App soll die Heimquarantäne der Bürger sicherstellen in dem jederzeit ohne Ankündigung per Video-Chat geprüft wird ob man noch zu hause ist. Australien mag ein Extrembeispiel sein, das bereits sehr früh mit digitalen Überwachungsgesetzen begonnen hat, aber deren ständige Progression ist besorgniserregend.

Smartphone Apps – der Kampf gegen den Überwachungskrampf 

Smartphone-Apps, egal ob auf Android oder iOS, sind Programme die den Zugriff auf eine Vielzahl an Sensoren, Metadaten und persönliche Daten erlangen können.

Gefährliche Daten über Daten

Ein Wort der Warnung: Metadaten klingt harmlos. Allerdings erlauben Metadaten ein sehr genaues Bild von uns zu zeichnen. Egal ob es darum geht zu zählen wie viele Sozialkontakte jemand besitzt, über welche Bewegungsmuster er verfügt oder welchen Tagesrhythmus er aufweist – all dies kann aus Metadaten abgelesen werden. Da die EU-Verordnung zur Vorratsdatenspeicherung eine Infrastruktur geschaffen hat, die diese ständig aufzeichnet, existieren diese Daten nicht nur beim Telekommunikations-Provider, sondern auch bei den Betriebssystemherstellern. Viele von Googles Produkten bauen gerade darauf auf – zB. die Verkehrsanalyse von Google-Maps. Forschung rund zu diesem Thema (zB. Evaluating the privacy properties of telephone metadata) zeigen bereits, wie schwer durchsetzbar dies unser Recht auf Privatsphäre macht. 

Während wir uns gegen die Metadatensammelei nur durch Nichtverwendung des Geräts wehren können, lassen uns weder Google noch Apple wehrlos zurück, sobald es um Berechtigungen geht.

Herr der Berechtigungen – der Benutzer

Die Systeme erzwingen eine manuelle Erlaubnis bei der Benützung von Daten und Sensoren. So kann eine App nicht ohne es vorher anzukündigen Mikrophonaufnahmen, Fotos, etc. machen. Doch die Auflösung der Berechtigungen ist grob. Internetzugang ist bei vielen Apps eine Notwendigkeit damit diese funktionieren können, allerdings kann man – ohne Firewalls – nicht verhindern, dass diese Apps Daten außerhalb der notwendigen Kommunikation versenden. 

Dementsprechend wichtig ist es, sich über die Berechtigungen, die eine App verwendet Gedanken zu machen. Im Folgeartikel zu diesem Grundlagenartikel werde ich einen Blick auf Bitcoin- und Lightning-Wallets für Android werfen. Doch um diese zu bewerten, muss man sich auch Gedanken darüber machen, welche Berechtigungen sinnvoll und welche absolut abwegig sind.

Bitcoin-Wallet – Notwendige und sinnvolle Berechtigungen 

Mit der steigenden Zahl an Stellen die Bitcoin und Lightning akzeptieren, steigt die Verwendung von Bitcoin-Apps. Die Anzahl der möglicherweise verbauten Sensoren eines Geräts wird nur von der Zahl der dafür notwendigen Berechtigungen übertroffen. Doch welche Berechtigungen ergeben Sinn bei einer Wallet-Anwendung? 

Dazu beginnt man mit den Anwendungsfällen die ein Wallet hat: 

  • Transaktionen empfangen 
  • Transaktionen versenden 
  • Kontostand abfragen 

Welche Gerätefunktionen sind meiner Meinung nach dafür notwendig? 

  • Internetzugang, um Transaktionen zu senden und den “Kontostand” abzufragen 
  • Die Kamera, um QR-Codes von Bitcoin-Adressen und Lightning-Invoices zu scannen 

Welche Funktionen können sonst noch Sinn machen? 

  • NFC, um RFID Tags scannen zu können 
  • Datenberechtigungen, um Daten ablegen zu können 
  • Berechtigungen, um Notifications und kleine Info-Dialoge zu zeichnen. Diese Berechtigung ist grenzwertig, da sie auch für Schadcode interessant sein kann, um Benutzereingaben abzufangen. 

Alles andere ist Ballast und sollte kritisch betrachtet werden. Im zweiten Teil zu diesem Artikel werden einige Apps (inkl. Der staatlichen El Salvator App „Chivo“) analysiert und deren Berechtigungsanforderungen bewertet.

Methodik für die Analyse 

Die Analyse unterteilt sich in zwei verschiedene Kategorien: 

  1. Permissions 
  2. Internetadressen zu denen die App Verbindungen aufbaut 

Die Funktionalität, die mit den Permissions erteilt werden, können in drei Gruppen unterteilt: 

  • Notwendige Funktion (+)
  • Nachvollziehbarer Anwendungsfall, aber nicht notwendige Funktion (o) 
  • Kein nachvollziehbarer Anwendungsfall oder Risiko übersteigt Nutzen (-) 

Zusätzlich kann sich je nach Beurteilung auch eine Mischung ergeben: 

  • Hervorragende Umsetzung (+/+)
  • Sinnvolle Umsetzung aber gefährliche Permission (-/ )
  • In jeder Hinsicht grauenhaft (-/-)

Diese Analyse dreht sich um Android-Apps. Die Permissions sind in der AndroidManifest.xml-Datei zu finden. Der restliche Source-Code wird nach IPs (Version 4 sowie Version 6) sowie URLs (zB. https://www.google.com) abgesucht. 

Um die URLs und IPs einzuteilen wird der umliegende Source-Code analysiert und die dazugehörige Website aufgerufen. Wenn damit keine Einteilung möglich ist, wird dies extra vermerkt. 

Open-Source-Apps werden anhand des öffentlich verfügbaren Source-Codes untersucht. Apps die nicht verfügbar sind, werden mit Android-Entwickler-Werkzeugen (ADB) extrahiert. Falls die App nicht für mein Gerät verfügbar ist, wird sie aus Online-APK-Repositories heruntergeladen. (Leicht über “<App_name> APK” auf DuckDuckGo zu finden)

Apps auf seinem eigenen Gerät zu inspizieren ist dank Entwickler-Tools und der Android Debugging Bridge sehr einfach.

 Den Original-Source-Code bekommt man nicht mehr aus der kompilierten App heraus. Für die Analyse reicht allerdings die maschinell rückübersetzte Variante. Für diesen “Decompile”-Schritt gibt es mehrere Tools: 

  • APKTool – ein Kommandozeilen-Tool das den Binär-Code in eine lesbare aber immer noch maschinennahe Sprache namens Smali übersetzt. 
  • JADX – eine Werkzeug-Sammlung die das APK nach Java dekompilieren kann. 
Bitcoin
Mit APKTool dauert es nur wenige Sekunden bis eine App dekompiliert ist.

Beide Tools konnten in diesem Fall die Apps dekompilieren.

Stichprobe von Android-Wallet-Apps für Analyse

Die Analyse sollte möglichst repräsentativ für die Apps sein, die tatsächlich in der Community verwendet werden. Chivo hat es in die Liste geschafft, da es mich persönlich interessiert hat, wie sich die staatliche Bitcoin-App im Vergleich schlägt. 

Folgende Apps wurden analysiert: 

Die erste interessante Erkenntnis war, das mit Ausnahme von Eclair, keine der Apps “nativ” nur für Android entwickelt wurde und alle auf Web-Technologien setzen, die in einem nativen App-Container beim Benutzer landen. Das ist Fluch und Segen zu gleich, da so der Entwicklungsaufwand für Features und Bug-Fixes reduziert wird. Das erhöht die Wahrscheinlichkeit, dass Fehler in der Applikationslogik rasch für alle Plattformen behoben und ausgerollt werden. Allerdings sind Webtechnologien anfälliger für vom Entwickler verursachten Pfusch – insbesondere die Plattform Cordova, welche Wallet of Satoshi verwendet.

Bitcoin-Wallets und was sie wissen und tun wollen – Ein Blick auf die Permissions 

App Permissions Beurteilung 
BlueWallet (React Native App), am 11.10.2021 abgerufen (Commit efcce00e…) Internet (+)
Kamera (+)
External Storage Schreibzugriff (+)
Biometrische Sensoren (o)
Fingerabdruck (veraltet) (o) 
Systems Alert Window (o)
Minimal und sinnvoll (+)
 
Mit Ausnahme der Erlaubnis über andere Apps drüber zu zeichnen, sind alle Permissions auf die Funktion des Wallets beschränkt und auch das Darüberzeichnen dient einem Zweck. 
Wallet of Satoshi (Cordova App), Version vom 26.09.2021 extrahiert Internet (+)
External Storage Schreibzugriff (+)
Kamera (optional) (+)
Vibrationsfunktion (o)
NFC (o)
Wake Lock (Ruhemodussperre) (o)
Push-Benachrichtigungen (o)
Samsung Notification Berechtigungen (o)
HTC App-Icon Berechtigungen
(o)
Sony App-Icon Berechtigungen (o)
Unbekannte App-Icon Berechtigung (o)
Unbekannte One Plus One Lese/Schreib-Berechtigung (o)
Huawei Launcher Lese/Schreibberechtigung (-)
Zugriff auf Position (unpräzise) (-)
Zugriff auf Position (präzise) (-)
Fragwürdige Verwendung von GEO-Location und zugespammte Berechtigungen (-)

AndroidManifest-Spam ist typisch für die Verwendung vieler Cordova-Plugins.  Die Geo-Location könnte ein Mitbringsel eines Cordova-Plugins sein. So oder so hätte das aufgeräumt werden müssen. 
Galoy Mobile (React Native App), am 11.10.2021 abgerufen (Commit cec5d98…) Internet (+)
Kamera (+)
Biometrische Sensoren (o)
Fingerabdruck (veraltet) (o)
WLAN-Status abfragen (o)
Netzwerk-Status abfragen (o)
Telefonstatus (-/ )
Zugriff auf Position (präzise) (-)
Zu viele Features (o)

Die GEO-Position wird nur nach Erlaubnis des Benutzers verwendet, um die Position auf einer Karte anzuzeigen.  Die Abfragen des Netzwerkstatus erfolgen, um sicher zu stellen, dass der Benutzer in der UI sieht, ob eine Zahlung möglich ist oder nicht. 
Breeze Mobile (Flutter App), am 11.10.2021 abgerufen (Commit 69d3eba…) Internet (+)
Kamera (+)
NFC (o)
Neustart-Benachrichtigung (o)
Biometrische Sensoren
(o)
Wake Lock (Ruhemodussperre) (o)
Priorisierter CPU-Zugriff (o)
Lesezugriff auf Kontakte (-) 
Integrierter Google-Sign In (+)

Der Lesezugriff auf Kontakte dient an keiner Stelle, um alle Kontakte auszulesen. Die Permission ist nur für die Google-Sign-In-Integration notwendig.  Wer mit der Google-Integration leben kann, findet hier eine App die minimale Berechtigungen benötigt. 
Eclair Mobile (Native App), am 11.10.2021 abgerufen (Commit 93e40b43…) Internet (+)
Kamera (+)
External Storage Schreibzugriff (+)
WLAN-Status abfragen (o)
Netzwerk-Status abfragen (o)
Neustart-Benachrichtigung (o) 
 
Minimum an Berechtigungen (+/+)

Ein Wort: Topp. 
Chivo (Expo/React App), 1.1.0 vom 9. September 2021 Internet (+)
Kamera (+) 
External Storage Schreibzugriff (+)
Biometrische Sensoren (o)
Fingerabdruck (veraltet) (o) 
Wake Lock (Ruhemodussperre) (o)
Netzwerk-Status abfragen (o)
Expo Push-Notification (o)
Priorisierter CPU-Zugriff (o) 
WLAN-Status abfragen (o)
Neustart-Benachrichtigung (o)
Push-Benachrichtigungen (o)
Samsung Notification Berechtigungen (o)
Google PlayService Berechtigung (o)
HTC App-Icon Berechtigungen
(o)
Sony App-Icon Berechtigungen (o)
Unbekannte App-Icon Berechtigung (o)
Unbekannte One Plus One Lese/Schreib-Berechtigung (o)
Huawei Launcher Lese/Schreibberechtigung (-)
Audio-Settings ändern (-)
Systems Alert Window (-/ )
Lesezugriff auf Kontakte (-) 
Schreibzugriff auf Kontakte (-)
Tonaufnahme (-)
Zugriffregelung auf lokale Dateien (-/-)
Installation von Apps (-/-)
 
Albtraum (-/-)

Eine solche App sollte niemals auf einem Gerät landen.  Schlimm genug, dass sie alle Kontakte lesen und schreiben möchte, alle Dateien am Gerät lesen können und Ton aufnehmen möchte – die App erlaubt sich auch das Nachinstallieren anderer Apps.  Eine einzige Katastrophe. 

Im Vergleich geht Eclair eindeutig als Sieger vom Platz. Dicht gefolgt von BlueWallet und Breeze, die sich nur winzige Patzer erlaubt haben. Am aller schlimmsten ist die App aus El Salvador. Diese Liste an Permissions passen gut in ein Werk Orwells  – und am besten wäre es, wenn sich solche Apps auf fiktive Orte beschränken würden.

Mit wem Bitcoin- und Lightning-Apps reden wollen 

Das Heraussuchen der URLs und IPs ist eine zeitaufwendige Aufgabe. Um die Aufgabe etwas einfacher zu gestalten, habe ich ein kleines Bash-Skript geschrieben, dass aus einem beliebigen Verzeichnis alle IPs und URLs extrahieren kann. 

Die offensichtliche Schwachstelle eines solchen Skripts ist, dass programmatisch zusammengesetzte Adressen nicht erkannt werden. Daher sind die folgenden Beurteilungen mit einer Priese Salz zu verstehen. 

Auf der Basis dieses Skripts wurden die jeweiligen Verweise analysiert. 

App Verweise Beurteilung 
BlueWallet Entwickler-Dokumentation
mempool.space
Img.shields.io
Telegram-Link zu Gruppe
Link zu Transifnex (Dienstleister für Übersetzungen)
Coindesk-API
Yadio.io-API
Bitcoinduliban.org-API
Exir.io-API
Bluewallet-Firebase.io
Lndhub-staging.herokuapp.com
Opennode-API
Strike-API
Acinq-API
bitrefill.com-API
Groundcontrol-bluewallet.herokuapp.com
Aopp.group Salesforce-Reflinks
Lnbits.com-Reflinks
Lndhub.herokuapp.
BTCPay-Server-URL
bugsnag.com (Error-Tracker) (-/ )
21.analytics.ch-Tracker (-)
Unübersichtlich (-/ )

Blue Wallet enthält einen Tracker. Davon abgesehen sind die verwendeten URLs einem Zweck zuordenbar.  Allerdings ist die schiere Anzahl der externen Services in sich schon ein Minuspunkt. Da so die eigenen Daten auf viele Anbieter aufgeteilt werden. 
Wallet of Satoshi API-Endpunkte
Verweise zu Entwickler-Dokumentation
Google-Analytics (-/ )
Whats-App-Link zum Teilen
Boatbits.com.au
2gems.media 
www.sydneyharbourluxecharters.com.au 
In Ordnung (o)

Wallet of Satoshi ist ein Custodial Wallet. Daher ist zu erwarten, dass mit einer API kommuniziert werden muss. Google Analytics ist ein Minuspunkt aber nur unwesentlich schlechter als die in native Apps integrierte Überwachung. Seltsame Links zu australischen Hafen und Bootsteilen stammen aus einer Händlerliste die Bitcoin annehmen. 
Galoy Mobile API-Endpunkte 
Entwickler-Dokumentation 
In Ordnung (o)

Ein Custodial Wallet mit wenigen Überraschungen. 
Breeze Mobile Blockstream-API-Endpunkt
API-Endpunkte
Moonpay-API
Entwickler-Dokumentation
Affiliate-Link zu lightnite
Link zu ln.pizza
Link zu Escher-App (tot)
Fixedfloat-Tool 
In Ordnung (o)

Über die externen APIs werden die Daten auf mehrere Plattformen aufgeteilt.  Allerdings heißt es hier Pest oder Cholera: Irgendwo müssen die Daten für den Kurs herkommen, dementsprechend landen die Daten so oder so bei jemanden. 
Eclair Mobile Eclair-API-Endpunkte 
Blockchain.info Ticker 
blockcyper API Endpunkte
Gitter.im Links
Dokumentationslinks
Entwickler-Dokumentation 
In Ordnung (o)

Ähnlich wie bei Breeze werden einige externe Endpunkte aufgerufen. 
Chivo Entwickler-Dokumentation
Stripe API
Chivo-Endpunkte 
Links zu Chivo-Dokumentation
Expo-API
Google-Verbindungscheck (-/ )
Sentry.io Analytics (-/ )
Google-API für Account (-/ )
App-measurement.com
(-)
Google Firebase Analytics (-/ )
Google-Syndication-Link
(-)
Google-Analytics (-)
Google-Assets (gstatic) (-)
Amplitude Diagnostics
(-)
Segment.com Analytics (-)
Cloudfront-Assets (inkl. Ausführbarem Code) (-/-) 
Voller Tracker (-/-)

Neben den zu erwartenden Abhängigkeiten einer Custodial Wallet App, finden sich gleich mehrere Tracking-Anbindungen.

Doch am schlimmsten sind die Cloudfront-Assets. Diese enthalten neben Bildern auch ausführbaren Javascript-Code. Dieser aus dem Internet nachgeladene Code kann sich jederzeit ändern und in Verbindung mit den umfangreichen Berechtigungen der App ergibt das eine grauenhafte Mischung. 

Keine der genannten Apps genügt sich selbst und unterhält sich mit Endpunkten verschiedenster Dienstleister. Zu meiner großen Überraschung ist das Feld hier dichter gedrängt als bei den Permissions. Die einzige App die sich hier negativ absetzen konnte, war Chivo die mit Trackern vollgestopft ist und auch noch ausführbaren Code aus dem Internet nachlädt. Zu was das führen kann, hat die IOTA Wallet-App Trinity gezeigt, als nach einem Hack viele Wallets leergeräumt wurden.

Conclusio 

Umso näher man hinsieht, umso mehr beweist sich der Spruch: “Vertrauen ist gut, Kontrolle ist besser”. Wer in die eigene Geldbörse schauen darf muss immer noch die eigene Entscheidung bleiben. Umso erschreckender ist es, wie wenig das bei Apps wie “Chivo” zutrifft. 

Umso wichtiger ist es daher, dass sich jeder bei der Installation einer App überlegt: 

  • Brauche ich diese App? Für welchen Zweck?
  • Wie sensibel sind die Daten? 
  • Welche Permissions möchte die App haben und braucht sie diese für ihren Zweck? 

Wen man sich an diese Grundregeln hält ist bereits viel gewonnen. In diesem Sinne: Keep winnig.

Spende uns:

Wenn dir dieser oder einer unserer anderen Beiträge gefallen hat, würden wir uns über eine kleine Spende freuen:

Martin Keiblinger

Martin Keiblinger

Seit 2017 dabei immer wieder was Neues über Bitcoin zu lernen.

Schreibe einen Kommentar