Archiv

Archive for März 2012

Android: Löschfunktion löscht nicht richtig

2012-03-19 6 Kommentare

(For english version, see the post on the Hatforce site)

Für einen Hatforce-Test musste ich ein gebrauchtes Android-Handy zurücksetzen, um die privaten Daten zu löschen, bevor ich mit dem Test loslege. Dafür hat Android eine eingebaute Löschfunktion: „Factory Data Reset“ oder auf deutsch „Auf Werkszustand zurücksetzen“. Zahlreiche Webseiten empfehlen, diese zu nutzen, bevor man das Gerät verkauft – wie ich feststellen musste, löscht diese aber nicht immer zuverlässig.

Vorher dem Löschen wollte ich natürlich meine Daten sichern, und zwar auf meinem PC und nicht bei Google. Das geht mit Titanium Backup relativ einfach (führt aber zu Gefahren!), dafür braucht man allerdings root-Rechte auf dem Gerät. Um die auf dem offiziellen Weg zu bekommen, muss man den Bootloader entsperren – und dabei werden die Daten gelöscht. Mittels des zergRush-Exploits geht das aber auch ohne Datenverlust. Im Anschluss hat man vollen Zugriff auf das Gerät.

Nachdem ich meine Daten gesichert und das Gerät mit der oben genannten Funktion gelöscht hatte, habe ich die Gelegenheit genutzt und getestet, ob die Löschfunktion sauber funktioniert. Mit

cat /dev/block/platform/s3c-sdhci.0/by-name/userdata | strings

habe ich die Rohdaten des Speichers ausgelesen und mir lesbare Zeichenketten anzeigen lassen – und siehe da, jede Menge persönlicher Daten! Mittels netcat lässt sich die Rohversion des Speichers auf den PC übertragen und dort in Ruhe mit photorec und ähnlichen Tools bearbeiten, um noch mehr (wie z. B. Fotos) zu Tage zu fördern.

Zumindest auf dem Samsung/Google Nexus S mit Android 2.3.6 taugt die eingebaute Löschfunktion also nichts. Mit geringem Aufwand und öffentlich verfügbaren Tools können große Teil der Daten, wie Fotos und evtl. auch Passwörter, wiederhergestellt werden. Auch das Löschen über das versteckte Recovery-Menü hat nichts gebracht. Beim Unlocken des Bootloaders hingegen wurde der Speicher genullt, sodass nichts mehr wiederherstellbar war. Ab Android 3.0 scheint das Problem laut Sourcecode behoben zu sein, getestet habe ich es aber mangels Testgerät nicht. (95% der Geräte laufen aber derzeit auf älteren Versionen.) Ob/welche anderen Geräte betroffen sind oder ob die Hersteller Anpassungen gemacht haben, um das Problem zu beheben, weiß ich natürlich nicht.

Da man das Gerät auch nach einem Wipe rooten und die Daten wiederherstellen kann, betrifft das auch Geräte, die in gesperrtem Zustand verloren werden. Zunächst kommt der Finder/Dieb nicht an die Daten heran (weil er das Gerät nicht entsperren kann, und damit weder den USB-Speicher noch das für das Rooten nötige USB-Debugging einschalten kann). Wenn er es aber über den Recovery-Modus löscht, wird die Sperre ebenfalls entfernt, und er kann die Daten wiederherstellen. Ob das Gerät vorher gerootet war, spielt dementsprechend keine Rolle.

Wenn ich ein Android-Gerät verkaufen müsste, würde ich es vermutlich wipen, die Partitionen (inkl. Datenpartition) über eine Rootshell mit Datenmüll vollschreiben, und es wieder wipen. Wie das System darauf reagiert, wenn man die Blockdevices direkt überschriebt (was eigentlich besser wäre), habe ich lieber nicht ausprobiert.

(Auf Englisch ist es etwas ausführlicher im Hatforce-Blogeintrag erklärt.)

Android: Apps können nicht nur Fotos lesen (TitaniumBackup-User aufgepasst!)

2012-03-13 10 Kommentare

Vor einigen Tagen wurde in der Presse berichtet, dass Android-Apps ohne besondere Berechtigungen auf die Fotos des Nutzers zugreifen können. Da ich mich gewundert habe, warum es nur die Fotos betreffen soll, hab ich mal genauer nachgeschaut. Apps können nicht nur „Fotos“ lesen. Apps können, ohne dafür irgendwelche Berechtigungen anfordern zu müssen, den Inhalt des USB-Speichers (/sdcard/) lesen – nur für das Schreiben wird eine Berechtigung gefordert. Das ist laut Android Security Team übrigens kein Bug, soondern ein gut dokumentiertes Feature. Glücklicherweise ist trotzdem geplant, dafür eine Permission einzuführen.

Das bedeutet übrigens, dass derzeit jedes werbefinanzierte Spiel (welches wegen der Werbung immer Internet-Permissions hat), genug Rechte hat, um den gesamten Inhalt des USB-Speichers über das Internet zu verschicken. Das wird insbesondere dann ein großes Problem, wenn man dort z. B. mittels TitaniumBackup auch Backups der App-Daten (die normalerweise vor Zugriff geschützt sind) ablegt.

Nochmal: Wenn man Titanium Backup nutzt, legt man seine App-Daten in einen Ordner, der von jeder App gelesen werden kann!

Ich hab in meinem Handy keine externe SD-Karte, deswegen kann ich nicht prüfen, ob es schwieriger ist, auf dort (/sdcard/external_sd) gespeicherte Daten zuzugreifen, ich glaube aber, dass es damit genauso aussieht.

Ein „chmod 770 /mnt/sdcard/“ funktioniert auf meinem (gerooteten) Galaxy Nexus übrigens nicht. Vermutlich müsste man den Speicher dafür irgendwie mit rootmode=770 remounten. Wenn das überhaupt klappt, dürfte mit Nebenwirkungen zu rechnen sein – Experimentieren auf eigene Gefahr!

In den nächsten Tagen wird es hier noch 1-2 weitere Postings zur Android-Sicherheit geben – während eines Sicherheitstests für Hatforce sind mir nämlich noch andere Dinge aufgefallen.