Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

Des techniques similaires ou détours peuvent entraîner des comportements inattendus avec SQL Server

IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d’une traduction incorrecte du contenu ou de son utilisation par les clients.

La version anglaise de cet article est la suivante: 920925
Résumé
Prise en charge de Microsoft a rencontré de nombreux produits tiers qui utilisent des détours pour fournir des fonctionnalités supplémentaires à Microsoft SQL Server. Ceux-ci sont généralement l'audit des fonctionnalités. Il n'existe aucun processus de certification de détours tiers pour les applications Microsoft. Par conséquent, en règle générale, Microsoft déconseille fortement l'utilisation de détours.

Les fonctions qui utilisent des détours ou des techniques similaires pour modifier le comportement de SQL Server peuvent provoquer les problèmes suivants :
  • Problèmes de performances
  • Résultats incorrects
  • Corruption de disque et de mémoire
  • Perte de la réponse de SQL Server
  • Arrêt inattendu du processus
  • Impossibilité d'utiliser les utilitaires de diagnostic standard, comme la fonction fn_get_sql et la commande DBCC INPUTBUFFER
Vous pouvez rencontrer les mêmes problèmes lorsque vous utilisez un logiciel non-Microsoft comme serveurs liés, les procédures étendues ou des objets COM dans le processus SQL Server. Detours sont masqués DBA. Pour découvrir un détour, vous devez utiliser les techniques décrites dans la section « Informations complémentaires » qui suit. Serveurs liés, des objets COM et des procédures étendues ont inscription explicite et interfaces définies.

Remarque En raison de la nature de détours masquée et l'absence d'interfaces publiées, Microsoft ne fournit pas de services de prise en charge des fonctionnalités de tiers qui utilisent des techniques similaires ou des détours. Le tiers est responsable de la prise en charge de son propre code, tout comme il serait responsable de son propre serveur lié ou autres sanctionnée déploiement.

Il est courant, dans le cours habituel de dépannage pour le support technique Microsoft à vous inviter à désactiver les travaux non essentiels et à désactiver ou supprimer des composants tiers et autres techniques similaires. Microsoft essaie toujours de réduire l'encombrement du problème pendant qu'il consiste à identifier le problème. Une fois le problème identifié comme sans rapport avec les tâches ou les produits tiers, ces travaux ou des produits tiers peuvent être introduits dans la production.

Il n'est pas notre intention de découvrir un détour et envisagez de l'instance de SQL Server pour être pris en charge. Microsoft reconnaît que certaines implémentations sont nécessaires. Toutefois, Microsoft, vous devez valider la prise en charge des détours. Un détour provenant d'une société digne de confiance et un niveau de confiance est sans aucun doute différent d'un détour inattendu qui est utilisé par un virus. Microsoft ne garantit ni ne certifie ces produits tiers ou comment les produits tiers interagissent avec les produits et services Microsoft. Au lieu de cela, les fournisseurs tiers sont responsables de l'identification et la fiabilité de leurs produits et services. Si vous avez des questions sur les services et produits tiers, veuillez contacter le fabricant tiers applicable. Microsoft n'est pas responsable des problèmes provoqués par l'utilisation de produits tiers ou des services relatifs à SQL Server.
Plus d'informations
Detours fournissent des fonctionnalités améliorées et un compromis de risques/gratifications. En général, lorsqu'un détour est implémenté dans SQL Server, code tiers est injecté dans l'espace de processus. Cette activité peut modifier le comportement de SQL Server.

