web-dev-qa-db-ja.com

Windowsでシンボリックリンクを作成するために管理者である必要があるのはなぜですか?

Linuxではすべてのユーザーがシンボリックリンクを作成できますが、Windowsでは管理コマンドラインが必要です。そうしないと、mklinkが失敗します。何故ですか?

71
ripper234

シンボリックリンクを作成できるのは、Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment\の下でSeCreateSymbolicLinkPrivilege特権が付与されている唯一の管理者であるため、デフォルトでは管理者のみがシンボリックリンクを作成できます。

Microsoft TechNetから: Windows Vistaの新しいセキュリティポリシー設定

シンボリックリンク(シンボリックリンク)は、シンボリックリンクを処理するように設計されていないアプリケーションにセキュリティの脆弱性を公開する可能性があります。

23
ordag

これは完全ではありません(以下を参照) Windows 10 Insidersビルド14972以降 (windows 10作成者の更新〜1703)。

ただし、ブログ投稿の下のコメントから、他の回答で言及されている問題に関する懸念がまだあります。この新しい動作を利用するには、次のことを行う必要があります。

  • マシンで開発者モードを有効にする
  • SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATEフラグをCreateSymbolicLink AP​​Iに
8
MayeulC

Linuxには、区分化されたファイル/ユーザー構造があります。つまり、「プログラムA」は「ディスクスペースC」に関連しない限り「タスクB」を実行できません。したがって、OS全体がアクション->パーミッションの前提になっているため、シンボリックリンクは、リスク浸透の観点からロジスティックに何も影響しません。

別の言い方をすると、低レベルの権限しか持たないハッカーである場合、大量のシンボリックリンクを作成しても役に立ちません。したがって、LinuxまたはMacOSではそれは役に立ちません。

ただし、Windowsでは、ログインしたユーザー以外のプログラムを実行する「プログラムA」がないため、ログインしたユーザーは好きな場所で「タスクB」を実行できます。したがって、DEFINITELYは、一般的に見られる実際のファイルをウイルスのペイロードで上書きし、それを行ったことを隠すことができるため、シンボリックリンクのレベルへの侵入を支援します。

したがって、symlink保護レベルがないと、ウイルスが感染し、ペイロードとして多数のシンボリックリンクを実行して、たとえば、「Explorer.exe」を偽の「exactly-as-windows-made-it-except-with-a-payload Explorer.exe」にリダイレクトします。

どうしてそうするか?正直なところ、それは王国への鍵です。あなたはそのコンピュータをボットに確実に採用することができ、理論的には未来への道を活性化します。ほとんどの人がそれらを目にしたときにそれらを削除し、これが非表示になる可能性があるため、これが単に「感染している」よりも優れている理由は100万通りあります。

5
Mr Heelis

Vistaが発売された理由を知りました。管理者のみに与えられた理由は非常に簡単です。これは不特定のセキュリティ問題ではありません。シンボリックリンクを通過するときにセキュリティホールのギャップを回避するために、追加前に文字通り存在しなかったAPI呼び出しを使用するには、何千ものソフトウェアをアップグレードする必要があります。

Windowsは、シンボリックリンクレースに対してひどく脆弱です。これを回避する方法はありますが、事実上、そのような方法でAPIを使用しているアプリケーションはありません。マイクロソフトでさえ、シンボリックリンクレースに関連するセキュリティバグを受け入れていません。 3か月前に報告しようとしたところです。

4
Joshua

ハードリンクとディレクトリジャンクションは、1つのパーティション内にのみ存在します(1つのドライブから別のドライブ、またはネットワークの場所へのハードリンクは存在できません)。

一方、SymLinksは、システム上の「安全」と思われる場所からネットワーク上の場所にリンクすることもできます。

1
StefanA