Detours nebo podobných technik může způsobit neočekávané chování systému SQL Server

Souhrn

Odborné pomoci společnosti Microsoft zjistila mnoho produktů jiných výrobců, které poskytují další funkce pro Microsoft SQL Server pomocí detours. Tyto jsou obvykle auditování funkce. Neexistuje žádný proces certifikace pro detours jiných aplikací společnosti Microsoft. Proto obecně, Microsoft důrazně odrazuje od používání detours.

Funkce používající detours nebo podobných technik pro změnu chování serveru SQL Server může způsobit následující problémy:
  • Problémy s výkonem
  • Nesprávné výsledky
  • Poškození disku a paměti
  • Ztráta odpovědi serveru SQL Server
  • Ukončení procesu neočekávané
  • Neschopnost používat standardní diagnostiky, jako je například funkce fn_get_sql a příkazu DBCC INPUTBUFFER
  • 100 % využití procesoru a dlouho databáze obnovení časy při použití tabulek OLTP v paměti na serveru SQL Server
Tyto stejné problémy mohou nastat, pokud používáte software jiných výrobců, například propojené servery, rozšířené procedury nebo objekty COM v procesu serveru SQL Server. Detours skryty DBA. Odhalit detour, je nutné použít postupy, které jsou popsány v následující části "Další informace". Propojené servery, objekty COM a rozšířené procedury mají explicitní registrace a definice rozhraní.

Poznámka: Společnost Microsoft neposkytuje skryté povahy detours a nedostatek publikované rozhraní služby odborné pomoci pro funkcí třetích stran, které používají detours nebo podobných technik. Stejně jako je odpovědný za vlastní propojený server nebo jiné přípustné je zodpovědný za podporu svého vlastního kódu třetí strany nasazení.

Je běžnou praxí v průběhu obvyklých problémů týkajících se služby podpory společnosti Microsoft na výzvu k zakázání nepotřebných úloh a k zakázání nebo odebrání součásti třetích stran a jiných, podobných technik. Microsoft se vždy pokusí zmenšit půdorys problému, zatímco identifikuje problém. Po vydání je označen jako nezávislých úloh nebo produkty jiných výrobců, tyto úlohy nebo produkty jiných výrobců může být dovezeno zpět do výroby.

To není náš záměr odhalit detour a potom zvažte instance SQL Server není podporován. Microsoft uznává, že některé implementace jsou nezbytné. Však Microsoft vyžaduje ověření podpory detours. Detour od renomované a důvěryhodné společnosti se jednoznačně liší od neočekávané detour, který používá virus. Microsoft není rozkaz nebo potvrdit tyto produkty jiných výrobců nebo interakce produkty jiných výrobců s produkty společnosti Microsoft a služeb. Místo toho jsou odpovědné identifikace a důvěryhodnost jejich produktů a služeb jiných dodavatelů. Pokud máte nějaké dotazy o jiných produktech a službách, prosím oslovení příslušné třetí strany. Společnost Microsoft není odpovědná za jakékoli problémy, které jsou způsobeny využívání jiných výrobců produktů nebo služeb v rámci serveru SQL Server.

Další informace

Detours nabízejí široké možnosti a riziko/odměna kompromis. Obvykle když detour jsou implementovány v SQL Server, kód třetí strany vpouští do prostoru procesu. Tato činnost může změnit chování serveru SQL Server.

Zde jsou některé příklad situace a možné vedlejší účinky:
  • Příchozí pakety síťové přenosy (TDS) jsou kontrolovány a změnit. Na kritické místo v podprocesu net_readdata sítě je přidána detour. I 100 cyklů procesoru na tomto místě může výrazně snížit propustnost sazby dávky.

    Změna skutečných dat TDS může vést k scribblers paměti. Tento problém vyvolal různé problémy se stabilitou serveru SQL Server a poškození dat. Paket TDS částečně měnit a znovu přehrát uvolňování paměti serveru SQL Server může způsobit problémy. Zařízení na této úrovni protokolování může vystavit hesel a dalších citlivých dat trasování je určen k potlačení a k zabezpečení serveru SQL.
  • Chcete-li změnit chování jsou detoured rutin pro analýzy serveru SQL Server. Možné vedlejší účinky jsou následující:
    • Provádění plánů neodpovídají skutečné dotazu text.
    • Příkaz bude odeslán pouze jednou z klienta. Nicméně je příkaz spuštěn vícekrát.
    • Výstup trasování se zobrazí původní příkaz namísto změněné dotaz.
    • Příkazu DBCC INPUTBUFFER ukazuje původní příkaz namísto změněné dotaz.
    • Funkce fn_get_sql zobrazuje nesprávná data. Funkce fn_get_sql je navíc náchylná, výjimky a nesprávné výsledky. Funkce fn_get_sql používá mnoho řešení monitorování a mohou způsobit problémy v řešení sledování.
    • Celkově může být přerušen uživatelského režimu Plánovač (UMS) a SQL Server operačního systému (SQLOS) plánování. To vede ke ztrátě odezvy serveru SQL Server, změny výkonu a výpadky.
  • Rozhraní Win32 API, které poskytují rozšířené funkce zabezpečení jsou detoured. V závislosti na implementaci může vystavit protokolování zařízení na této úrovni, hesla a další citlivé údaje. Celkově je přerušena UMS a SQLOS plánování. To vede ke ztrátě odpovědi serveru SQL a výpadky.
  • Změna funkce tabulek a přesměrování základní funkce serveru SQL Server nebo rozhraní API systému Windows nejsou podporovány v rámci procesu serveru SQL Server. To může vést k nestabilitě a neočekávané chování funkce serveru SQL Server.
