Gatekeeper (macOS)

Gatekeeper（ゲートキーパー）は、macOSに備わったセキュリティ機能である。

コード署名を利用して、ダウンロードされたアプリケーションを実行する前に検証し、マルウェアを不注意に実行してしまう可能性を減らす。

Gatekeeperは、ファイル検疫に基づく。ファイル検疫機能は、Mac OS X Leopardで導入され、Mac OS X Snow Leopardで拡張された。この機能は、最初にMac OS X Lionのバージョン10.7.3でコマンドラインユーティリティspctlとして作られた。グラフィカルユーザーインターフェイスがMac OS X Lion v10.7.5で追加された。 

 機能 
 設定 
システム環境設定 の 「セキュリティとプライバシー」 パネルには、 「App Store」  「App Storeと確認済みの開発元からのアプリケーションを許可」  「すべてのアプリケーションを許可」 の3つのオプションがある。macOS Sierra以降では 「すべてのアプリケーションを許可」 のオプションが非表示となり、Gatekeeperを無効にする場合はターミナルでsudo spctl --master-disableを実行する必要がある。macOS SequoiaではGatekeeperの仕様が変わり、前述のコマンドを入力後、8分以内に 「すべてのアプリを許可」 を選択する必要があり、30日間使用されないと自動的に設定が有効化されるようになった。コマンドラインユーティリティのspctlは、カスタムルール、個別またはブランケットのアクセス許可などの詳細な制御、およびGatekeeperをオフにするオプションを提供する。

 検疫 
アプリケーションのダウンロード時に、特定の拡張ファイル属性（「検疫フラグ」）をダウンロードしたファイルに追加できる。この属性は、ファイルをダウンロードするアプリケーション（Webブラウザやメールクライアントなど）によって追加されるが、Transmission（BitTorrentクライアント）やBitTorrentなどのダウンローダーによっては追加されない。この動作は、サードパーティのアプリケーションではデフォルトで無効になっており、開発者はそれを選択する必要がある。macOS側で、Xprotectという名前の署名ベースのシステムを使用して、個々のアプリケーションにこの動作を強制することもできる。 

 実行 
ユーザがそのような属性を持つアプリケーションを開こうとすると、システムは実行を遅らせ、次のことを確認する。 

 ブラックリストに登録 
 コード署名 
 アップルまたは認定開発者によってコード署名された 
 コード署名とコード署名されたコンテンツが署名と一致 

 Snow Leopard以降、システムは2つのブラックリストを保持して、既知のマルウェアまたは安全でないソフトウェアを識別する。ブラックリストは定期的に更新される。アプリケーションがブラックリストに登録されている場合、ファイル検疫はそれを開くことを拒否し、ユーザにごみ箱に移動することを推奨する。 

コード署名の要件が満たされない場合、Gatekeeperはアプリケーションを開くことを拒否する。アップルは、アプリケーションが署名された開発者の証明書を失効させ、それ以上の配布を防ぐことができる。 

アプリケーションがファイル検疫またはゲートキーパーに合格すると、通常の実行が許可され、再びの検証はされない。 

 オーバーライド 
Gatekeeperをオーバーライドするには、ユーザ（管理者として機能）は、システム設定のセキュリティとプライバシーパネルからより緩やかなポリシーに切り替えるか、コンテキストメニューからアプリケーションを開く、もしくは、特定のアプリケーションの手動オーバーライドを許可する必要がある。また、spctlで追加することもできる。 

 パスのランダム化 
開発者は、システムがユニットとして検証できるディスクイメージに署名できる。macOS Sierraでは、これにより開発者はすべてのバンドルされたファイルの整合性を保証し、攻撃者がディスクイメージに感染させ再配布することを防ぐことができる。さらに「パスのランダム化」は、ランダムな隠されたパスからアプリケーションバンドルを実行し、それらのファイルの位置に関連する外部ファイルへのアクセスを防ぐ。アプリケーションバンドルが署名されたインストーラーパッケージやディスクイメージから作成された場合、更にユーザが単独でアプリケーションを別のディレクトリに手動で移動した場合、この機能はオフになる。  

 有効性についての考察 
マルウェア対策におけるGatekeeperの有効性と理論的根拠は認められているが、実装レベルでは留保されている。セキュリティ研究者のChris Millerは、Gatekeeperが開発者の証明書を検証し、既知のマルウェアリストを参照するのは、アプリケーションが最初に開かれたときだけだと指摘した。すでにGatekeeperを通過したマルウェアは停止されない。さらに、Gatekeeperは検疫フラグを持つアプリケーションのみを検証する。このフラグはシステムではなく他のアプリケーションによって追加されるため、無視または失敗してもGatekeeperはトリガーされない。セキュリティブロガーのThomas Reedによると、BitTorrentクライアントはこれを頻繁に犯している。アプリケーションがネットワーク共有やUSBフラッシュドライブなどの別のソースからのものである場合も、フラグは追加されない。開発者証明書を取得するための登録プロセスおよび証明書の盗難の可能性についても疑問が提起されている。 

2015年9月、セキュリティ研究者のPatrick Wardleが、ライブラリやJavaScriptを含めたHTMLファイルなどの外部ファイルとともに配布されるアプリケーションに関する別の欠点について指摘した。攻撃者はこれらのファイルを操作し、それらを介して署名されたアプリケーションの脆弱性を悪用できる。つまりアプリケーションとその外部ファイルは、アプリケーションバンドル自体の元の署名をそのまま残しながら再配布できる。Gatekeeperはそのような個々のファイルを検証しないため、セキュリティが侵害される可能性がある。パスのランダム化と署名されたディスクイメージにより、アップルはmacOS Sierraでこの問題を軽減するメカニズムを提供した。  

 関連項目 
 システム整合性保護 
 サンドボックス (セキュリティ) 

 脚注 

Category:MacOS
Category:MacOSのセキュリティ技術