0

CASの価値が限られていることはわかっていますが、とにかく学びたいと思っています。

表示されている動作がわかりません。基本的なデフォルトの CAS は、かなり通常の環境ではまったく機能していないようです。

このサンプルクラスを見てください:

using System;
using System.Security;
using System.Security.Permissions;

namespace CASNotWorkingExample
{
    class Program
    {
        static void Main(string[] args)
        {
            FileIOPermission perm = new FileIOPermission(PermissionState.Unrestricted);

            if (SecurityManager.IsGranted(perm))
                Console.WriteLine("granted");
            else
                Console.WriteLine("denied");

            Console.ReadKey();
        }
    }

}

CASNotWorkingExample.exeこれをビルドし、「信頼されていない」ファイル共有の別のマシン (IP は 192.168.1.101) にexe を配置します。\\192.168.1.101\untrusted\CASNotWorkingExample.exe次に、「拒否」が返されることを期待して、を使用して非管理コマンドプロンプトから実行します。そうではありません。「許可」を返します。

Windows は、セキュリティが疑わしいリモート EXE を扱っていることを認識しています。スタート メニューの [ファイル名を指定して実行...] ダイアログから同じコマンドを実行すると、通常のセキュリティ警告「発行元を確認できませんでした。よろしいですか、など」が表示されます。そのため、exe がローカル マシンで実行されていると誤って考え、ゾーンの割り当てを誤っているわけではありません。

さらに、.NET 2.0 構成ツール ([Runtime Security Policy] を右クリックし、[Evaluate Assembly...] を選択) を使用してまったく同じ exe を見ると、.NET が Internet_Zone 権限のみをアセンブリに割り当てていることがわかります。 . これらのアクセス許可には、FileIOPermission は含まれません (Isolated Storage は独自のアクセス許可です)。

代替テキスト http://img5.imageshack.us/img5/2256/casperms.jpg

他の人には役立つかもしれないが、これまでのところ私にはなかったデータ:

  • MCTS 70-536 試験についてMS Pressの本を読んでいるときに、この問題に遭遇しました。第 11 章はすべて CAS に関するものです。レッスン 1 / 例 1 は、上で説明したように、私には失敗します。ここに表示されているのは、その簡略化された変形です。
  • このような EXE が実際にディスクに書き込めることを確認しました。つまり、IsGranted チェックはおそらく正しいでしょう。
  • 2 台のマシンは、Vista SP1 と WinXP を実行しています。どちらがクライアントでどちらがファイルサーバーであるかに関係なく、動作は同じであるため、Vista のものではありません。
  • 標準の非特権ユーザーとして実行する場合と管理者として実行する場合の動作は同じです。
  • AD ドメインで実行されていません。
  • クライアントとファイルサーバーで同じユーザー名とパスワードを使用net useするため、資格情報を提供するために使用する必要なくファイルにアクセスできます。

私はこれがそれらの「arrrgh」の瞬間の 1 つになると確信しています.何が欠けているのですか?

4

2 に答える 2

1

私はCASの第一人者ではありませんが、これは、ネットワーク共有からのコードを完全信頼として実行できるようにする.NET3.5SP1の変更が原因である可能性があります。

編集:Brad Abramsは、これを利用するために再コンパイル/ターゲットは必要ないと述べています。逆に同じように機能すると思います。マシンに3.5SP1がある場合、2.0をターゲットにしても古い動作は得られません。

これを利用するために、既存のアプリケーションを再コンパイルまたは変更する必要はありません。現在の2.0アプリケーションは正常に機能し、3.5で新しいものをターゲットにする必要はありません。

2.0 FXのみを使用した新規(VM)インストールでは、これを原因として根絶できる可能性があると思います。

于 2009-05-30T00:56:55.490 に答える
0

変更が機能する方法は、マネージド exe を起動するときに新しい証拠があることです。exe が wi​​n32 CreateProcess API から直接起動されると、マネージド exe に完全な信頼が与えられます。

もちろん、.net 構成ツールは exe を起動せず、検査するだけです。これは、エビデンスが異なり、割り当てられたコード グループに影響することを意味します。これは、権限に影響を与えます。

かなり紛らわしい。

詳細については、次を参照してください。

msdn ソーシャル

ブラッド・エイブラムスのブログ

于 2010-01-18T20:42:40.550 に答える