SQL 2005のインストールで無効にしたXP_CmdShellを実行する以外に、データベースに対するDBO権限を取得した悪意のあるユーザーは次のことを実行できます。
- 私のデータベースに、
- 私のサーバーに?
私は、誰かがDBOを取得して、アプリケーションで「最小特権」のユーザーアカウントを実行することを正当化するという最悪の場合のセキュリティリスクを評価しています。「機密データ」を扱っていないため、誰かがDBOを取得した場合の影響は最小限であると主張する人もいます。
SQL 2005のインストールで無効にしたXP_CmdShellを実行する以外に、データベースに対するDBO権限を取得した悪意のあるユーザーは次のことを実行できます。
私は、誰かがDBOを取得して、アプリケーションで「最小特権」のユーザーアカウントを実行することを正当化するという最悪の場合のセキュリティリスクを評価しています。「機密データ」を扱っていないため、誰かがDBOを取得した場合の影響は最小限であると主張する人もいます。
彼は任意のXP_sprocを実行できるため、レジストリを台無しにし、サーバー全体を台無しにすることができます。テーブルのドロップ/変更など...
dboはデータベース所有者です-これはsaである場合とそうでない場合があります。dboとして、基本的に所有するデータベースを自由に管理できます。明らかに、これにより、アクセス許可が変更されたり、テーブルが削除されたりする可能性があります。
saとして、あなたはサーバーを自由に支配することができます。これには、新しい拡張プロシージャ(または、CLRが有効になっている場合は.NETアセンブリ)のインストールと、dboが実行できるすべてのこと(すべてのデータベースに対して)が含まれます。また、 xp_cmdshellを再度有効にすることもできます。
SQLインジェクションに関する多くの情報がオンラインにあります。SQLに接続するユーザーの特権を制限することは、非常に重要な問題の1つです。
http://en.wikipedia.org/wiki/SQL_injection
これは私が数年前に遭遇した単純で恐ろしい例です。Webサイトは、URLを使用してその場でSQLステートを生成し、それらを実行します。私は次のようなURLを推測することができました
www.blah.com /.../ load.aspx?itemid = 1
このようなSQLを生成しました
SELECT *FROMアイテム(id = 1)
だから私はこのURLを送りました:
www.blah.com /.../ load.aspx?itemid=1;ドロップテーブルアイテム
バン。
少なくとも、DB接続がdboでなければ、これは失敗したでしょう。
率直に言えば、彼があなたのデータベースを所有している場合、彼はあなたのデータベースをpwnします。つまり、データに別れを告げることができます。
うん。典型的な防御策は、「まあ、少なくとも彼は自分のデータベース以外のものを台無しにすることはできない」です (xp_CmdShell は有効になっていません)。私、家の鍵のかかったクローゼットに狂犬の強姦犯がいるのは気が進まない。しかし、その類推は経営陣にうまく売り込めるものではありません。
つまり、データに別れを告げることができます。
しかし、ディスクとテープにバックアップがあるので、あなたは完璧です!