2 ポイント 投稿者 GN⁺ 2024-02-03 | 1件のコメント | WhatsAppで共有
  • Google Play Services 内の隠しブラウザは Contacts アプリのウェブサイトリンクから開け、Google の保護者による使用制限の一般的な制限と lock-down mode を回避できる
  • 回避できる理由は、lock-down mode でも Google Play Services と電話用の Contacts アプリが残っており、Contacts が開く deeplink は保護者によるブロックの対象にならない構造になっているため
  • https://gds.google.com/gmsdrops は Android の「what’s new」画面につながり、Google ヘルプや Google ページを経由してブラウザのように使える
  • Android 11+ の screen pinning も、Contacts アプリで https://podcasts.google.com を開いて Google Podcast のポップアップを表示し、その後デフォルトブラウザへ移動する方法で回避できる
  • Google は保護者による使用制限の回避と screen pinning 回避の報告を別件として受けたが、screen pinning 回避については intended behavior だと回答し、重複処理も別の報奨プログラムの問題にした

Contacts のリンクで開く Google Play Services ブラウザ

  • Google Play Services 内にはリンクからアクセスできる秘密のブラウザがあり、Contacts アプリの連絡先ウェブサイト欄から開ける
  • 実行手順は、Contacts アプリで連絡先を編集または新規作成し、「Website」欄に https://gds.google.com/gmsdrops を入力して保存し、その後リンクを開くというもの
  • このリンクは Android の「what’s new」画面につながる deeplink
    • 「Show me」と「Learn more」をたどるとブラウザ画面に入れる
    • その後ハンバーガーメニューで「Google Help」を押し、さらにメニューから「Google」を選ぶと Google ページへ移動できる
  • このブラウザは Google アカウントにログインしている場合としていない場合がある
    • ここで Google からログアウトしても Chrome ブラウザには影響しない
  • lock-down mode では、Google は Android ランチャーやシステムの一部を含むアプリをロックするが、ポップアップ表示や制限適用に使われる Google Play Services と電話用 Contacts アプリ は残す
  • 保護者による使用制限は deeplink のオープンを許可しないが、連絡先のウェブサイト欄をクリックした場合は Contacts アプリがリンクを開くためブロックされない

Android screen pinning の回避と Google の回答

  • Android screen pinning は Android 11+ で特定のアプリに画面を固定し、許可なく他のアプリへ移動できないようにする機能
  • 同じ gmsdrops リンクは、screen pinning 状態では新しいアプリを開く方式のため使えない
  • その代わり Google Podcast の deeplink はアプリ全体ではなくポップアップウィンドウとして開く
    • Contacts アプリのウェブサイト欄に https://podcasts.google.com を入れ、アプリが固定された状態でリンクを開くと Google Podcast のポップアップウィンドウが表示される
    • Google アカウントのアイコンから「Content policies」を押すとデフォルトブラウザへ移動できる
    • その後 Google Help と Google メニューを経由して Google ページへ移動できる
  • Google には2件が別々に報告された
    • 保護者による使用制限の回避事例
    • Android screen pinning 回避事例
  • Google は保護者による使用制限の回避案件を screen pinning 回避案件に統合し、その後は重複事例の処理が混乱した状態になった
  • screen pinning 回避に対する Google の回答は「Android screen pinning bypassing is the intended behavior」だった
  • 重複処理については「potentially another issue」の重複としてクローズされ、別の報奨プログラムの話なので自分たちの問題ではないという趣旨の回答があった

