タイプ1デスクトップファイルのセキュリティに関する考慮事項

タイプ1デスクトップファイルのセキュリティに関する考慮事項

これ無料デスクトップ整理する標準定義ファイル用.desktop。残念ながら定義されていません特権ファイルの(参照無料デスクトップメーリングリスト) ソフトウェアは以下を介して配布されます。

a) executable .desktop files
b) non executable .desktop files
c) mixed a) and b) in one software package. 

これは次のような場合に便利です。Linuxディストリビューター、彼らの目標は、一貫したシステムを提供することです。私はより多くを学ぶためにsxの膨大な観客を活用したいと思います。

.desktopファイルの利点は何ですか?いいえ実行ビット?.desktopファイルシステムで許可されている場合、すべてのファイルを実行できる理由はありますか?

既知のセキュリティ問題がありますか?実行ファイルに問題があるプログラムがありますか.desktop

答え1

aに必ずしも実行可能ビットが設定されていない1つの明らかな理由は、.desktopこれらのファイルが最初から実行可能でないためです。ファイルには、.desktopデスクトップ環境にプログラムをファイル形式に関連付ける方法を示すメタデータが含まれていますが、それ自体はそうするようには設計されていません。

ただし、.desktopファイルはグラフィカル環境で何を実行するかを間接的に通知するため、その中に定義されているすべてのプログラムを実行するための間接的な能力があり、悪用の可能性が高くなります。悪意のあるファイルが悪意のあるプログラムや不要なプログラムを実行するのを防ぐために、.desktopKDEとgnomeの開発者は、セキュリティ層を追加するためにUnixファイルの実行権限の意図された目的からやや逸脱したカスタム核を導入しました。この新しいレイヤーを使用すると、.desktopデスクトップ環境では実行可能ビットが設定されているファイルのみが考慮されます。

単にファイルなどの非実行ファイルを.desktop実行可能ファイルに変換することは危険を伴うので、疑わしい慣行になります。 shebangを持たない非バイナリ実行可能ファイルは、シェル(シェルかどうか)によって実行されbashますsh。非シェルスクリプトを実行するためにシェルを必要とするファイルは、予測不能な結果を​​生成する可能性があります。

この問題を回避するには、ファイルにshebangがあり、.desktopそれを処理するように設計された正しいコマンドを指す必要があります。xdg - 開く、Thunderbirdがここでやったように:

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=Thunderbird
GenericName=Email
Comment=Send and Receive Email
...

この場合、ファイルを実行すると、ブラウザまたはテキストエディタでファイルを開くことも、期待したものと異なる場合がある正しいタスク(およびデスクトップ環境)が考えるタスクが実行されます.desktopxdg-open

答え2

タイプ1デスクトップファイルのセキュリティに関する考慮事項

デスクトップファイルは、ファイルマネージャとウィンドウマネージャが使用するテキスト設定ファイルです。上記のように、形式は次のとおりです。 FreeDesktop標準に従って指定:

KDEとGNOMEのデスクトップ環境はどちらも同様の「デスクトップアイテム」形式を使用します。これは、特定のプログラムの起動方法、メニューに表示される方法などを説明する構成ファイルです。統一された基準は、より大きなコミュニティに役立ちます。 2つの環境、そして実際に仕様を実装する他の環境間の相互運用性がより簡単になるように、すべての当事者から全会一致で同意を得てください。

これ現在のFreeDesktop仕様 3 種類のデスクトップ項目がリストされます。

Applicationこの仕様は、(タイプ1)、Link(タイプ2)、およびDirectory(タイプ3)の3種類のデスクトップ項目を定義します。将来新しいタイプを追加するには、実装時に未知の種類のデスクトップアイテムを無視する必要があります。

(タイプ1)デスクトップファイルのセキュリティリスクは、ApplicationFreeDesktopメーリングリストで何度も詳細に議論されています。

私はfreedesktop.orgで指定された.desktopファイルがGNU / Linuxウィンドウを開き、さまざまなウイルスやトロイの木馬が含まれているという事実に気づきました。この問題は以前に議論されたようです。問題がまだ解決されていないことが確認され、解決策を提案したいと思います。

伝統的に、インターネットからダウンロードしたファイルは単に「クリック」して unix/GNU/Linux で実行することはできず、実行権限を付与する必要があります (インストールプログラムを使用するかアーカイブを抽出)。

--サム・ワトキンス、」.desktopファイル、重大なセキュリティ脆弱性、ウイルス親和性"、2006年4月(LWNのまとめ)

前述の制限に従って開始が禁止されている場合、ユーザーはサービスを自動的に実行可能にしてから開始することを選択できます。これは少し不安ですが、既存のデスクトップアイコン、パネルランチャーなどが引き続き機能するように簡単に許可するための最良のオプションだと思います。

--マイケルパイン、」.desktop ファイルのセキュリティ"、2009年2月

私が知る限り、デスクトップファイルに関連するCVEは1つだけです。 CVE-2017-14604

3.23.90より前のGNOME Nautilusでは、.desktopファイルの名前フィールドは.pdfで終わりますが、ファイルのExecフィールドが悪意のある「sh -c」を実行している攻撃からわかるように、攻撃者は.desktopファイル拡張子を使用してファイル形式をなりすましできました。方法。つまり、Nautilusはファイルに実際に安全でない可能性がある.desktop拡張子があるというUIを表示しません。代わりに、UIは.pdf拡張子のみを表示します。 desktop ファイルが必要であるということです。 実行権限を持つには、ユーザーがファイルを .desktop ファイルとして処理する必要があることを確認してから、メタデータ::trusted フィールドにユーザーの回答を覚えておく必要があります。

