1 Punkte von GN⁺ 2023-06-27 | 2 Kommentare | Auf WhatsApp teilen
  • Über das Manage my account-Popup auf Android lässt sich ein Bildschirm öffnen, von dem aus man zu normalen Websites wechseln kann; er ist auch innerhalb der Einstellungen und der Google-App-Familie zugänglich
  • Der Pfad dorthin führt nacheinander über den Tab „Security“ der Google-Kontoverwaltung, den Password Manager, die Hilfe zur geräteinternen Verschlüsselung, die Datenschutzrichtlinie und das Suchmenü
  • Auf diesem Bildschirm ist sogar die Wiedergabe von YouTube möglich, aber es gibt weder Browserverlauf noch Adressleiste, und beim Zurückgehen landet man statt in der Web-Historie wieder im Einstellungsbildschirm
  • In der JavaScript-Konsole sind das mm-Objekt sowie die Funktionen closeView(), requestSecurityKeyHandshake() und updateSecurityKey() sichtbar; der tatsächliche Zweck einiger Funktionen ist jedoch unklar
  • Google antwortete zunächst, es handele sich nicht um eine Sicherheitslücke und auch die Umgehung der Kindersicherung sei beabsichtigtes Verhalten, kündigte aber drei Tage nach Veröffentlichung und Medienberichten an, die Meldung erneut zu prüfen

Ein versteckter Browser, der innerhalb der Android-Einstellungen geöffnet wird

  • Viele Apps auf Android haben ein Manage my account-Popup, das auch in zentralen Apps wie den Einstellungen und der Google-App-Familie erreichbar ist
  • Durch einige Schritte verhält sich der Inhalt des Popups wie ein Browser, der zu gewöhnlichen Websites navigieren kann
    • Einstellungen → Google oder in einer App mit Kontoauswahl „Manage my account“ wählen
    • Im Tab „Security“ den „Password Manager“ wählen
    • Oben rechts das Symbol Settings wählen
    • „Set up on-device encryption“ → „Learn more about on-device encryption“ wählen
    • Im Hamburger-Menü zu „Privacy Policy“ wechseln
    • Oben das Menü mit den neun Punkten antippen, etwa 5 Sekunden warten und dann „Search“ wählen, oder zum Eintrag Google wechseln
    • Wenn man sich vom Google-Konto abmeldet, lässt es sich wie ein Browser verwenden, der zu beliebigen Zielen navigieren kann
  • In diesem Zustand ist auch die Wiedergabe von YouTube-Videos möglich, und der Bildschirm wird innerhalb der Einstellungen-App oder der App geöffnet, über die man ursprünglich eingestiegen ist
  • Unterschiede zu einem normalen Browser

    • Es wird kein Browserverlauf gespeichert
    • Beim Beenden der Sitzung wird man automatisch vom angemeldeten Google-Konto abgemeldet
    • Es gibt keine Adressleiste
    • Beim Drücken der Zurück-Taste kehrt man nicht zur vorherigen Webseite zurück, sondern in die Einstellungen des Password Managers

Das JavaScript-Objekt mm und Googles Reaktion

  • In mobilen JavaScript-Konsolen wie eruda lässt sich ein JavaScript-Objekt namens mm sehen
  • Das mm-Objekt hat drei Funktionen
    • closeView(): Schließt den Browser und verhält sich ähnlich wie beim Drücken der Zurück-Taste
    • requestSecurityKeyHandshake(): Die Funktion konnte nicht verifiziert werden, wirkt dem Namen nach aber sensibel
    • updateSecurityKey(): Die Funktion konnte nicht verifiziert werden, wirkt dem Namen nach aber sensibel
  • Da dieser Browser über den Pfad der Funktion on-device encryption geöffnet wird, bleibt es Spekulation, ob die beiden nicht verifizierten Funktionen mit der Einrichtung lokaler Verschlüsselungsschlüssel zusammenhängen
  • Google antwortete auf die erste Meldung, dies sei keine Sicherheitslücke, und die Umgehung der Kindersicherung sei „Intended Behavior“
  • Nach der Veröffentlichung des Beitrags berichteten mehrere Medien im englisch- und russischsprachigen Raum darüber; drei Tage nach der Veröffentlichung teilte Google mit, die Meldung erneut zu prüfen
  • Als verwandte Diskussion gibt es Hacker News discussion

