1 ポイント 投稿者 GN⁺ 2023-06-27 | 2件のコメント | WhatsAppで共有
  • AndroidのManage my accountポップアップで通常のWebサイトへ移動できる画面が開き、SettingsやGoogleアプリ群の中からもアクセスできる
  • 進入経路はGoogleアカウント管理のSecurityタブ、Password Manager、オンデバイス暗号化のヘルプ、プライバシーポリシー、Searchメニューの順にたどる
  • この画面ではYouTubeの再生まで可能だが、閲覧履歴とアドレスバーがなく、戻る操作ではWeb履歴ではなく設定画面へ戻る
  • JavaScriptコンソールではmmオブジェクトと、closeView(), requestSecurityKeyHandshake(), updateSecurityKey()関数が見え、一部の関数の実際の用途は確認されていない
  • Googleは当初、これはセキュリティ脆弱性ではなく、保護者による利用制限の回避も意図された動作だと回答したが、公開と報道の3日後に報告を再検討すると知らせた

Android設定内で開く隠しブラウザ

  • Androidの複数のアプリにはManage my accountポップアップがあり、SettingsやGoogleアプリ群のような主要アプリからもアクセスできる
  • いくつかの手順を踏むと、ポップアップ内部が通常のWebサイトへ移動できるブラウザのように動作する
    • Settings → Google、またはアカウント選択が可能なアプリで「Manage my account」を選択
    • 「Security」タブで「Password Manager」を選択
    • 右上のSettingsアイコンを選択
    • 「Set up on-device encryption」→「Learn more about on-device encryption」を選択
    • ハンバーガーメニューから「Privacy Policy」へ移動
    • 上部の9点メニューを押して約5秒待ってから「Search」を選ぶ、またはGoogle項目へ移動
    • Googleアカウントからログアウトすると、任意の場所へ移動できるブラウザのように使える
  • この状態ではYouTube動画の再生も可能で、画面はSettingsアプリ、または最初に入ったアプリの内部で開く
  • 通常のブラウザとの違い

    • 閲覧履歴が残らない
    • セッション終了時にログイン中のGoogleアカウントから自動的にログアウトされる
    • アドレスバーがない
    • 戻るキーを押すと前のWebページではなくPassword Manager設定側へ戻る

mm JavaScriptオブジェクトとGoogleの対応

  • erudaのようなモバイルJavaScriptコンソールでmmというJavaScriptオブジェクトを確認できる
  • mmオブジェクトには3つの関数がある
    • closeView(): ブラウザを閉じ、戻るキーを押したときと似たように動作する
    • requestSecurityKeyHandshake(): 機能は確認されていないが、名前からするとセンシティブに見える関数
    • updateSecurityKey(): 機能は確認されていないが、名前からするとセンシティブに見える関数
  • このブラウザはon-device encryption機能の経路で開くため、未確認の2つの関数がローカル暗号化キーの設定に関連していた可能性は推測の域を出ない
  • Googleは最初の報告に対し、これはセキュリティ脆弱性ではなく、保護者による利用制限の回避は「Intended Behavior」だと回答した
  • 記事公開後、英語圏やロシア語圏など複数のメディアが取り上げ、公開から3日後にGoogleはこの報告を再検討すると通知した
  • 関連する議論としてHacker News discussionがある

2件のコメント

 
wedding 2023-06-28

