プロファイルデッドロックレポートで「* password ------------」はどういう意味ですか?


10

SQL Server 2008 R2では、入力バッファーに "* password ------------"が含まれるいくつかのデッドロックレポートが表示されました。それは攻撃のように見えますが、その場合、理由や攻撃の種類はわかりません。

(ログはエキスパートDBAがどのように多くの経験を持っているかによって生成され、私ではなく、私にそれを伝えました)

誰か知っていますか?ありがとう!

例:

<?xml version="1.0"?>
<blocked-process>
  <process id="process879948" taskpriority="0" logused="0" waitresource="KEY: 5:72057602473263104 (1d69201d0ba6)" waittime="5185" ownerId="88389135" transactionname="SELECT" lasttranstarted="2012-09-25T18:11:02.507" XDES="0x1f7d2a590" lockMode="S" schedulerid="2" kpid="4552" status="suspended" spid="86" sbid="2" ecid="0" priority="0" trancount="0" lastbatchstarted="2012-09-25T18:11:02.507" lastbatchcompleted="2012-09-25T18:11:02.507" lastattention="2012-09-25T18:07:35.740" clientapp=".Net SqlClient Data Provider" hostname="IP-xxxxxxxx" hostpid="4868" loginname="sa" isolationlevel="read committed (2)" xactid="88389135" currentdb="1" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
    <executionStack>
      <frame line="14" stmtstart="374" stmtend="764" sqlhandle="0x03000500dac2967f208e4000a19d00000000000000000000"/>
      <frame line="1" stmtstart="44" sqlhandle="0x02000000632f7e131f79ec7312284505961e537a61b81be7"/>
      <frame line="1" sqlhandle="0x000000000000000000000000000000000000000000000000"/>
    </executionStack>
    <inputbuf>

*password---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------   </inputbuf>
  </process>
</blocked-process>

回答:


12

これは、ステートメントのテキストに文字列「password」が含まれていて、SQL Serverがそれをセキュリティ機能としてマスクして、他の誰かのパスワードが表示されないようにすることを意味します。

これを次のように再現できました

CREATE TABLE T(X varchar(1000))

接続1

BEGIN TRAN

INSERT INTO T VALUES('password1') 

WAITFOR DELAY '00:01:00'

SELECT * FROM T WHERE X = 'password2'

ROLLBACK

接続2

BEGIN TRAN

INSERT INTO T VALUES('password2') 

WAITFOR DELAY '00:01:00'

SELECT * FROM T WHERE X = 'password1'

ROLLBACK

次に、拡張イベントトレースからグラフを取得します


2
@DiegoJancic-これが攻撃であるかどうかについては、正当なクエリにこの文字列が含まれることが予想されるかどうかによって異なります。この文字列を含むオブジェクト名がない場合は、SQLインジェクションの試みを示している可能性があります。
マーティン・スミス

@MartinSmithに感謝します。私の場合は攻撃ではありません。usersテーブルにpasswordフィールドがあります。再度、感謝します!=)
Diego Jancic 2012

この機能を無効にする方法はありますか?
jlb 2016年

1
@jlb-私が知っていることではありません。connect.microsoft.com/SQLServer/Feedbackでリクエストを出すことができますが、いくつかの方法があることがわかるでしょう。
マーティン・スミス

@MartinSmith MSDNフォーラムで質問しましたが、すべての返信で、この機能を無効にする方法はないと示されています。
jlb
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.