Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Detours hoặc kỹ thuật tương tự có thể gây ra hành vi không mong muốn với SQL Server

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

920925
Tóm tắt
Hỗ trợ của Microsoft đã gặp nhiều sản phẩm của bên thứ ba sử dụng detours cung cấp chức năng bổ sung cho Microsoft SQL Server. Điều này thường kiểm tra chức năng. Không có quá trình chứng nhận cho bên thứ ba detours cho ứng dụng của Microsoft. Do đó, thông thường, Microsoft khuyên bạn không nên sử dụng detours.

Tính năng sử dụng detours hoặc tương tự như kỹ thuật để thay đổi hành vi của SQL Server có thể gây ra các vấn đề sau:
  • Vấn đề hiệu suất
  • Kết quả chính xác
  • Đĩa và bộ nhớ hỏng
  • Mất SQL Server đáp ứng
  • Kết thúc tiến trình không mong muốn
  • Không thể sử dụng tiêu chuẩn chẩn đoán, chẳng hạn như các chức năng fn_get_sql và lệnh DBCC INPUTBUFFER
Bạn có thể gặp phải các sự cố tương tự khi bạn đang sử dụng phần mềm Microsoft như máy chủ được liên kết, mở rộng quy trình hoặc COM các đối tượng trong quá trình SQL Server. Detours được ẩn từ DBA. Để phát hiện ra một đường vòng, bạn phải sử dụng các kỹ thuật được mô tả trong phần "Thông tin" sau. Máy chủ được liên kết, đối tượng COM, mở rộng quy trình có rõ ràng kiểm nhập và định nghĩa giao diện.

Lưu ý: Bởi ẩn của detours và thiếu giao diện đã phát hành, Microsoft không nhà cung cấp bản ghi dịch vụ hỗ trợ cho các tính năng của bên thứ ba sử dụng detours hoặc kỹ thuật tương tự. Bên thứ ba có trách nhiệm hỗ trợ mã riêng của mình, cũng như nó sẽ chịu trách nhiệm đối với máy chủ được liên kết hoặc khác xử phạt triển khai.

Đó là phổ biến nhất, trong trình khắc phục sự cố cho bản ghi dịch vụ hỗ trợ của Microsoft để yêu cầu bạn vô hiệu hoá việc không thiết yếu và vô hiệu hoá hoặc loại bỏ cấu phần của bên thứ ba và các kỹ thuật khác, tương tự như bình thường. Microsoft luôn cố gắng giảm môi trường của các vấn đề khi nó xác định vấn đề. Sau khi vấn đề được xác định là không liên quan đến công việc hoặc sản phẩm của bên thứ ba, các công việc hoặc sản phẩm của bên thứ ba có thể được giới thiệu vào sản xuất.

Nó không phải là mục đích của chúng tôi để phát hiện ra một đường vòng, sau đó xem xét trường hợp của SQL Server được hỗ trợ. Microsoft thừa nhận rằng việc triển khai một số là cần thiết. Tuy nhiên, Microsoft yêu cầu bạn xác nhận biết những detours. Rẽ từ một công ty có uy tín và đáng tin cậy là chắc chắn khác nhau từ một đường vòng bất ngờ được vi-rút. Microsoft không bảo đảm hoặc xác nhận các sản phẩm của bên thứ ba hoặc cách sản phẩm của bên thứ ba tương tác với Microsoft sản phẩm và bản ghi dịch vụ. Thay vào đó, nhà cung cấp bên thứ ba có trách nhiệm xác định và tin cậy của các sản phẩm và bản ghi dịch vụ. Nếu bạn có thắc mắc về sản phẩm của bên thứ ba, xin vui lòng tiếp cận với những thứ phù hợp. Microsoft không chịu trách nhiệm đối với bất kỳ sự cố nào do việc sử dụng sản phẩm của bên thứ ba hoặc các dịch vụ đã kết nối với SQL Server.
Thông tin thêm
Detours cung cấp khả năng nâng cao và cân bằng rủi ro/thưởng. Thông thường, khi thực hiện một đường vòng trong SQL Server, bên thứ ba được chèn vào không gian xử lý. Hoạt động này có thể thay đổi hành vi của SQL Server.

Sau đây là một số ví dụ trường hợp và có thể tác:
  • Các gói dữ liệu lưu lượng truy cập (TDS) mạng quét và thay đổi. Lựa chọn kép được thêm vào một vị trí quan trọng net_readdata mạng trình luồng. Chu kỳ CPU thậm chí 100 ở vị trí này có thể làm giảm đáng kể thực thi tốc độ thông qua.

    Thay đổi dữ liệu TDS thực tế có thể dẫn đến bộ nhớ scribblers. Vấn đề này đã gây ra các vấn đề ổn định của SQL Server và dữ liệu bị hỏng. Vấn đề có thể gây ra một gói TDS phần thay đổi và phát lại rác với SQL Server. Ghi nhật ký cơ sở ở cấp độ này có thể lộ mật khẩu và các dữ liệu nhạy cảm máy chủ SQL đó theo dõi được thiết kế để ngăn chặn và giúp bảo vệ.
  • Công việc phân tích cú pháp SQL Server được giải để thay đổi hành vi. Sau đây là các tác:
    • Thực hiện kế hoạch phù hợp với truy vấn thực văn bản.
    • Lệnh được gửi chỉ một thời gian từ máy tính khách. Tuy nhiên, các lệnh được thực hiện nhiều lần.
    • Theo dõi kết quả hiển thị lệnh ban đầu thay vì truy vấn thay đổi.
    • Lệnh DBCC INPUTBUFFER Hiển thị lệnh ban đầu thay vì truy vấn thay đổi.
    • Chức năng fn_get_sql Hiển thị dữ liệu không đúng. Ngoài ra, các chức năng fn_get_sql là bị ngoại lệ và kết quả chính xác. Chức năng fn_get_sql được sử dụng nhiều các giải pháp giám sát và có thể gây ra vấn đề về giải pháp giám sát.
    • Nói chung người sử dụng chế độ lịch (UMS) và lập kế hoạch SQL Server hệ điều hành (SQLOS) có thể bị gián đoạn. Điều này dẫn mất SQL Server đáp ứng, để thực hiện thay đổi và sự cố mất điện.
  • Win32 API cung cấp tính năng bảo mật nâng cao được giải. Tuỳ thuộc vào việc thực hiện, ghi nhật ký cơ sở ở cấp độ này có thể lộ mật khẩu và các dữ liệu nhạy cảm. Nói chung, UMS và SQLOS lập kế hoạch bị gián đoạn. Điều này dẫn mất SQL Server đáp ứng và không hoạt động.
  • Thay đổi chức năng bảng và chuyển hướng cốt lõi SQL Server chức năng hoặc Windows API không được hỗ trợ trong quá trình SQL Server. Điều này có thể dẫn đến sự mất ổn định và hành vi không mong muốn chức năng SQL Server.
