SQL Server no admite el uso de desvíos de terceros o técnicas similares

Seleccione idioma Seleccione idioma
Id. de artículo: 920925 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

Las características que utilizan desvíos o técnicas similares para cambiar el comportamiento de Microsoft SQL Server pueden causar los siguientes problemas:
  • Problemas de rendimiento
  • Resultados incorrectos
  • Corrupción de memoria y de disco
  • Pérdida de respuesta de SQL Server
  • Finalización de proceso inesperada
  • Incapacidad para utilizar los diagnósticos del estándar, tales como la función fn_get_sql y el comando DBCC INPUTBUFFER
  • Mayores posibilidades de problemas de seguridad
Nota Microsoft no proporciona servicios de soporte para las características de otros fabricantes que utilizan desvíos o técnicas similares para cambiar el comportamiento de SQL Server. Si trabaja con los servicios de soporte técnico de SQL Server en un problema de SQL Server, y se identifica que pueden estar implicadas desvíos o técnicas similares que cambian el comportamiento de SQL Server, el profesional de soporte técnico le preguntará para deshabilitar o quitar tales desvíos o características similares como un paso de solución de problemas. Antes de que pueda producir la solución de problemas adicionales, el problema debe reproducirse sin ninguna funcionalidad de desvío actual. Si el problema ya no ocurre, Microsoft puede recomendar que ponerse en contacto con el proveedor para la característica de terceros y continúe con la dirección de ese proveedor.

Más información

Desvíos son eficaces. Desvíos proporcionan capacidades mejoradas y un equilibrio de riesgos/recompensa. Normalmente, cuando se implementa un desvío en SQL Server, se inserta el código aplicable en el espacio de proceso. Interceptan las funciones o métodos de SQL Server. Esta actividad puede cambiar el comportamiento básico del rendimiento de SQL Server.

Las siguientes son algunas situaciones de ejemplo y los efectos secundarios posibles:
  • Los paquetes entrantes (TDS) el tráfico de red son analizados y cambiar. Se agrega el desvío en una ubicación crítica en el subproceso de red net_readdata. Incluso algunos 100 ciclos de CPU en esta ubicación pueden reducir significativamente el rendimiento de la velocidad de proceso por lotes.

    Escribientes de memoria puede provocar un cambio en los datos reales de TDS. Este problema ha desencadenado varios problemas de estabilidad de SQL Server y dañar los datos. Problemas pueden provocar un paquete TDS cambiar parcialmente y reproducir la basura para SQL Server. Servicios en este nivel de registro pueden exponer las contraseñas y otros datos confidenciales que SQL Server traza está diseñado para suprimir y para ayudar a proteger.
  • Rutinas de análisis de SQL Server se ha desviado para cambiar el comportamiento. Los siguientes son los efectos secundarios posibles:
    • Los planes de ejecución no coinciden con el texto de la consulta actual.
    • Se envía un comando sólo una vez desde el cliente. Sin embargo, el comando se ejecuta varias veces.
    • Resultados de seguimiento muestran el comando original en lugar de la consulta modificada.
    • El comando DBCC INPUTBUFFER muestra el comando original en lugar de la consulta modificada.
    • La función fn_get_sql muestra datos incorrectos. Además, la función fn_get_sql es susceptible a las excepciones y resultados incorrectos. La función fn_get_sql es utilizada por muchas soluciones de supervisión y puede provocar problemas en las soluciones de supervisión.
    • En general pueden interrumpirse programador de modo usuario (UMS) y programar el sistema operativo de SQL Server (SQLOS). Esto lleva a la pérdida de respuesta de SQL Server, los cambios de rendimiento y las interrupciones.
  • Se ha desviado las API de Win32 que proporcionan características de seguridad mejoradas. Dependiendo de la implementación, los servicios de registro en este nivel podrían exponer las contraseñas y otros datos confidenciales. En general se interrumpe UMS y SQLOS de la programación. Esto lleva a la pérdida de respuesta de SQL Server y a las interrupciones.
  • Modificar tablas de función y redirigir las funciones de SQL Server core o la API de Windows no se admiten en el proceso de SQL Server. Esto puede llevar a inestabilidad y un comportamiento inesperado en la funcionalidad de SQL Server.
En el ejemplo siguiente se muestra la kernel32 !GetQueuedCompletionStatus se ha desviado la función.
MyDLL!MyGetQueuedCompletionStatus
ssnetlib!ConnectionReadAsyncWait
En el ensamblado de la función GetQueuedCompletionStatus , la primera instrucción se ha reemplazado con una instrucción de salto.
0:038> u kernel32!GetQueuedCompletionStatus
kernel32!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
El ensamblado para el código insertado muestra la actividad de detoured y una llamada al archivo 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]

Puede utilizar herramientas de depuración para Windows para determinar si se están utilizando los desvíos. Para ello, siga estos pasos.

Nota Pruebe siempre este método antes de intentar en producción. Cuando utiliza herramientas de depuración para Windows, el proceso puede inmovilizar al ejecutar los comandos. Este comportamiento puede afectar negativamente a un servidor de producción.
  1. Adjuntar Debugging Tools for Windows a SQL Server, o cargar un archivo de volcado de usuario completo.
  2. Ejecute el siguiente comando de depurador. Este comando inspecciona cada imagen con la imagen de disco para determinar si han sido insertados desvíos.
    !for_each_module "!chkimg -v @#Base -d"
  3. Desconectar al depurador.
Para obtener herramientas de depuración para Windows, visite el siguiente sitio Web de Microsoft:
http://www.Microsoft.com/whdc/devtools/debugging/default.mspx
Si se ha modificado la imagen en la memoria, el resultado sería similar al siguiente:
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)
Puede revisar el ensamblado que se va a examinar más de cerca la cuestión, como sigue:
0:038> u ssnetlib!ConnectionClose
ssnetlib!ConnectionClose]:
0c263710 6800000000      push    0
0c263715 e9278ada03      jmp     MyDLL!MyGetQueuedCompletionStatus  <- A detour has been installed.

Los programas antivirus que realizan el seguimiento de los ataques de inyección de SQL pueden desvío código de SQL Server. En este escenario, el resultado de la! for_each_module "! chkimg - v @# Base -d" extensión puede mostrar que el SQL Server las funciones yyparse y ex_raise2 se modifican:

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

Se recomienda que en contacto con el proveedor de los desvíos o de las técnicas similares para obtener información sobre cómo utilizar los desvíos o técnicas similares en SQL Server. Para obtener más información acerca de desvíos y técnicas similares, visite el siguiente sitio Web del centro de investigación de Microsoft:
http://Research.Microsoft.com/sn/Detours

Propiedades

Id. de artículo: 920925 - Última revisión: martes, 10 de diciembre de 2013 - Versión: 2.0
La información de este artículo se refiere a:
  • 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
Palabras clave: 
kbtshoot kbexpertiseadvanced kbinfo kbmt KB920925 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 920925

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com