2 Kommentare

 
wedding 2023-06-28

Als ich in die Passwortverwaltung gegangen bin, hatte ich immer das Gefühl, dass alles irgendwie einen Takt langsamer ist … dann war das wohl doch nicht nur Einbildung.

 
GN⁺ 2023-06-27
Hacker-News-Kommentare
  • Ich habe ein wenig nachgeforscht, und wenn man auf „Manage my account“ klickt, bleibt man nicht in der Einstellungen-App, sondern wechselt zu einer in Google Play Services eingebetteten Activity
    Letztlich war der Browser com.google.android.gms/.auth.folsom.ui.GenericActivity, und es sah nicht so aus, als würde er Chrome verwenden, also die standardmäßige System-WebView-Implementierung auf meinem Handy
    Android kann mit addJavascriptInterface eine Schnittstelle zwischen Android-Code und JavaScript-Code erstellen, und GMS scheint das ziemlich intensiv zu nutzen, daher wirkt es wie eine später untersuchenswerte Angriffsfläche
    Die verdächtige mm-Schnittstelle befindet sich in MagicArchChallengeView und ist mit der obfuskierten Klasse bwuz verbunden. bwuz selbst ist fast leer, verweist aber wiederum auf einige weitere obfuskierte Klassen
    Eine String-Suche zeigt, dass die beiden Klassen "qvc" und "pdn" zugehörige Funktionen exponieren; pdn scheint der Kern zu sein, und in qvc gibt es nützliche Fehler-Logs, die verraten, wofür die einzelnen Parameter stehen
    setVaultSharedKeys erwartet ein Array von JSON-Objekten mit den Werten gaiaId, epoch und key, macht daraus eine Liste und übergibt sie an eine abstrakte Klasse, die tief mit der Kontosicherheit zusammenzuhängen scheint
    addEncryptionRecoveryMethod erwartet gaiaId, eine Liste von Security-Domains und einen öffentlichen Mitgliedsschlüssel und übergibt auch das an dieselbe abstrakte Klasse
    Ich musste hier aufhören, weil ich zur Arbeit musste, aber es scheint sich zu lohnen, nicht nur diese Schnittstelle, sondern auch andere Schnittstellen weiter zu untersuchen, die GMS gegenüber WebView exponiert
    https://developer.android.com/reference/android/webkit/WebVi...

    • Ich frage mich, warum nicht die standardmäßige System-WebView verwendet wird. Würde das bedeuten, dass es WebKit statt Blink ist?
      Selbst wenn es Blink ist, ist es vermutlich längst nicht so aktuell wie das, was Chrome bereitstellt. Der Link zur Dokumentation lässt darauf schließen, dass es tatsächlich WebKit ist
    • Alex Russell sagte 2021 bei State of the Browser, dass die Android-WebView nicht Chrome ist
      https://2021.stateofthebrowser.com/speakers/alex-russell/
    • Dass gaiaId für Google Accounts and ID Administration ID steht: Wer diesem praktisch global eindeutigen Google-Identifier diesen Namen gegeben hat, war vermutlich ziemlich stolz darauf — und das zu Recht
  • Ich verstehe nicht, was daran anders sein soll als an anderen eingebetteten WebViews. Fast jede App hat doch irgendwo eine eingebettete WebView für Dinge wie „Datenschutzerklärung anzeigen“, oder?
    Es ist oft sehr viel einfacher, HTML anzuzeigen, als die gesamte Datenschutzerklärung an den App-Entwickler zu übergeben

    • Genau das ist es. Es ist Android System WebView, also der eingebettete Browser, der verwendet wird, wenn die App selbst kein Browser ist
    • Kann man mit so einer WebView beliebige Websites besuchen? Mir ist das noch nie gelungen
      Soweit ich mich erinnere, war es auch ziemlich schwierig, eine WebView so zu konfigurieren, dass mehrere Domains oder URLs erlaubt sind. Ich bin allerdings kein Android-Entwickler, und das letzte Mal ist auch schon ein paar Jahre her
    • Diese WebView scheint privilegierte JavaScript-Funktionen für Schlüsselverwaltung und Wiederherstellung des Passwortmanagers zu haben
    • Wenn man mit irgendeiner App, die eine eingebettete WebView hat, die Jugendschutzsperre umgehen könnte, wäre das eher ein größerer Android-Bug
      Die Sache mit der Schlüsselverwaltung ist bisher noch ziemlich spekulativ, und der Autor hat auch nicht getestet, was das tatsächlich macht, daher ist der Stand eher: „Da sind zwei Methoden, von denen ich nicht weiß, was sie tun, die aber beängstigend aussehen“
    • Früher konnte man in iTunes aus Spaß etwas Ähnliches machen. Ich bin mir nicht sicher, ob das wirklich so ein großes Problem ist
  • Das erinnert ein wenig daran, wie man bei gesperrtem Browser über CHM-Hilfedateien ins Internet ging
    Verdammt, jetzt sieht man mein Alter

    • Werden Exploits jetzt benutzt, um das Alter offenzulegen? Wie wäre es mit: „Ich habe an einem Uni-Bibliotheksterminal per gopher Websites besucht und eine telnet-Sitzung gestartet, um während der Sommerferien die E-Mails einer Hochschule in einem anderen Bundesstaat zu prüfen“?
    • Ich habe das auch benutzt, um Spiele wieder zu installieren, die die Admins gelöscht hatten
    • An unserer Highschool sind wir über den Datei-öffnen-Dialog von Notepad in den Windows Explorer gekommen und so aus irgendeiner seltsamen Bookshelf-Shell ausgebrochen. Ich glaube, das war ein IBM-Produkt
  • Das ist genau dieselbe Methode, mit der ich als Kind die Jugendschutz-App unter Windows umgangen habe
    Ich durfte den Computer nur eine Stunde benutzen, und wenn die Zeit um war, wurden alle Apps außer Microsoft Office geschlossen, weil die als produktiv galten
    Durch Herumklicken habe ich es irgendwie geschafft, in Outlook einen Browser zu öffnen und auf Miniclip Flash-Spiele zu spielen

    • Das erinnert mich daran, wie wir in der Oberstufe gesperrte Macs umgangen haben. Es durften nur bestimmte Apps laufen, und System Preferences ließ sich auch nicht öffnen, aber in Safari konnte man den Standard-Webbrowser ändern
      Wir haben den Standard-Webbrowser auf Terminal geändert, dann Word geöffnet, einen Link erstellt und darauf geklickt. Ein normal gestartetes Terminal war üblicherweise eingeschränkt, sodass das Starten anderer Apps fehlschlug, aber die auf diese Weise geöffnete Terminal-Instanz hatte mehr Rechte, sodass man mit open /path/to/your/app Dinge wie Spiele von eingelegten Datenträgern starten konnte
      Als die Aufsicht im Selbstlernraum kam und fragte, ob wir Starcraft spielen dürften, antwortete ich: „Wie Sie wissen, sind diese Computer ziemlich stark gesperrt, also wenn wir dieses Spiel starten können, dann hat die Schule das wohl erlaubt.“ Ich kann immer noch nicht glauben, dass das funktioniert hat
  • Wenn ein Kind diesen Hack findet und damit gesperrte Websites aufrufen kann, finde ich, hat es sich das verdient

    • Vielleicht hat es das nicht selbst entdeckt, sondern im Internet oder von anderen Kindern aufgeschnappt
  • Einen ähnlichen Bypass gab es auch auf der Lizenzseite von about
    Folgt man den Links zu den Lizenzen, bekommt man einen Browser. Das ist praktisch, wenn man auf Dingen wie In-Car-Headunits oder Peloton-Bikes einen Browser öffnen will

    • Ich habe gerade auf meinem Pixel 6 die Seite „Third-party licenses“ geöffnet, und dort erscheint eine endlos wirkende Liste von Links
      Das sieht aus wie eine Auflistung aller Dateien im Dateisystem
  • Die Erfahrung dieser Person, die Google einen Bug gemeldet hat, erinnert mich an meine eigene Erfahrung
    Ich: In Google Sheets gibt es einen Bug, durch den gelöschte Inhalte gegenüber Dritten offengelegt werden
    Google: Kein Bug. Funktioniert wie beabsichtigt. Ticket geschlossen
    Ich: Wirklich? Ich habe durch die Nutzung dieser Anwendung tatsächlich Schaden erlitten
    Google: Eigentlich ist es schon ein Bug, aber es ist seit Langem ein bekanntes Problem und daher nicht für Bug Bounties qualifiziert. Ticket geschlossen

    • Bei meiner Meldung einer Schwachstelle an Google war es fast genau gleich
      Ich: In Gmail gibt es einen Bug, durch den gefälschte E-Mails einen DKIM-Fehlschlag verbergen und wie legitim erscheinen können
      Google: "Won't fix (Intended Behavior)"
      Ich: Will Google also wirklich, dass gefälschte E-Mails in der Oberfläche wie legitim aussehen?
      Google: Tatsächlich ist das ein bekanntes Problem
    • Ich hatte dieselbe Erfahrung. Von Google kamen nur ausweichende Antworten, und ein paar Monate später kündigte der Verantwortliche für TAO einen Fix für genau die Schwachstelle an, die ich ursprünglich gemeldet hatte
      Außerdem versuchten die ersten Artikel dazu, die Schwachstelle mit chinesischem/russischem Hacking in Verbindung zu bringen. Solche Propaganda sollte man Google selbst zurückspiegeln. Google ist ein US-Unternehmen und hat die Hintertür weit offen gelassen, sodass sie von jedem ausgenutzt werden konnte, ob aus dem Ausland oder im Inland. Tatsächlich wurde sie von beiden Seiten ausgenutzt
      Google hat ein echtes Problem. Ich weiß nicht, was dort seit 2019 passiert ist, aber es ist nichts Gutes
    • Dazu habe ich auch noch etwas beizutragen
      Ich: Es gibt einen Bug in Google Play Services
      Google: Kein Bug. Funktioniert wie beabsichtigt. Ticket geschlossen
      Ich: Ich habe den Bug in meinem Blog veröffentlicht, und es gab breite Medienberichterstattung
      Google: Offenbar lagen wir falsch! Es ist tatsächlich ein Bug. Wir melden uns in ein paar Wochen wieder
  • Heute habe ich erfahren, dass es eine mobile JavaScript-Konsole gibt
    https://eruda.liriliri.io/

    • Es gibt auch eine Remote-Version vom selben Autor: https://github.com/liriliri/chii
      Man kann die Entwicklertools auf einem anderen Computer öffnen, und alle Informationen werden per WebSocket synchronisiert. Ich habe das einmal verwendet, um ein Problem auf dem Gerät eines Kunden zu debuggen
    • Ein Bookmarklet wäre nett. Die heutigen Browser-Entwicklertools haben ursprünglich auch auf diese Weise angefangen, nämlich mit Firebug
    • Ziemlich gut. In Brave auf iOS funktioniert es nicht, aber in Safari schon, und das reicht mir
    • Vielleicht liegt es nur an mir, aber bei mir funktioniert es überhaupt nicht. Selbst wenn ich ein JavaScript-Snippet in die Adressleiste einfüge, passiert nichts, und in Nightly wird stattdessen einfach eine Google-Suche nach dieser Zeichenkette gestartet
    • Manchmal mache ich mir die Mühe und verwende sogar data:text/html,, aber das hier ist überraschend funktionsreich
  • So etwas habe ich früher auch in der Lobby gemacht, während meine Eltern Bankgeschäfte erledigten
    Damals waren best viewed in Netscape Navigator-Tags eine Goldgrube. Der Ablauf war fast derselbe: Man hat sich durchgeklickt, bis so ein Tag auftauchte, und ist von dort zu einer Suchmaschine weitergegangen

    • Ich habe das einmal in einem geliehenen Tesla benutzt, um über die YouTube-App zu einem Browser zu gelangen, der fast Vollbild-Video konnte
      Danach bin ich auf eine dubiose, mit Adware vollgestopfte Streaming-Seite gegangen, und in dem Moment, als ich zu einem anderen Video wechselte, fror der gesamte Tesla-Computer ein und ich musste das Auto hart neu starten
  • Das erinnert mich an ältere Windows-Versionen. Durch Drücken von F1 konnte man über die Windows-Hilfe verschiedene Ausführungsbefehle auslösen

    • Daran musste ich auch als Erstes denken. Das fühlt sich an wie die Methode, mit der man etwa bei Windows 95/98 den Login-Bildschirm umging: „F1 → Hilfedatei öffnen → Other... → Rechtsklick auf explorer.exe und Run wählen"