Ví dụ sau cho thấy rằng kernel32!GetQueuedCompletionStatus chức năng giải.
MyDLL!MyGetQueuedCompletionStatusssnetlib!ConnectionReadAsyncWait
Hội hàm GetQueuedCompletionStatus , hướng dẫn đầu tiên đã được thay thế bằng một bước hướng dẫn.
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
Chi tiết tiêm mã Hiển thị cuộc gọi tới tệp MyDLL và hoạt động detoured.
0:038> u 21e70000  21e70000 55              push    ebp21e70001 8bec            mov     ebp,esp21e70003 51              push    ecx21e70004 8b4518          mov     eax,dword ptr [ebp+18h]21e70007 50              push    eax21e70008 8b4d14          mov     ecx,dword ptr [ebp+14h]21e7000b 51              push    ecx21e7000c 8b5510          mov     edx,dword ptr [ebp+10h]21e7000f 52              push    edx21e70010 8b450c          mov     eax,dword ptr [ebp+0Ch]21e70013 50              push    eax21e70014 8b4d08          mov     ecx,dword ptr [ebp+8]21e70017 51              push    ecx21e70018 e8234d19ee      call   MyDLL+0x4d40 (10004d40)   <- Call to the MyDLL file.21e7001d 8945fc          mov     dword ptr [ebp-4],eax21e70020 8b55fc          mov     edx,dword ptr [ebp-4]

Bạn có thể sử dụng gỡ lỗi Tools for Windows để xác định xem detours đang được sử dụng. Để thực hiện việc này, hãy làm theo các bước sau.

Lưu ý: Luôn kiểm tra phương pháp này trước khi bạn cố gắng sản xuất. Khi bạn sử dụng gỡ lỗi công cụ dành cho Windows, quá trình có thể đóng băng khi bạn chạy lệnh. Hành vi này có thể ảnh hưởng đến máy chủ sản xuất.
  1. Đính kèm Debugging Tools for Windows với SQL Server hoặc tải tệp kết xuất đầy đủ người dùng.
  2. Vấn đề lệnh trình gỡ lỗi. Lệnh này kiểm tra mỗi hình ảnh với hình ảnh trên đĩa để xác định xem detours đã được chèn.
    !for_each_module "!chkimg -v @#Base -d"
  3. Tách trình gỡ lỗi.
Để có được gỡ lỗi công cụ dành cho Windows, hãy truy cập website sau của Microsoft: Nếu hình ảnh trong bộ nhớ được thay đổi, kết quả có thể giống như sau:
Comparison image path: c:\program files\microsoft sql server\mssql\binn\ssnetlib.dll\ssnetlib.dllScanning section:    .textSize: 56488Range to scan: 0c261000-0c26eca80c263710-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: 3333 errors : 0c260000 (0c263710-0c26516a)
Bạn có thể xem chi tiết để xem chi tiết sự cố như sau:
0:038> u ssnetlib!ConnectionClosessnetlib!ConnectionClose]:0c263710 6800000000      push    00c263715 e9278ada03      jmp     MyDLL!MyGetQueuedCompletionStatus  <- A detour has been installed.

Chương trình chống vi-rút theo dõi SQL tiêm tấn công có thể rẽ mã máy chủ SQL. Trong trường hợp này, đầu ra của các! for_each_module "! chkimg - v @#Base -d" phần mở rộng có thể cho SQL Server chức năng yyparseex_raise2 được sửa đổi:

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

Chúng tôi khuyên bạn nên liên hệ với nhà cung cấp detours hoặc tương tự như kỹ thuật cho các thông tin chi tiết về cách sử dụng các detours trong SQL Server. Để biết thêm chi tiết về detours và kỹ thuật tương tự, hãy truy cập website sau của Microsoft Research Center:

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 920925 - Xem lại Lần cuối: 03/20/2015 22:19:00 - Bản sửa đổi: 4.0

  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Express Edition with Advanced Services
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium-based Systems
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium-based Systems
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • SQL Server 2012 Enterprise Core
  • Microsoft SQL Server 2014 Developer
  • Microsoft SQL Server 2014 Enterprise
  • Microsoft SQL Server 2014 Express
  • Microsoft SQL Server 2014 Standard
  • Microsoft SQL Server 2014 Web
  • kbtshoot kbexpertiseadvanced kbinfo kbmt KB920925 KbMtvi
Phản hồi