パスワード管理に入ると、なんだかワンテンポ遅い感じがしていたけど……気のせいじゃなかったのかもしれませんね

 
GN⁺ 2023-06-27
Hacker Newsの意見
  • 少し調べてみたところ、"Manage my account" を押すと設定アプリ内にとどまるのではなく、Google Play Services 内に埋め込まれた Activity に移動する
    最終的にブラウザは com.google.android.gms/.auth.folsom.ui.GenericActivity で、私のスマホのデフォルトのシステム WebView 実装である Chrome を使っているようには見えなかった
    Android では addJavascriptInterface によって Android コードと JavaScript コードの間のインターフェースを作れるが、GMS 内ではこれをかなり多用しているようで、後で見る価値のある攻撃面に思える
    怪しい mm インターフェースは MagicArchChallengeView 内にあり、難読化された bwuz クラスにつながっている。bwuz 自体はほぼ空だが、さらにいくつかの難読化クラスへ接続されている
    文字列検索をすると "qvc""pdn" の 2 つのクラスが関連関数を公開しており、pdn が中核のように見え、qvc には各パラメータが何かを示す有用なエラーログがある
    setVaultSharedKeysgaiaIdepochkey の 2 つの値を持つ JSON オブジェクト配列を期待し、これをリスト化してアカウントのセキュリティと深く関係していそうな抽象クラスに渡す
    addEncryptionRecoveryMethodgaiaId、セキュリティドメインの一覧、メンバー公開鍵を期待し、これも同じ抽象クラスに渡す
    ここで出勤しないといけないので止めたが、このインターフェースだけでなく、GMS が WebView に公開しているほかのインターフェースもさらに掘る価値がありそうだ
    https://developer.android.com/reference/android/webkit/WebVi...

    • なぜ システム既定の WebView を使わないのか気になる。だとすると Blink ではなく WebKit ということか?
      Blink だとしても、Chrome が提供するものほど最新ではない可能性が高そうだ。ドキュメントのリンクを見る限り WebKit っぽい
    • Alex Russell が 2021 年の State of the Browser で、Android の WebView は Chrome ではない と話していた
      https://2021.stateofthebrowser.com/speakers/alex-russell/
    • gaiaId が Google Accounts and ID Administration ID の略だなんて、事実上 Google 全体の一意 ID にこの名前を付けた人はかなり誇らしかっただろうし、それももっともだ
  • これが他の埋め込み WebView と何が違うのかわからない。ほとんどすべてのアプリが「プライバシーポリシーを見る」みたいなところに 埋め込み WebView を入れていないか?
    プライバシーポリシー全文をアプリ開発者に渡すより、HTML を表示するほうがずっと簡単なことが多い

    • まさにそれ。アプリ自体がブラウザではないときに使う埋め込みブラウザ、Android System WebView
    • そういう WebView で任意のウェブサイトにアクセスできるのか? 一度も成功したことがない
      記憶では、複数ドメインや URL を許可する WebView を設定するのもかなり大変だった。Android 開発者ではないし、最後に触ったのも数年前だが
    • この WebView には、パスワードマネージャーの 鍵管理と復旧 のための権限付き JavaScript 関数があるように見える
    • 埋め込み WebView があるどのアプリからでもペアレンタルコントロールを回避できるなら、これは Android のもっと大きなバグだ
      鍵管理の話はまだ推測に近く、投稿者は実際に何をするのかテストしたわけではないので、「何なのかはわからないが怖そうなメソッドが 2 つある」程度だ
    • 昔は iTunes でも冗談半分で同じことができた。これがそこまで大きな問題なのかはよくわからない
  • ブラウザが塞がれているときに CHM ヘルプファイル からインターネットに接続していたのと少し似ている
    くそ、年がばれるな

    • これからはエクスプロイトで年齢を公開するのか? 「大学図書館の端末で gopher からサイトにアクセスし、telnet セッションを開いて、夏休みの間ほかの州の大学のメールを確認していた」くらいはどうだ?
    • 管理者が消したゲームを再インストールするのにも使っていた
    • うちの高校では、メモ帳のファイルを開くダイアログから Windows Explorer を開いて、変な bookshelf シェルを抜け出していた。IBM 製品だった気がする
  • 子どものころに Windows の ペアレンタルコントロールアプリ を回避していた方法とまったく同じだ
    コンピュータの使用時間は 1 時間しかなく、時間が来ると生産性用途という理由で Microsoft Office アプリ以外は全部閉じられた
    あれこれクリックしていたら、どうにかして Outlook 内でブラウザを開き、Miniclip で Flash ゲームを遊べた

    • 高校時代にロックされた Mac を回避していた方法を思い出す。特定のアプリしか実行できず、System Preferences も開けなかったが、Safari ではデフォルトのウェブブラウザを変更できた
      デフォルトのウェブブラウザを Terminal に変えてから Word を開き、リンクを作ってクリックした。通常起動した Terminal はほかのアプリの実行が失敗するなどの制限があったが、この方法で開いた Terminal インスタンスは権限が強く、open /path/to/your/app で挿入したディスク内のゲームなどを実行できた
      自習監督の先生が来て、Starcraft をやっていいのかと聞いたとき、「先生もご存じのとおり、このコンピュータはかなりロックされています。だから私たちがこのゲームをできるなら、学校が許可したということでしょう」と答えたが、今でもそれが通ったのが信じられない
  • 子どもがこのハックを見つけてブロックされたサイトにアクセスできるなら、それくらいは享受する資格があると思う

    • 自分で見つけたのではなく、インターネットや他の子どもから読んだり聞いたりしたのかもしれない
  • 似たような回避策が aboutライセンスページ にもあった
    ライセンスへ行くリンクをたどるとブラウザが現れる。車載ヘッドユニットや Peloton バイクのような環境でブラウザを起動するときに便利だ

    • たった今 Pixel 6 で "Third-party licenses" ページを開いてみたら、延々と続くリンク一覧が表示された
      ファイルシステム内の全ファイル一覧のように見える
  • Google にバグを報告したこの人の経験が、自分の経験を思い出させる
    私: Google Sheets に削除済みコンテンツが第三者に露出するバグがあります
    Google: バグではありません。意図した動作です。Issue をクローズします
    私: 本当ですか? このアプリケーションを使っていて、私は実際に被害を受けたのですが
    Google: 実はバグではありますが、かなり前から知られている問題なのでバグバウンティの対象ではありません。Issue をクローズします

    • 私も Google に脆弱性を報告したとき、ほぼまったく同じでした
      私: Gmail で偽装メールが DKIM 失敗を消して正常に見えるようにできるバグがあります
      Google: "Won't fix (Intended Behavior)"
      私: 本当に Google は、インターフェース上で偽装メールが正常に見えることを意図しているのですか?
      Google: 実は既知の問題です
    • 私にも同じ経験があります。Google からは要領を得ない返答しか来ず、数か月後に TAO の責任者が、私がもともと指摘していた脆弱性の修正を発表しました
      しかも最初に出た記事では、その脆弱性を中国/ロシアのハッキングと結び付けようとしていました。そういうプロパガンダは Google 自身に返すべきです。Google は米国企業であり、外国でも国内でも誰でも悪用できるようにバックドアを大きく開け放っていました。実際、両方に悪用されていました
      Google には本当に問題があります。2019 年以降に何があったのかは分かりませんが、良くありません
    • この話にも付け加えたいことがあります
      私: Google Play Services にバグがあります
      Google: バグではありません。意図した動作です。Issue をクローズします
      私: ブログにそのバグを載せたところ、メディアで大きく報じられました
      Google: どうやら私たちが間違っていたようです! 本当にバグでした。数週間後にまた連絡します
  • モバイルJavaScript コンソールなんてものがあるのを今日知った
    https://eruda.liriliri.io/

    • 同じ人が作ったリモート版もある: https://github.com/liriliri/chii
      別のコンピューターで開発者ツールを開けて、すべての情報が WebSocket で同期される。顧客の機器の問題をデバッグするときに一度使ったことがある
    • ブックマークレットがあるといいのに。今のブラウザ開発者ツールも、もともとはこういう方式、つまりFirebugから始まった
    • すごく良い。iOS の Brave では動かないけれど Safari では動くので、それで十分だ
    • 自分だけなのか分からないけど、完全に動かない。JavaScript スニペットをアドレスバーに貼り付けても何も起きず、Nightly ではその文字列で Google 検索してしまう
    • たまに data:text/html, まで使う手間をかけることがあるけれど、これは驚くほど高機能だ
  • 両親が銀行の用事をしている間、ロビーで同じようなことをしていた
    当時は best viewed in Netscape Navigator タグが宝の山だった。流れもほとんど同じで、そういうタグが出るまで押して、そこから検索エンジンに移っていた

    • 借りた Tesla で、YouTube アプリ経由でほぼフルスクリーン動画になるブラウザにたどり着くのにこれを使ったことがある
      その後、怪しいアドウェアだらけのストリーミングサイトに移動したら、別の動画に切り替えた瞬間に Tesla のコンピューター全体がフリーズして、車をハードリブートしなければならなかった
  • 昔の Windows バージョンを思い出す。F1 を押すと Windows Help 経由でいろいろな実行コマンドをトリガーできた

    • 私も最初に思い出したのはそれだった。Windows 95/98 頃にログイン画面を回避していた「F1 → ヘルプファイルを開く → Other... → explorer.exe を右クリックして Run を選ぶ」みたいな感じだ