Následující příklad ukazuje, že kernel32! GetQueuedCompletionStatus funkce má byla detoured.
MyDLL!MyGetQueuedCompletionStatusssnetlib!ConnectionReadAsyncWait

V sestavení pro funkce GetQueuedCompletionStatus byl první pokyn nahrazen instrukce skoku.
0:038> u kernel32!GetQueuedCompletionStatuskernel32!GetQueuedCompletionStatus 
77e660f1 e90a9f00aa jmp 21e70000 ß This points to an address that does not appear in the loaded module list (lm). It is injected code.
77e660f6 83ec10 sub esp,10h
Sestavení pro vloženého kódu ukazuje detoured aktivity a volání souboru MyDLL.
0:038> u 21e70000  
21e70000 55 push ebp
21e70001 8bec mov ebp,esp
21e70003 51 push ecx
21e70004 8b4518 mov eax,dword ptr [ebp+18h]
21e70007 50 push eax
21e70008 8b4d14 mov ecx,dword ptr [ebp+14h]
21e7000b 51 push ecx
21e7000c 8b5510 mov edx,dword ptr [ebp+10h]
21e7000f 52 push edx
21e70010 8b450c mov eax,dword ptr [ebp+0Ch]
21e70013 50 push eax
21e70014 8b4d08 mov ecx,dword ptr [ebp+8]
21e70017 51 push ecx
21e70018 e8234d19ee call MyDLL+0x4d40 (10004d40) <- Call to the MyDLL file.
21e7001d 8945fc mov dword ptr [ebp-4],eax
21e70020 8b55fc mov edx,dword ptr [ebp-4]


Můžete určit, zda jsou používány detours Debugging Tools for Windows. Chcete-li to provést, postupujte takto.

Poznámka: Vždy vyzkoušejte tuto metodu před pokusem ve výrobě. Použijete-li Debugging Tools for Windows, proces může zmrazit, pokud spustíte příkazy. Toto chování může nepříznivě ovlivnit provozní server.
  1. Připojit k serveru SQL Server Debugging Tools for Windows nebo načtení úplné uživatelského souboru výpisu stavu.
  2. Vydat následující příkaz ladicího programu. Tento příkaz kontroluje každý obraz bitovou kopii na disku k určení, zda byly injekčně detours.
    !for_each_module "!chkimg -v @#Base -d"
  3. Odpojte ladicí program.
K získání Debugging Tools for Windows, přejděte na následující web společnosti Microsoft:Je-li v paměti obrázek byl změněn, výstup může vypadat takto:
Comparison image path: c:\program files\microsoft sql server\mssql\binn\ssnetlib.dll\ssnetlib.dll
Scanning section: .text
Size: 56488
Range to scan: 0c261000-0c26eca8
0c263710-0c26371a 11 bytes - ssnetlib!ConnectionClose

[ 8b ff 55 8b ec 83 ec 10:68 00 00 00 00 e9 27 8a ]
0c2641e0-0c2641ea 11 bytes - ssnetlib!ConnectionReadAsync (+0xad0)

[ 8b ff 55 8b ec 83 ec 38:68 00 00 00 00 e9 00 7e ]
0c265160-0c26516a 11 bytes - ssnetlib!ConnectionWriteAsync (+0xf80)

[ 8b ff 55 8b ec 83 ec 28:68 00 00 00 00 e9 ba 70 ]
Total bytes compared: 56488(100%)
Number of errors: 33
33 errors : 0c260000 (0c263710-0c26516a)
Můžete zkontrolovat sestavení blíže více problém takto:
0:038> u ssnetlib!ConnectionClosessnetlib!ConnectionClose]:
0c263710 6800000000 push 0
0c263715 e9278ada03 jmp MyDLL!MyGetQueuedCompletionStatus <- A detour has been installed.


Antivirové programy, které sledují útoky prostřednictvím injektáže SQL můžete detour kód SQL Server. V tomto případě výstup! for_each_module "! Base @# chkimg - v -d" rozšíření se může zobrazit, že SQL Server funkce yyparse a ex_raise2 jsou změněny:

Comparison image path: <symbol file path>\sqlservr.exeRange to scan: c81000-3de7d48    ed71a8-ed71ad  6 bytes - sqlservr!yyparse  [ ff f5 41 54 41 55:e9 c7 95 5c 76 90 ]1202820-1202824  5 bytes - sqlservr!ex_raise2 (+0x32b678)  [ ff f3 57 41 54:e9 20 e0 29 76 ] Total bytes compared: 51801416(17%)Number of errors: 11 

Doporučujeme kontaktovat poskytovatele detours nebo podobných technik podrobné informace o způsobu použití detours v serveru SQL Server. Další informace o detours a podobné techniky naleznete na následujícím webu společnosti Microsoft Research Center:
Vlastnosti

ID článku: 920925 - Poslední kontrola: 16. 1. 2017 - Revize: 2

Váš názor