Что означает «* пароль ------------» в отчете о взаимоблокировке профиля?

10

В SQL Server 2008 R2 я получил несколько отчетов о взаимоблокировках, в которых «* пароль ------------» во входном буфере. Это похоже на атаку, но в этом случае я не знаю причину или вид атаки.

(журнал был сгенерирован опытным администратором базы данных, поскольку имеет большой опыт и сказал мне это, а не я)

Кто-нибудь знает, что это? Спасибо!

Пример:

<?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

Это просто означает, что текст оператора содержал строку «пароль», а 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, в моем случае это не атака, у меня есть таблица пользователей с полем пароля. Еще раз спасибо! =)
Диего Янчич
Есть ли способ отключить эту функцию?
Jlb
1
@jlb - Не то, чтобы я знал. Вы можете подать запрос здесь connect.microsoft.com/SQLServer/Feedback и, возможно, вы обнаружите, что есть какой-то способ.
Мартин Смит
@MartinSmith Спросили на форумах MSDN, и все ответы указывают, что нет возможности отключить эту функцию.
Jlb