Mac、ノータリゼーション (公証) アプリケーションは「安全」に利用できるのか?

Mac、ノータリゼーション (公証) アプリケーションは「安全」に利用できるのか?

アプリやその他の実行可能コードを公証する目的は、サードパーティのサイトからダウンロードしたものが悪意のあるものではないことをユーザーに合理的に保証することです

Appleの言葉では、ノータリゼーション (公証) は 「Appleがマルウェアをチェックするためにコードのコピーを提供され、既知のマルウェアが発見されなかったことを証明するもの」とされています

ダウンロードしたアプリやプラグイン、コードを最初に開くと、通常は隔離フラグが設定され、macOSが完全な初回実行チェックを行います、アプリが公証されていることが、留められたチケットを読むか、Appleでそれを調べることによって発見された場合、Appleは悪意のあるソフトウェアをチェックしたが、何も見つからなかったことが通知されます、これで、引き続きアプリを開くことができます

必要条件

ノータライズには、単にアプリをAppleに提出して悪意あるコードをチェックさせるだけではありません、すべての新しい公証には、以下も必要です

  • すべての実行可能コードが、Developer IDアプリケーションまたは同様の証明書を使用して、安全なタイムスタンプを使用して正しく署名されていること
  • 「強化されたランタイム」 が有効になり、アプリの動作を制限し、アプリが悪意のあるコードに悪用されるのを防ぐ。アプリの動作を制限し、悪意のあるコードによってアプリが悪用されるのを防ぐために、「hardened runtime」が有効になっている
  • アプリケーションには、デバッグを有効にするためのエンタイトルメントが設定されていません(Xcodeで)
  • アプリケーションはmacOS 10.9以降のSDKで構築されている
  • エンタイトルメントは適切にフォーマットされている

Appleのマルウェアチェック

当然ながら、Appleは公証チケットを発行する前に行ったチェックの詳細を明らかにしていません

これには既知のマルウェアのシグネチャに対するチェックも含まれるが、それ以上のことはないようです、良い日には、アプリの公証を受けるには、Appleへの配達が完了してから約2分かかり、チケットをダウンロードしてアプリにステープルすることができます

これは、自動チェックで疑わしいと思われるものを人間が調べる時間はありません

ご存知のとおり、Appleのチェックは既にマルウェアの例にだまされている(少なくとも)ので、これが完璧ではないことは分かっています、しかし、これは、認証のために提出されたすべてのアプリのサンプルをAppleが持っているという明確な利点をAppleに与え、悪意のあるアプリが見つかった場合の貴重な出発点となります

レガシー公証

公証されているすべてのアプリが上記の厳しい要件を満たしているわけではありません、例外の一つとして、レガシーソフトウェアがあります

Appleはすべての開発者に、たとえ最近のアプリの基準を満たしていなくても、既存のアプリやその他の実行可能ファイルを提出するよう奨励しています

これがどのくらいのアプリに適用されるのかは不明ですが、公証が最初にmacOSMojaveの要件になった2019年6月1日より前に構築された製品に主に限定されています

開発者ではなくサードパーティによって公証されていない、さらに厄介なレガシーソフトウェアのカテゴリがもう1つあります

Appleは、コードの署名と公証は別々のプロセスであり、異なるアクターが実行できることを強調しています、アプリに署名するのは開発者だけですが、公証のためにアプリを提出することは誰でもできます

部の開発者は、自分たちのソフトウェアの旧バージョンがAppleに提出され、マルウェアがチェックされ、その後公証されたことを知って驚いています、これが可能なのは、公証が成功した結果のチケットをソフトウェアに留める必要がなく、アプリでの最初の実行チェック中にのみ明らかになる可能性があるためです

誰が多くの古いアプリを密かに公証しているのかは不明ですが、これはAppleのために行われたのではないかと推測する人もいます

そのため、公証された最近のソフトウェアや現在のソフトウェアは、常に上記の要件に準拠しているはずですが、以前に署名されたソフトウェアの場合はそうではありません

以前に署名されたソフトウェアは、詳細に署名されていないか、強化されたランタイムを使用せずにレガシーの認証を付与された可能性があります

ランタイムはどのように強化されるか?

公証の要件のほとんどの価値と利用者の利益は一般的に明確です、アプリに詳細な署名を要求するということは、全ての実行可能コンポーネントが署名に含まれているキャッシュを使って完全性をチェックできることを意味します

タイムスタンプを安全に設定することで、コードを変更することなく、変更をさかのぼってその署名でカバーできるようになります。しかし、 「強化されたランタイム」 についてはどうなのか

「強化された」 アプリを実行すると、できないことがたくさんある。たとえば、一部の古いアプリケーションが使用し、マルウェアが使用する可能性のある手法である、メモリ内の独自のコードを変更することはできません

これには、macOS Mojaveから次々と導入されたプライバシーコントロールの多くが含まれています

ユーザーにとって、強化されたアプリは、より安全な環境で動作し、ユーザーのプライバシーを尊重するべきであるため、本当に良いニュースになるはずです

(Via The Eclectic Light Company.)


LEAVE A REPLY

*
*
* (公開されません)