rapportdとは何か
rapportdは、macOSの一部として出荷される正当なAppleのシステムデーモンです。これはマルウェアでもアドウェアでもなく、誤ってインストールしたものでもありません。現在のmacOSバージョンでは、バイナリは /usr/libexec/rapportd にあり、Appleによってコード署名されており、システムによって自動的に起動されます。
その役割はContinuityであり、Mac、iPhone、iPad、Apple Watchが一つのデバイスセットとして動作することを可能にする機能群です。これには通常、Handoff(メールをiPhoneで開始し、Macで完了)、Universal Clipboard(一つのデバイスでコピーし、別のデバイスで貼り付け)、電話とSMSリレー、Instant Hotspot、Continuity Camera、Continuity Markup and Sketch、およびAuto Unlock(Apple Watchを使った自動ロック解除)が含まれます。これらすべてがrapportdを通じて排他的に行われるわけではありませんが、すべての根底にある考えは同じです:あなたのデバイスは、他のデバイスが近くにあり、起きていることを知る必要があります。
これがrapportdの役割です。これは、同じAppleアカウントにサインインしている近くのAppleデバイスにあなたのMacの存在を通知し、その見せかけを受け取るために待機します。Bluetooth Low EnergyとピアツーピアWi-Fi(Apple Wireless Direct Link、またはAWDL)を使用します。作成される接続はローカルであり、自分のデバイス間のものであり、他者が運営する遠隔サーバーへのものではありません。
発見は両方向で機能する必要があるため、rapportdは単に発信するだけでなく、受信も待ちます。この一つの詳細が、rapportdが他のAppleデーモンよりもはるかに頻繁にファイアウォールダイアログに表示される理由です。
なぜ突然それが見えるのか
最も一般的なきっかけは、macOSのビルトインファイアウォールをオンにすることです。macOSのファイアウォールは着信接続をフィルタリングするので、有効にするとシステムはそれらを待ち受けるすべてのプロセスについて尋ね始めます。rapportdはほとんど常に最初に手を挙げるもので、次のダイアログが表示されます:アプリケーションrapportdに着信ネットワーク接続を許可しますか?
これが表示されても何も問題はありません。rapportdは前日とまったく同じことをしていました。変わったのは、ファイアウォールが今やそれとあなたの他のデバイスの間に立ち、macOSが以前は静かに行っていた決定をあなたに求めていることです。同じプロンプトはmacOSのアップデート後にも再び表示されることがあります。なぜなら、アップデートされたバイナリはファイアウォールの許可されたアプリのリストにとっては新しいバイナリとみなされるからです。
人々がそれを見つける二つ目の方法はActivity Monitorです。rapportdはあなたのユーザーアカウントのプロセスリストに表示され、通常はごくわずかなCPU使用と小さく一定のネットワーク活動を示します。ネットワークタブでは、パケット数がゆっくりと増加し、データ量はメガバイトではなくキロバイト単位で測定されることが多いです。これは、探索トラフィックが設計上小さいためです。
三つ目の方法はサードパーティのネットワークモニターやアウトバウンドファイアウォールです。これらはrapportdがあなたのネットワーク上でローカル接続を行っているのを示します。これもまた、デバイス探索サービスとして期待される挙動です。
rapportdはマルウェアですか、そして自分で確認する方法
いいえ。rapportdはApple自身のコードであり、標準的なmacOSのインストールの一部です。これを確認する価値があるのは、悪意のあるバイナリに馴染みのあるシステムプロセスの名前を付けるのは本物の、よく知られた手法だからです。したがって、確認の習慣は安心できる答えであっても良いものです。
最初の確認は場所です。Appleのデーモンは /usr/libexec にあります。これはSystem Integrity Protectionによって保護されたシステムディレクトリであり、普通のソフトウェアはそこに書き込みできません。Activity Monitorでプロセスをダブルクリックし、その開いているファイルやポートを調べることで、どこから実行されているか確認できます。ホームフォルダ、ダウンロードディレクトリ、またはアプリケーションのプライベートサポートフォルダからrapportdを呼び出している場合、それはAppleのデーモンではなく、注意が必要です。
二つ目の確認はコード署名です。macOSにはcodesignというコマンドラインツールがあり、それを使って /usr/libexec/rapportd の署名情報を表示させると、署名の権威を確認できます。本物のAppleのシステムコンポーネントであれば、Apple自身の署名権威とApple Root証明書の権威がそのチェーンに見えるはずです。サードパーティの開発者名やアドホック、または署名なしはありません。Terminalを使いたくない場合は、正しいパスとActivity Monitorに表示される小さくアイドル状態のプロセスの組み合わせだけでも十分な証拠になります。
三つ目の確認は挙動です。実際のrapportdは静かです。高いCPU使用や大量のデータ転送が持続するのは異常であり、次のセクションで説明するように、普通は平凡な原因によるもので、悪意のあるものではありません。
許可すべきか、それともブロックすべきか?
正直なトレードオフは狭い。rapportdの着信接続を拒否すると、デバイス同士を見つけることに依存しているContinuityの機能を失い、それ以外は何も失わない。あなたのMacは起動し、ブラウズし、iCloudを同期し、メールを受信し、アプリケーションを正確に以前と同じように動かし続ける。拒否してもセキュリティ上の問題はなく、安定性の問題もない。
したがって、決定はそれらの機能を使うかどうかだけだ。Handoff、Universal Clipboard、Instant Hotspot、またはApple Watchを使ってMacをロック解除するのが仕事の一部なら、許可しよう。もしそれらを意識的に使ったことがなく、またはAppleデバイスを一つだけ持っている場合、拒否しても気付かないほどのコストしかかからない。
ただし、ファイアウォールで拒否するよりもクリーンな方法がある。ファイアウォールでブロックすると、機能はオンのままで、それらが依存している仕組みを静かに壊してしまい、後で混乱を招く半動作状態になることが多い。ソースで機能をオフにする方が整理されている:最近のmacOSバージョンでは、Handoffのトグルはシステム設定の一般の中のAirDropとHandoffセクションにある。それをオフにすれば、システムはrapportdに最初から作業をさせなくなる。
rapportdの高いCPU使用率や異常に一定のネットワーク活動は別の問題であり、通常はデバイス発見ループであって、妥協ではない。BluetoothやWi-Fiをオフにして再びオンにしたり、Macを再起動したり、Appleアカウントからサインアウトして再サインインしたり、Handoffを無効にして発見サイクルを完全に停止させることで、通常は解決する。
より広い問題:数十のデーモン、ほとんど見えない状態
rapportdが偶然に選ばれる理由は一つだけ:それはリッスンしているからだ。だから内蔵のファイアウォールはそれについて尋ねなければならない。他の多くのバックグラウンドプロセスは、あなたのMac上でアウトバウンド接続だけを行い、macOSのファイアウォールはそれをフィルタリングせず、プロンプトも出さない。それらはrapportdよりも信頼できるわけではない。ただ静かに動いているだけだ。
これが厄介なギャップだ。一般的なMacは、証明書の確認、プッシュ通知、iCloudの同期、Spotlightの提案、ソフトウェアアップデート、テレメトリーを処理するシステムデーモンを動かしている。これらに加え、インストールしたサードパーティアプリもそれぞれ独自のネットワーク動作を持つ。Activity Monitorは、データを移動したプロセスを教えてくれるが、どのドメインに接続したか、いつ、どれだけのデータを送ったかは教えてくれない。これこそが、何かが正常かどうかを判断するために必要な情報だ。
NetMuteはこの層のために作られている。リアルタイムのアプリごと、プロセスごとのトラフィックを表示し、ドメインレベルのログも記録する。これにより、どのドメインに接続したか、いつ、どれだけのデータを送ったかを確認できる。何かがおかしいときは、そのアプリのファイアウォールをワンクリックでブロックし、一時的なルールは自動的に期限切れになるので、すぐに正常な状態に戻せる。ネットワークプロファイルは、ホームネットワークとホットスポット間でルールを変えることを可能にし、Tracker Shieldは1,100以上の既知のトラッカードメインをブロックする。
目的はAppleのデーモンをブロックすることではない。ほとんどのデーモン、rapportdも含めて、それらが主張していることを正確に行っている。次に同じ質問が出てきたときに答えられるように、プロセス名を探す必要なく答えられる状態を作ることだ。