ご不明な点がございましたら、ここにもう少し詳細な背景情報があります。

nautilus: CVE-2017-14604: .desktop ファイルは Nautilus からマルウェアを隠す可能性があります。

Nautilusには、悪意のあるスクリプトを無害な文書(PDFやODTなど)に偽装し、ユーザーが開くと実行できるバグがあります。

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=860268

私が作成したエクスプロイトはsgos_handbook.pdf.desktop(名前を付けることもできますが、malware.desktopNautilusでも同じように見えますが)というファイルです。内部の内容は次のとおりです。名前はに設定され、 sgos_handbook.pdfアイコンはgnome-mime-application-pdfサブグラフのPDFのデフォルトアイコンです。これらの2つのため、ノーチラスで見るとPDFではないかどうかはわかりません。

https://micahflee.com/2017/04/breaking-the-security-model-of-subgraph-os/

以下は、概念証明悪意のあるデスクトップファイルの単純化されたバージョンです。

[Desktop Entry]
Name=my-file.pdf
Exec=sh -c "xeyes"
Type=Application
Icon=gnome-mime-application-pdf

アイコンはPDFファイルのように見えますが、PDFファイルを開く代わりにxeyes。その後、この問題は、ファイルマネージャがカスタムアイコンと名前を表示する前に、ユーザーがデスクトップファイルを積極的に信頼するように要求することによって解決されました。xeyesrm -rf $HOME

デスクトップファイルの他の用途。

ただし、デスクトップファイルは、MIMEタイプを関連付けてアプリケーションを実行する以外の目的に使用されます。

タイプ3から始めます。これはデスクトップエントリですが、ファイルではなく.directoryファイルでもあります.desktop

カタログファイル(タイプ3)

カタログファイル(タイプ3)は、主に階層メニューからカテゴリを作成するために使用されます。これはCategories タイプ1デスクトップファイルのキーに使用されます。たとえば、次の例を考えます/usr/share/desktop-directories/Utility.directory

[Desktop Entry]
Name=Accessories
Comment=Desktop accessories
Icon=applications-utilities
Type=Directory
X-Ubuntu-Gettext-Domain=gnome-menus-3.0

したがって、デスクトップファイルのキーに「Utility」がある場合は、メニューサブディレクトリCategoriesに表示されます。Utility

ドルフィンファイルマネージャはカタログファイルも使用します。画像のサムネイルプレビューを有効/無効にする

.directory私が知っている限り、ファイルを実行可能にする理由はありません。

リンクされたデスクトップファイル(タイプ2)

リンクタイプデスクトップファイルはすべてのURLを指すことができます。これにより、特定のディレクトリに関連リンクまたはURLを簡単に保存できます。

現在、ほとんどのファイルマネージャは、URLを開く前にリンク型デスクトップファイルを実行する必要があります。 URLを開くのはランダムなコードを実行するのとは異なりますが、 file://URLは実行可能ファイルを指す可能性があり、URLは悪意のあることが多いため、これは意味があります。

ファイルURL

たとえば、Ubuntuでは、example-contentパッケージはホームディレクトリに次のようなタイプ2デスクトップファイルを追加します。

[Desktop Entry]
Type=Link
Name=Examples
Comment=Example content for Ubuntu
URL=file:///usr/share/example-content/
Icon=folder

ファイルマネージャでこのデスクトップファイルをダブルクリックすると、その/usr/share/example-content/フォルダに移動さ​​れます。

リンクされたデスクトップファイルファイルを指すこともできます。。たとえば、LaTeXパッケージのマニュアルを開くには、次のようにしますhyperref

[Desktop Entry]
Type=Link
Name=hyperref manual
URL=file:///usr/share/doc/texlive-doc/latex/hyperref/manual.pdf

http/https URL

リンクタイプデスクトップファイルを使用してブラウザでHTTP URLを開くこともできます。たとえば、このページにリンクされているデスクトップファイルは次のようになります。

[Desktop Entry]
Name=What is the advantage of .desktop files without executable bit set?
Type=Link
URL=https://unix.stackexchange.com/questions/373239/what-is-the-advantage-of-desktop-files-without-executable-bit-set

これは最もクロスプラットフォームのオプションではありませんが、 広く 使用される

その他のURL

リンクされたデスクトップファイルには任意のURLを含めることができます。 URIスキームに登録されているハンドラがある限り動作します。たとえば、デスクトップファイルにはmailto:次のURLを含めることができます。

[Desktop Entry]
Name=Email Linus Torvalds
Type=Link
URL=mailto:[email protected]

またはsmb://URL:

[Desktop Entry]
Name=My Samba share
Type=Link
URL=smb://username@server/my-samba-share

または、次の特別なファイルマネージャのURL:

[Desktop Entry]
Name=Trash
Type=Link
Icon=user-trash-full
EmptyIcon=user-trash
URL=trash:///

またはこれ:

[Desktop Entry]
Name=Recent documents
Type=Link
Icon=document-open-recent
URL=recent:///

関連リンク。

関連情報