X.orgからWaylandへの進行中の移行に関する議論の中で、私は "Linuxのセキュリティはまだありません" のコメントに定期的に出くわします。これは、Waylandが(完全ではないが)より優れたデスクトップ分離を約束している(たとえば、2つのGUIアプリケーション間のキーロギングを防止する)ことを示しています。
これは、他のオペレーティングシステム(Windows、macOS、Android、iOS)のディスプレイマネージャーがX.orgとWaylandの両方よりも優れた分離を持っていることを意味しますか?これは本当ですか?
Microsoft Windowsは、Vista以降、少なくとも [〜#〜] uipi [〜#〜] と セッション0分離 を使用してウィンドウを分離しようとしました。これは完璧ではなく、 いくつかの制限 があります。 Windowsは多くの大きなAPIをクライアントウィンドウに公開しているため、分離をバイパスすることができます。これは、UACの同意プロンプトの特定の問題であり、本物のユーザーのみが同意を与えることができると想定されています。さらに、AppContainerは個々のウィンドウを分離できます。残念ながら、私はWindowsがGUIの分離をどのように管理するかについてほとんど知りません。確かに、Vista以降、状況は変化しています。ただし、Windowsは個々のウィンドウをある程度まで分離しようとしますが、バイパスは存在します。
XorgはLinuxの元のディスプレイマネージャーの1つであり、Xfree86に取って代わりました。 X11プロトコルを使用します。グラフィカルアプリケーションが画面に描画する場合、X11プロトコルを使用して、UNIXドメインソケットまたはローカルネットワークを介してXサーバーに接続します。 Xサーバーに対して認証を行うには、X11 Cookieを提供する必要があります。これは、単一ユーザーのみが読み取り可能なファイル内のランダムな値であるか、そのユーザーの環境変数としてエクスポートされます。 X11 Cookieにアクセスできるプログラムはすべて、Xサーバーに完全にアクセスできます。キーストロークの読み取り、キーストロークの挿入、スクリーンショットの取得、ウィンドウの移動などを行うことができます。そのため、Xorgでのグラフィカルな分離は、X11 Cookieを含むファイルに対するDAC(UNIXアクセス権)に制限されています。脆弱性のある可能性のあるブラウザーで100の信頼できないタブが開かれると同時に、X11セッションでルートパスワードを頻繁に(愚かに)入力することを考えると、このセキュリティ設計は最善の考えではありません。 XSECURITY extension など、X11のセキュリティを向上させる試みは、無残に失敗しました。複雑すぎて、簡単にバイパスできません。
ただし、X11を搭載したシステムでグラフィックを分離する方法があります。たとえばXephyrを使用してネストされたXサーバーを作成すると、独自のXサーバーで個々のアプリケーションを起動できます。これを必須のアクセス制御と組み合わせて、各アプリケーションがそれ自体のネストされたXサーバーのX11 Cookieのみを読み取れるようにすることで、これを完了します。これは分離を提供しますが、X11プロトコルとその拡張の過度の複雑さに対しては何もしません。数十年前のアプリケーションの脆弱性は、引き続き現れ続けています。
ウェイランドは、Linuxデスクトップセキュリティへの答えになるはずです。共有ライブラリの形でウィンドウマネージャーと統合し、ウィンドウマネージャーが個々のウィンドウのアクセス許可を管理できるようにします。各ウィンドウはウィンドウマネージャーにアクセス許可を要求でき、ウィンドウマネージャーはそれらを許可または拒否できます。 Waylandの全体的なアーキテクチャは 実質的に異なる Xorgからのものであり、セキュリティに直接関係しない多くの内部的な違いがあります(たとえば、Waylandはそれ自体ではレンダリングを行わず、クライアントウィンドウにレンダリング)。違いだけで完全な答えが得られます。セキュリティー面では、Waylandは、信頼できないグラフィックアプリケーションでいっぱいのデスクトップに機密性、整合性、および可用性を提供し、適切に機能するために必要な特権が少ないシンプルなプロトコルを使用して実行されるという点で優れています。
モバイルコンピューティングについてはほとんど知りません。すべての種類のモバイルオペレーティングシステムとデスクトップオペレーティングシステムの大きな違いの1つは、モバイルデバイスはモノリシックであり、構成可能性が制限される傾向があることです。これにより、セキュリティポリシーの設計が容易になります。その結果、ウィンドウ間通信の重要性が低くなり、Androidは、個々のアプリケーションを独自のUIDとGIDで実行でき、システムの他の部分から完全にサンドボックス化されます。iOS Mac OSX(確かに 完全に分離されていない 悪意のあるアプリケーションから)とAndroid/iOSのグラフィカルな分離についてさらに発見した場合は、この回答を編集します。
質問に答えるために、多くのオペレーティングシステムは、Xorg(何もない)よりも優れていますが、現在知られていないWaylandよりも優れています。新しいエクスプロイトを使用したり、ユーザー全体をハイジャックしたりすることなくバイパスできるようにします。ウェイランドは、X11モデルに比べて大きな改良点です。