Co oznacza „* hasło ------------” w raporcie zakleszczenia profilu?

10

W SQL Server 2008 R2 dostałem kilka raportów zakleszczenia, które mają „* hasło ------------” w buforze wejściowym. Wygląda jak atak, ale w takim przypadku nie znam przyczyny ani rodzaju ataku.

(dziennik został wygenerowany przez eksperta DBA, który ma duże doświadczenie i powiedział mi to, a nie ja)

Czy ktoś wie co to jest? Dzięki!

Przykład:

<?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>
Diego Jancic
źródło

Odpowiedzi:

12

Oznacza to po prostu, że tekst instrukcji zawierał ciąg „hasło”, a program SQL Server „pomocnie” zamaskował go jako funkcję bezpieczeństwa, aby zapobiec wyświetlaniu hasła innej osoby.

Udało mi się to odtworzyć w następujący sposób

CREATE TABLE T(X varchar(1000))

Połączenie 1

BEGIN TRAN

INSERT INTO T VALUES('password1') 

WAITFOR DELAY '00:01:00'

SELECT * FROM T WHERE X = 'password2'

ROLLBACK

Połączenie 2

BEGIN TRAN

INSERT INTO T VALUES('password2') 

WAITFOR DELAY '00:01:00'

SELECT * FROM T WHERE X = 'password1'

ROLLBACK

Następnie pobieranie wykresu ze śledzenia zdarzeń rozszerzonych

Martin Smith
źródło
2
@DiegoJancic - To, czy jest to atak, czy nie, zależy od tego, czy oczekiwane są prawidłowe zapytania zawierające ten ciąg, czy nie. Jeśli nie masz żadnych nazw obiektów zawierających ten ciąg, być może może to oznaczać próbę wstrzyknięcia SQL.
Martin Smith,
Dzięki @MartinSmith, w moim przypadku nie jest to atak, mam tabelę użytkowników z polem hasła. Dzięki jeszcze raz! =)
Diego Jancic,
Czy istnieje sposób na wyłączenie tej funkcji?
jlb
1
@jlb - Nie jestem tego świadomy. Możesz zgłosić prośbę tutaj connect.microsoft.com/SQLServer/Feedback i być może dowiesz się, że jest jakiś sposób.
Martin Smith
@MartinSmith Pytałem na forach MSDN, a wszystkie odpowiedzi wskazują, że nie ma sposobu, aby wyłączyć tę funkcję.
jlb