【macOS Catalina】ファイルシステムのおかしなふるまい:TextEditを2つ並べて表示できる

【macOS Catalina】ファイルシステムのおかしなふるまい:TextEditを2つ並べて表示できる

同一フォルダ内に二つの同じ名前

同じフォルダー内に同じ名前を持つアプリはもちろん、2つのアイテムを持つことはできないというよく知られた事実です

Unicodeにおいては似たような文字のなりすましはありません

Finderによって表示される同じアプリケーションフォルダ内のTextEditの2つの別々のコピーで、そして、それは数秒でできることであり、深刻なセキュリティ脆弱性の可能性に心配しながらおこなうことができます

これを行うには、macOS Catalinaを実行している必要があります

Finder でメインのアプリケーションフォルダを開き、テキストエディット、チェス、またはAppleがmacOSにバンドルしている別のアプリ(もちろんSafariを含まない)を見つけ、メニューコマンドまたは「Command(⌘)」+「D」のショートカットを使用して複製します

その後、「TextEdit copy.app」という名前のアプリのコピーを作成する必要があります

名前を編集で「copy」を削除し元の名前と同じにします、Finder はこれを拒否せず、同じ名前の両方のアプリを並べて表示できます

File System funny 00002 z

なぜできるのか?

その理由は、もちろん、Finderがだましているからです、これらの2つのアプリは、Catalinaの読み取り専用のシステムボリュームのために、実際には異なるフォルダにあります

オリジナルはそのシステムボリュームの/ System / Applicationsフォルダーにありますが、作成したコピー(読み取り専用であるためシステムボリューム上の同じフォルダーに書き込むことはできません)は実際にはデータボリュームにあり、最上位のApplicationsフォルダに表示されます

Finderは/ Applicationsに存在するふりをしますが、実際のパスは / System / Volumes / Macintosh HD / Applicationsに似ています

それでは、悪意のあるソフトウェアがこれを使用して、特別に細工されたバージョンのTextEdit、またはmacOSにバンドルされている別のアプリを実行するのを防ぐにはどうすればよいでしょうか?

データボリューム上のアプリの偽バージョンが隔離されれない場合、偽アプリを開いたときにmacOSがGatekeeperの完全な初回実行チェックをしないので、基本的な署名をすり抜けてしまう可能性があります

最も重要なことは、バンドルされたアプリのこの書き込み可能なコピーを開こうとすると、セキュリティシステムは新しいパスから起動されていることを認識し、より完全な署名チェックを行います

これにより、基になるアプリへのわずかな変更でも対応できるようになり、マルウェア作成者がチェックをすり抜けることがはるかに困難になります

ただし、たとえば、Resourcesフォルダーに別のPDFファイルを置くことはできますが、問題は発生しません

Finderがこれを防ぐべきだと主張する前に、これが起こる可能性のあるブートボリュームグループ内の唯一の場所はアプリケーションフォルダーではないことに認識する必要があります

他の場所では、これは許容可能な動作である必要があり、すべてのファイルとフォルダーが一意のパスを持っているという基本的な要件と矛盾はありません

また、1つの副作用を認識する必要があります

リッチテキストドキュメントとプレーンテキストドキュメントを開くためのデフォルトのアプリである可能性が高いTextEditのようなアプリでこれを行うとき、macOS(より正確にはLaunch Services)ドキュメントをダブルクリックして開くときに、システムボリューム上のアプリのコピーを使用し続ける必要があります


通常、この方法では、そのビルド番号で使用するコピーを決定し、最新のコピーを優先するので、重複するビルド番号が大きくなると、より競合する可能性があります、ただし、複製を作成するだけでは、それは機能しません

これで、TextEdit の 2つ目のコピーが完成しましたが、正しいコピーを捨てることを心配する必要はありません

macOS では、システムボリュームは読み取り専用で、SIP で保護されているので、オリジナルをシステムボリュームからゴミ箱に入れることはできません、したがって作成したコピーのみを削除できます

(Via Eclectic Light Company .)


LEAVE A REPLY

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