Exception DebugPOP SS - CVE-2018-8897 [Modérée] & CVE-2018-1087 [Importante]

Public Date: May 4, 2018, 09:37
Mis à jour October 24, 2024, 11:56 - Chinese, Simplified Anglais Japanese Korean
Resolved État
Important Impact

Insights vulnerability analysis

View exposed systems

Red Hat a été informé d'une vulnérabilité dans la façon dont le noyau Linux traite les exceptions déclenchées après les instructions POP SS et MOV vers SS. Ces problèmes peuvent aboutir à un refus de service pour les systèmes non patchés.

Ces instructions empêchent la transmission des exceptions des interruptions, points d'arrêt de données, et des exceptions «single step trap» jusqu'à la limite d'instruction qui suit la prochaine instruction. On identifie des problèmes séparés liés au noyau Linux et aux technologies KVM.

Informations générales

Les processeurs modernes fournissent une infrastructure de débogage, utilisée par les concepteurs de systèmes et les développeurs d'applications pour déboguer leurs logiciels. Elle inclut un ensemble de registres de débogage (DR0...DR7) et d'autres registres spécifiques aux machines ou MSR (Machine Specific Registers). Un utilisateur peut configurer ces registres pour surveiller les événements, y compris l'accès à la mémoire (en mode lecture ou écriture), l'exécution des instructions et l'accès aux ports d'E/S. Lorsqu'un tel événement se produit pendant l'exécution du programme, le processeur soulève une exception de débogage (#DB) pour transférer le contrôle d'exécution au logiciel de débogage (par exemple, gdb). Il intercepte alors l'exception de débogage et permet à un développeur d'examiner l'état d'exécution du programme. Par exemple, pour surveiller l'accès à la mémoire en lecture/écriture à l'adresse'0x4007c7', l'utilisateur stocke l'adresse'0x4007c7' dans l'un des registres de débogage DR0...DR3, et le processeur soulève une exception (#DB) lorsque l'on accède à l'emplacement mémoire'0x4007c7' pendant l'exécution du programme. Un tel mode d'adressage dans le registre de débogage s'appelle un Point d'arrêt ou Breakpoint.

        Mov %DR0, 0x4007c7

Généralement, les exceptions sont soulevées à la limite de l'instruction ; toutes les instructions qui précèdent celle qui cause l'exception sont autorisées à procéder, et que celle qui cause l'exception est bloquée, afin qu'elle puisse reprendre son exécution une fois que l'exception a été traitée. Dans les rares cas où l'instruction provoque un changement de tâche ou un changement de pile, ces exceptions sont soulevées après l'instruction ; notamment, l'instruction à l'origine de l'exception peut procéder, comme c'est le cas avec MOV SS ou POP SS.

Remerciements

Red Hat souhaite remercier Nick Peterson d'Everdox Tech LLC pour nous informer de CVE-2018-8897.
Red Hat souhaite également remercier Andy Lutomirski pour nous informer de CVE-2018-1087.

Produits concernés

Red Hat Product Security a évalué le problème de noyau (CVE-2018-8897) à un niveau d'impact de sécurité de catégorie Modéré.

Red Hat Product Security a évalué le problème KVM (CVE-2018-1087) à un niveau d'impact de sécurité de catégorie Important.

Les versions de produits Red Hat suivants sont concernées :

  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux Atomic Host
  • Red Hat Enterprise MRG 2

Description de l'attaque

Les changements de piles typiques sont composés de deux opérations : une pour télécharger le registre de sélection de segment « Segment Selector »(SS), et l'autre pour définir le registre des pointeurs de pile « Stack Pointer » (RSP), ainsi :

        Mov SS, [RAX]
        Mov RSP, RBP

Lors de la commutation de pile via les instructions MOV SS (ou POP SS) comme décrit ci-dessus, le processeur bloque la livraison de toutes les exceptions d'interruption et de débogage (#DB). Ceci est dû au fait que si une exception devait se produire après que le registre Segment Selector (SS) ait été chargé (mais avant que les registres Stack Pointer (RSP) soient positionnés correctement), le handler d'interruptions verrait un état de pile « non valide ». Ainsi, le processeur délivre des interruptions en attente et/ou des exceptions de débogage après la première instruction qui suit après que le commutateur de pile ait été exécuté.

Considérez maintenant qu'un point d'arrêt ait été défini sur l'emplacement mémoire ([RAX] ci-dessus) auquel l'instruction Mov SS a accédé pendant le changement de pile. Ce point d'arrêt générera une exception de point d'arrêt « Breakpoint exception » (#BP) après la commutation de pile. Maintenant, si la première instruction qui suit la commutation de pile est une instruction qui change le niveau de privilège actuel (CPL 3), comme SYSCALL, SYSENTER, INT3, etc., alors l'exception de point d'arrêt retardé (#BP) plus haut sera délivrée dans l'espace du noyau, ce qui peut entraîner une escalade des privilèges.

Pour l'hyperviseur KVM du noyau Linux, au cours de l'opération de changement de pile, le processeur n'a pas délivré les interruptions, ni les exceptions, qui ne sont délivrés qu'une fois que la première instruction a été exécutée, après que le changement de pile a eu lieu. Un utilisateur KVM invité non privilégié pourrait exploiter cette vulnérabilité pour faire échouer l'invité ou, potentiellement, escalader ses privilèges à l'invité.


Déterminer si votre système est vulnérable - À VENIR

Déterminez si votre système est vulnérable. Utilisez le script de détection pour déterminer si votre système est actuellement vulnérable à cette faille. Pour vérifier la légitimité du script, vous pouvez également télécharger la signature GPG détachée

Action

On conseille aux clients de Red Hat exécutant des versions de produits Red Hat affectés de les mettre à jour dès que les errata sont disponibles. Les clients sont priés d'appliquer les mises à jour qui conviennent immédiatement.


Mises à jour des produits concernés

ProduitPaquetAlerte/Mise à jour
Red Hat Enterprise Linux 7 (z-stream)noyauRHSA-2018: 1318
Red Hat Enterprise Linux 7kernel-rtRHSA-2018: 1355
Red Hat Enterprise Linux 7.4 Extended Update Support**noyauRHSA-2018: 1345
Red Hat Enterprise Linux 7.3 Extended Update Support**noyauRHSA-2018: 1348
Red Hat Enterprise Linux 7.2 Update Services for SAP Solutions, & Advanced Update Support***,****noyauRHSA-2018: 1347
Red Hat Enterprise Linux 6 (z-stream)noyauRHSA-2018: 1319
Red Hat Enterprise Linux 6.7 Extended Update Support**noyauRHSA-2018: 1346
Red Hat Enterprise Linux 6.6 Advanced Update Support***,****noyauRHSA-2018: 1351
Red Hat Enterprise Linux 6.5 Advanced Update Support***noyauRHSA-2018: 1350
Red Hat Enterprise Linux 6.4 Advanced Update Support***noyauRHSA-2018: 1349
Red Hat Enterprise Linux 5 Extended Lifecycle Support*noyauRHSA-2018: 1353
Red Hat Enterprise Linux 5.9 Advanced Update Support***noyauRHSA-2018: 1352
RHEL Atomic Hostnoyauen attente
Red Hat Enterprise MRG 2kernel-rtRHSA-2018: 1354


*Un abonnement ELS actif est exigé pour pouvoir accéder à ce correctif. Veuillezcontacter l'équipe de vente de Red Hat ou bien, votre représentant commercial particulier pour obtenir plus d'informations si votre compte n'a pas d'abonnement ELS actif.

**Un abonnement EUS actif est exigé pour pouvoir accéder à ce correctif. Veuillezcontacter l'équipe de vente de Red Hat ou bien, votre représentant commercial particulier, pour obtenir plus d'informations si votre compte n'a pas d'abonnement EUS actif.

Qu'est- ce qu'un abonnement Red Hat Enterprise Linux Extended Update Support  (EUS) ?

*Un abonnement AUS actif est exigé pour pouvoir accéder à ce correctif dans RHEL AUS.

Que signifie Support AUS (Advanced mission-critical Update Support) ou prise en charge de mises à jour avancées à mission critique ?

*Un abonnement TUS actif est exigé pour pouvoir accéder à ce correctif dans RHEL TUS.


Bien que les conteneurs Linux de Red Hat ne soient pas directement affectés par les problèmes du noyau, leur sécurité dépend de l'intégrité de l'environnement du noyau hôte. Red Hat vous recommande d'utiliser les versions les plus récentes de vos images de conteneurs. Le Container Health Index, qui fait partie du catalogue Red Hat Container, peut toujours être utilisé pour vérifier l'état de sécurité des conteneurs de Red Hat. Pour protéger les conteneurs utilisés, vous devrez vous assurer que l'hôte du conteneur a été mis à jour contre ces attaques. Red Hat a publié une mise à jour d'Atomic Host pour ce cas d'utilisation.

Mitigation

Il n'existe pas d'autre solution que d'appliquer les mises à jour du distributeur de logiciel.

Comments