Voici quelques situations d'exemple et les éventuels effets secondaires :
  • Les paquets de trafic (TDS) réseau entrants sont analysés et modifiés. Le détour est ajouté à un emplacement sur le thread de processus net_readdata réseau critique. Même 100 cycles processeur à cet emplacement peuvent réduire de manière significative débit de fréquence de traitement par lots.

    Scribblers de mémoire peut entraîner une modification des données TDS réelles. Ce problème a déclenché plusieurs problèmes de stabilité de SQL Server et une altération des données. Problèmes peuvent entraîner un paquet TDS pour être partiellement modifiée et relecture garbage à SQL Server. Des fonctionnalités à ce niveau de consignation peuvent exposer les mots de passe et autres données sensibles que SQL Server tracing est conçu pour supprimer et pour aider à sécuriser.
  • Routines d'analyse de SQL Server sont detoured pour modifier le comportement. Effets secondaires possibles sont les suivantes :
    • Les plans d'exécution ne correspondent pas de texte de la requête réelle.
    • Une commande est soumise qu'une seule fois à partir du client. Toutefois, la commande est exécutée plusieurs fois.
    • Sortie de trace affiche la commande d'origine au lieu de la requête modifiée.
    • La commande DBCC INPUTBUFFER affiche la commande d'origine au lieu de la requête modifiée.
    • La fonction fn_get_sql n'affiche des données incorrectes. En outre, la fonction fn_get_sql est sensible à des exceptions et des résultats incorrects. La fonction fn_get_sql n'est utilisée par de nombreuses solutions de surveillance et peut provoquer des problèmes sur les solutions de contrôle.
    • Ensemble du Planificateur de Mode utilisateur (UMS) et de la planification du système d'exploitation de SQL Server (SQLOS) peuvent être interrompues. Cela conduit à une perte de réponse de SQL Server, à des modifications de performance et aux pannes.
  • API Win32 qui fournissent des fonctionnalités de sécurité améliorées sont detoured. Selon l'implémentation, les fonctions d'enregistrement à ce niveau peuvent exposer les mots de passe et autres données sensibles. Ensemble UMS et SQLOS la planification est interrompue. Cela conduit à une perte de réponse de SQL Server et aux pannes.
  • Modification des tables de fonction et en redirigeant les fonctions principales de SQL Server ou de l'API Windows ne sont pas pris en charge dans le processus SQL Server. Cela peut entraîner une instabilité et un comportement inattendu dans les fonctionnalités de SQL Server.
L'exemple suivant montre que le kernel32 !GetQueuedCompletionStatus fonction a été detoured.
MyDLL!MyGetQueuedCompletionStatusssnetlib!ConnectionReadAsyncWait
Dans l'assembly pour la fonction GetQueuedCompletionStatus , la première instruction a été remplacée par une instruction de saut.
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
L'assembly pour le code injecté indique l'activité detoured et un appel au fichier Ma_dll.
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]

Vous pouvez utiliser les outils de débogage pour Windows afin de déterminer si des détours sont utilisés. Pour ce faire, procédez comme suit.

Remarque Testez toujours cette méthode avant d'essayer d'elle dans la production. Lorsque vous utilisez les outils de débogage pour Windows, le processus peut se figer lorsque vous exécutez les commandes. Ce comportement peut affecter un serveur de production.
  1. Attacher des outils de débogage pour Windows à SQL Server, ou de charger un fichier de vidage utilisateur complet.
  2. Lancez la commande de débogueur suivantes. Cette commande inspecte chaque image par rapport à l'image sur le disque afin de déterminer si des détours ont été injectés.
    !for_each_module "!chkimg -v @#Base -d"
  3. Détacher le débogueur.
Pour obtenir les outils de débogage pour Windows, consultez le site Web Microsoft suivant : Si l'image en mémoire a été modifiée, la sortie peut ressembler au suivant :
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)
Vous pouvez examiner l'assembly à examiner plus en détail le problème comme suit :
0:038> u ssnetlib!ConnectionClosessnetlib!ConnectionClose]:0c263710 6800000000      push    00c263715 e9278ada03      jmp     MyDLL!MyGetQueuedCompletionStatus  <- A detour has been installed.

Les programmes antivirus qui effectuent le suivi des attaques de type injection SQL peuvent detour code de SQL Server. Dans ce scénario, la sortie de la! for_each_module "! chkimg - v @# de Base -d" extension peut indiquer que le SQL Server fonctions yyparse et ex_raise2 sont modifiés :

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

Nous vous conseillons de contacter le fournisseur des détours ou des techniques similaires pour des informations détaillées sur comment il utilise les detours dans SQL Server. Pour plus d'informations sur détours et des techniques similaires, accédez au site Web de Microsoft Research Center suivant :

Avertissement : cet article a été traduit automatiquement

Propriétés

ID d'article : 920925 - Dernière mise à jour : 03/20/2015 19:19:00 - Révision : 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 Édition Personelle, Microsoft SQL Server 2000 Standard, Microsoft SQL Server 2000 Workgroup Edition, Microsoft SQL Server 2000 Édition Développeur, Microsoft SQL Server 2000 Édition Entreprise, 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 KbMtfr
Commentaires
.clickstreamTracker.init();