1件のコメント

 
GN⁺ 2024-02-03
Hacker News のコメント
  • セキュリティ脆弱性の報告を受け付けるチームなら、「それは別の社内チームの担当なのでそちらに聞いてください」と言うべきではない。
    実際、組織内のほぼ誰であっても、それらしい脆弱性報告を受け取ったなら、適切な担当者に届くようにすべきで、ただ受け流してよいものではない。

    • 「別の社内チーム」という答えは、脆弱性そのものよりも バグバウンティ 側についての話だった可能性が高そうだ。
      それでも逆に見ると、外部顧客であれ社内のステークホルダーであれ、サポート業務は爆弾回しのようなもので、他の人に回せなかった最初の人が火傷を負う。
      実際の権限や責任が誰にあるかにかかわらず、みんなが顧客の不満解決を引き受けてくれればよいのだが、現実には多くの人が コペンハーゲン解釈的な倫理 のように振る舞う。
      責任者に伝えることすら危険で、それ以上関わると、実際の関連性とは無関係に問題に巻き込まれて責任を負わされる。
      これはプリンシパル=エージェント問題と呼んでもいいし、「依頼者が自分の依頼に応じてくれる相手を狩る世界で生き残ること」と呼んでもいい。
      以前は業務に少しでも関係する社内依頼はすべて処理しようとしていたが、直属のマネージャーから、1分を超える手助けにはプロジェクト ID や課金コードを求めるように言われた。そうしないと、本来お金をもらってやるべき仕事ができなくなるから、という理由だった。
    • Google は「うちの部署ではありません」の王様だ。
      「Google 内の別部署の連絡先は知らない」「Google の別チームの誰のメールアドレスも知らない」などと言うのだから、一体何をしているのかと思う。
    • これはシステム侵害につながるという意味での脆弱性ではなさそうだ。
      OS に追加した機能の 設計上の欠陥 であるのは確かだが、大規模な調査が必ず必要な案件かどうかは別問題だ。
    • 彼らが言った「そちらに聞いてください」は、なぜその issue を閉じることにしたのかについての話であり、すでに誰かが検討したという意味も含まれている。
      「我々は見る気もない」というように言ったわけではなさそうだ。
    • そもそも 正しい担当者 をどう見つければいいのかも分からない。
      自分の会社でもどうすればよいのか見当がつかない。
  • 子どもの頃、銀行のような機関のロビーには、その会社の Web サイトだけを開ける特殊なブラウザが入ったコンピュータ端末があり、当時は Best Viewed In バッジ もよく見かけた。
    親の用事について行くと、そういうコンピュータを見つけて Help ページのようなところをクリックし、そのバッジを探した。すると単一サイトブラウザの制限を回避して、netscape.com のような場所へ出られた。
    そこで検索エンジンへのリンクを見つけ、好きなところを見て回ることができた。

    • Sears や CompUSA のような店に展示されていた PC が、デモソフトウェアだけを表示していて、実際に PC を買うときにやりたいこと、つまり実際の利用ができないようにしていたのを思い出す。
      そこで CTRL+ALT+DEL でタスクマネージャーを開き、デモソフトウェアを終了させていた。
      もっとしつこいデモはすぐ再起動するので、msconfig を開いてスタートアップから外し、再起動した。
      そばで見ていた人たちは驚いて、自分の PC でも同じようにしてほしいと頼んできた。そうすると彼らもマインスイーパーやピンボールを試せた。
      今では素人っぽく聞こえるが、90年代半ばの CTRL+ALT+DEL は、熟練者だけが知る一種の パワーツール だった。
    • 高校のコンピュータで Web フィルタを回避していた記憶がある。
      MS Word で URL を開く機能を選び、検索エンジンや目的のサイトを入力するとブラウザが開き、Web フィルタ を回避できた。
    • 昔は図書館から、いろいろな edu ホストに telnet で接続していた。
      そのサーバーはたいてい motd を more で表示した後、lynx のようなソフトウェアに渡していたが、restricted mode を使っていなかったので、!sh と入力してシェルを開けた。
      いい時代だった。
    • 大学時代、体育館のコンピュータにもこうした制限があった。
      Web でメールを開けたので、検索エンジンへのリンクを自分にメールで送り、メール内で右クリックして同じフレームで開いた。
      その後は検索結果で見つけられる場所ならどこへでも行けた。
    • 「Best Viewed In」バッジがどんなものなのかよく分からず、それでどうやって回避できたのか気になる。
      2000年代の高校で制限を回避していた経験はあるので、通りすがりの誰かが詳しく説明してくれるとうれしい。
  • Google のペアレンタルコントロール機能には残念な点があまりにも多い
    Play Store アプリの無効化を求める声はずっと前からあったが、いまだに adb なしでは不可能で、adb は別の問題を生むため良い解決策ではない
    実際の子どもたちがペアレンタルコントロール機能をテストしていないように感じる
    しばらくの間、YouTube に時間制限をかけても Play Store を開き、スクリーンショット一覧に動画があるアプリへ行き、そこから YouTube に移動すると非常に簡単に回避できた
    息子が自分で見つけて見せてくれた

    • Google のペアレンタルコントロール機能は、実質的に放置されたソフトウェアに近く、動作も不器用で、Google Home や Google TV のような他の製品・サービスとも十分に統合されていない
      この問題をまとめた5ページの文書を書いておいたが、送る相手がいない
      最大の不満は、幼児ではない大きめの子どもが2人いて、複数の Google デバイス、つまりスマートフォン、タブレット、Google TV、Google アカウントでログインした PC が同時にある場合に起きる
      Google はペアレンタルコントロールを、「ビリーのスマホを親が物理的に渡し、終わったら返してもらう」という監督状況として想定しているようだ
      根本的にアカウント単位ではなくデバイス単位なので面倒で、回避もしやすい
      たとえばジルが家の中にある3台の Google TV に自分のアカウントでアクセスできるなら、Family Link は各テレビで1日に何時間許可するかを別々に設定させる
      しかしジルにとってテレビは単なるテレビなので、ひとりで家にいれば、1台目のテレビの割り当てを使い切って次のテレビへ移るだけだ
      根拠はないが、別々のプロダクトチームが実際には密に協力していないか、むしろ協力しないように報酬を受けているように見えるし、こうしたチームは Google 内で行き止まりのチームなのかもしれない
      Family Link チームに来るプロダクト担当者やエンジニアリング担当者には実際の子どもがいないか、いても小さすぎるか、あるとしても幼い子どもが1人程度なのではないかと思う
    • 「実際の子どもたちがペアレンタルコントロール機能をテストしていないように感じる」という言葉は、アクセシビリティサービスにもそのまま当てはまると思う
      アクセシビリティ権限を得た瞬間、ユーザーのデバイスを完全に制御できる
      権限を分割して、より細かい制御 API を公開することもできたはずだが、完全に視覚障害のあるユーザーがアクセシビリティアプリをすべての操作のインターフェースとして使わなければならない、非常に極端なケースを中心に設計したように見える
      その結果、その API の機能を一つだけ使いたい場合でも、アプリを完全に信頼し、デバイス上で何でもできる白紙委任状を与えなければならない
      結局、「われわれが意図した利用シナリオはこれだけで、他の用途には妥協しない」という理由だけで、プラットフォームのセキュリティに巨大な穴が生まれている
    • ペアレンタルコントロール機能は妙な代物だ
      同年代の集団から完全に隔離しようとして地下室に閉じ込めるのでない限り、少しでも興味のある子どもに技術的に勝つことはほぼできない
      この機能はやわらかな境界線として使うと最もよく機能する。回避すれば、それが明白で曖昧さのない不服従になる、という程度だ
      結局これはペアレンタルコントロールであって、NSA を防ぐセキュリティではないし、技術的に完璧にしようとすることは、全員にとってかえって悪いことかもしれない
    • Android や iOS でペアレンタルコントロール機能を実際に多用している人はあまりいないと思う
      消費者により安全だと感じさせるために入った機能だが、実際に使おうとするとすぐに諦めることになる
      小さな例として、iOS の Screen Time では Web サイトを許可リストに制限でき、一見便利そうだが、そうすると多くのアプリのログイン画面のようなものが大量に壊れる
      何を直すにはどの URL を許可すべきかという手がかりも与えない
      現代の技術を使っていると、「これは複雑すぎて壊れすぎているので、実際のユーザーが多いはずがない」と思うことがあるが、ペアレンタルコントロール機能はまさにそんな感じだ
    • 以前はペアレンタルコントロール機能を使っていたが、今はやめた
      結局、親の代用品にすぎない
      子どもに関心を持って何をしているか知っているか、そうでないかのどちらかだ
      子どもが Web 上の何かに弱いと思うなら、そもそもスマートフォンを与えない方が正しい可能性が高い
      子どもが十分に理解できる年齢なら、必要なのはソフトウェアによるペアレンタルコントロールではなく親であり、良い親なら子どものアプリにペアレンタルコントロール機能は必要ない
      ペアレンタルコントロール機能は他の出所からアプリをインストールすることも阻止するが、Play Store アプリよりも F-Droid アプリの方を好む
      最後に、この機能は、私たちがどこかのソフトウェア企業に制御され、「危険から守られている」という幻想を教え、訓練し、強化するものだ
  • これは Windows 98 のログイン画面回避のようなハッキング技だ
    https://i.imgur.com/BULPmCI.gif
    正直、Google がシステム設計で Microsoft Windows 98 並みにひどくなるとは思っていなかった

    • これが優れたエクスプロイトである理由は、バッファオーバーフローのような難解な知識を知らなくてもよいからだ
      一般ユーザーでも手順をなぞればできる
      セキュリティのかなりの部分は、考えるべきことを減らすために攻撃対象領域を最小化することのように思える
      ログインダイアログでツールチップを印刷できる必要が一体どこにあるのかと思う
      印刷が入ってくる瞬間、安全でないあらゆるサードパーティ要素が一緒に入ってくる
      ツールチップやヘルプの印刷を許可するにしても、そうした機能が無効になるセキュリティコンテキストを用意すべきだった
      PDF も似たようなもので、3D モデルやスクリプティングのような任意機能の99%はセキュリティエクスプロイトに使われてきた
      基本はシンプルにして、そうした機能は避けた方がいい
    • これはロック画面を回避するものではない
  • この古典的なネタ画像を思い出す: https://imgur.com/BULPmCI?r

    • まさにそれを思い出した
      Craigslist で中古で買った Pixel 2 の FRP 回避に、原文と似た手法を使ったことがある
      子どもの頃、退屈でこの画面を何時間も眺めていた末に、ついに突破して初めての「手応え」を味わった瞬間が、自分の人生全体の方向を決めたのかもしれないとも思った
  • 自分にとって初めての「ハッキング」や、コンピューターシステムの内部をいじっていた経験を思い出す。それがITとエンジニアリングのキャリアにつながった
    Halo PCを違法コピーしようとしてトロイの木馬で家族のコンピューターを壊してしまい、父が帰宅する前に直す方法を見つけなければならなかった
    親が私たちの個人用コンピューターに突然NetNannyのようなペアレンタルコントロールを入れたときも、回避しなければならなかった。すでに何年もインターネットを使っていた後のことで、おそらく上の雑な違法コピーのせいでComcastから手紙が来たのかもしれない
    変更の痕跡を残さずネットブックを再び使える状態に戻す過程で、Linux Live CDとLinuxに触れた
    明日のハッカーたちも今なおそうした教育を受けていると聞くと、うれしい

    • 同じように、National Capital Freenet's](https://www.ncf.ca/en/)'s) のGopherページをかなり長いこと漁っていた記憶がある
      任意のtelnet接続を作れるリンクの先のリンクの先のリンクを見つけて、無料ダイヤルアップサービスを自分たちのサービスだけに使わせようとする制限を回避しようとしていた
      たとえばtamu.eduの公開サーバーでNethackを遊ぼうとしていたのだが、正確なドメイン名はもう覚えていない
    • NetNannyの回避は、確かに自分のコンピュータースキルを高めてくれた
      古典的だった
  • 関連する過去記事もある
    Google has a secret browser hidden inside the settings - https://news.ycombinator.com/item?id=36478206 - 2023年6月、コメント312件

  • Google Play Servicesは自分自身に新しい権限を付与することもできると読んだ[1]
    これはどうやって可能なのか? root権限があるのか?
    [1]https://developers.google.com/android/guides/permissions

    • rootではないが、権限を持つシステムアプリなので、インストール済みアプリがrootなしではできないことをほとんど山ほど実行できる
    • システムアプリやベンダーアプリもmanifestで権限を事前に定義する必要があるため、すべてのシステムアプリがあらゆることをできるわけではない
      ただし、そうしたアプリがアクセスできる権限のリストは非常に広く、開発者が十分多く定義しておけば、実質的にrootのように使える
    • その通り
      実際のrootユーザーではないが盲目的に信頼されており、ユーザー確認なしにアプリのインストールなどを実行できる
      GMSに関する別のブログ記事で扱われていたように、JSブリッジは特権スコープで実行され得る
      Androidをインストールする際にGoogleのプライバシーポリシーに同意することで、これにも同意したことになる
    • 幸い、権限を持つアプリではなくサンドボックス内にインストールできる
      たとえばGrapheneOSで可能
    • これはバックドアと呼ぶのが適切だ
      すでにユーザーの許可なしにアプリをインストールしたり削除したりもできる
      過去にこれで問題になったこともあるが、十分な事態には至らなかった
  • サンドボックス化されたPlay Servicesを使うGrapheneOSは影響を受けていないようだ
    Phoneアプリは連絡先のWeb URLを見たり開いたりできないようで、Contactsアプリも固定モードで記事に出ている2つのURLを開くのに失敗する

  • 2023年の以前の議論が気になるならこちらにある。コメント312件
    https://news.ycombinator.com/item?id=36478206