Loupe - ネイティブiOSアプリが参照できるデバイス・フィンガープリンティングの表面を可視化するiOSアプリ
(github.com/mysk-research)- Loupeは、公開iOS APIから実際の値を読み取り、そのままの形で表示するiOS・iPadOSアプリであり、サードパーティ製アプリが呼び出せるAPIを通じて、デバイスが公開している値を直接確認できるようにする
- 名前、メールアドレス、位置情報がなくても、複数の読み取り値が組み合わさることで、アプリやWebサイトをまたいでユーザーを再認識できるフィンガープリントを形成しうる
- 読み取り値は、アクセスコストに応じて3段階に分類される
- Passive: locale、time zone、screen、batteryなど、プロンプトなしですべてのアプリから見える値
- Needs Permission: contacts、photos、location、calendarsのように、iOSのプロンプトを発生させる値
- Advanced:
canOpenURLによるURLスキームのプロービングや、再インストール後も残るKeychain persistenceのような、公開APIのサイドチャネル利用
- Loupeが読み取る値は、明示的に書き出さない限りデバイス外に出ることはなく、集計やハッシュ化を行わず生の値として表示され、アップロード・同期・共有もされない
- ビルドにはXcode 26以降が必要で、
code/Loupe.xcodeprojを開き、Signing.local.xcconfigにDEVELOPMENT_TEAMとbundle identifierを設定したうえで、デバイスまたはシミュレータでビルド・実行する - Xcodeのbuildable foldersを使うことで、新しいSwiftファイルがプロジェクトファイルを修正せずに自動で反映され、macOS向けにもビルドできるが、Mac版は洗練された状態になるまでにまだいくつか追加作業が必要
- Loupeは無料のオープンソースで、source codeはMIT Licenseで配布されるが、Loupeの名称・ロゴ・アプリアイコン・画像・アイコン・デザインのソースファイルはMIT Licenseの適用対象外
1件のコメント
Hacker Newsのコメント
アプリのインターネットアクセスが、なぜデフォルトで遮断して必要なものだけ許可、という方式ではないのか理解できない。
データ流出を防げば、こうした被害の大半は減らせるし、そもそも多くのアプリはインターネットに接続する必要がない。
血圧を読むためになぜGEアカウントを作らなければならないのか分からないし、少なくともそれは自分が利用されていると分かるが、これは明らかな悪用だ。
ほとんどのアプリにはインターネットアクセスが必要な正当な理由もあるので、単純なはい/いいえの権限だけでは大きな効果はないと思う。
すべてのネットワークリクエスト、対象ドメイン、送信データの詳細なログを見られるとよい。
オプションはオフ、WLANのみ、WLANおよびセルラーの3つだ [0]
[0] https://old.reddit.com/r/ios/comments/aib10i/in_china_ios_al...
GrapheneOSは使ったことがないので分からないが、Android自体はこれを完全にサポートしているのに、ほとんどの端末メーカーがなぜ自社ROMでこの権限を削除するのか分からない。
ただ、こうした機能はどこにでもあるべきだという点には同意する。
ここの一部コメントへの訂正として、iOSアプリはインストールされているすべてのアプリを列挙できるわけではない。
インストール有無を確認したり開こうとしたりする特定のアプリ/スキームだけを、LSApplicationQueriesSchemesで指定して確認できる。
無関係なアプリを長いリストで入れると、Appleのアプリ審査で却下される。
Appleは、インストール済みアプリ一覧がフィンガープリンティングやプライバシー侵害的なプロファイリングに使われ得るため、この制限を追加した。
しかもデータブローカーや集計業者は、何千ものアプリからそうしたデータを買い集めて統合し、再販できる。
識別力の非常に高い小さなリストだけでも、漏えいした他のデータと組み合わせれば、個人を一意に識別するのに十分な追加エントロピーを与えられる可能性がある。
そのリストはどこで見られるのか?
“iPhone last setup or erased on ...” の情報は本当にひどい。
ユーザーはこれに対して実際に何ができるのか? OSが何らかの形でこの値をぼかすべきだと思う。
唯一の防御策は、アプリのインストールを避けて、可能な限りWebブラウザを使うことだ。
ボリューム作成日はかなり深刻だ。
この値やPasteboardのchangeCountが、そこまで細かい必要がある理由が見当たらない。
“Installed Apps Probe” の流出も驚きだったが、それでもAndroidの現状よりはましだ。
そして毎日リセットできないようにする理由もない。
素晴らしい。
こういうものを見ると、視覚的に認識させてくれるツールがどれだけ必要か実感する。
Web向けに似たものを作った: https://neberej.github.io/exposedbydefault/
Github: https://github.com/neberej/exposedbydefault
iPhoneを持っていない、あるいはアプリをインストールしたくない人は、ここでデモを見られる。
同じ動画の別プラットフォーム版だ。
https://odysee.com/@techlore:3/permission-not-required-the-o...
https://www.youtube.com/watch?v=_n_SpEWtqog
https://inv.nadeko.net/watch?v=_n_SpEWtqog
https://techlore.tv/w/d7dh4P7y4dVngNoL7u7s3B
特別な権限を与えていない任意のアプリが、なぜこれほど多くの情報にアクセスできるのか、そしてAppleがなぜこの重要な情報をユーザーに知らせないのか分からない。
Appleはカテゴリ別・アプリ別に許可/遮断できる長いチェックボックス一覧を作れないのか?
たとえば、何の権限も与えていないアプリが端末にインストールされたすべてのアプリ一覧を即座に持てて、Tinder/Bumble/Hingeの存在だけで交際中か、さらには浮気しているかまで推測できるとは知らなかった。
これだけでも、悪質な行為者が「パートナーが浮気しているか確認」みたいなサービスとして10ドルで確率的な答えを売る形で収益化できそうだ。
そんな「パートナーが浮気しているか確認」アプリを、どうやって相手のスマホにインストールさせるつもりなんだ?
Androidスマホにも、すでに似たようなものはあるのか?
今日はもう、個人情報を共有しないようにする努力は諦めた。
その代わり、あらゆる広告をブロックし、広告ブロックなしでは使えないアプリ/ウェブサイトは使わない。
彼らは自分の好きなアイスクリームの味みたいな細かい情報まで大量に持っているかもしれないが、広告をまったく見ないのであまり気にしていない。
もちろん、誰もこんな情報を持っていない方が望ましいが、こんなひどい社会では実用的に振る舞うしかない。
だからアプリのインストールは避けているし、たくさん入れないようにしている。