Les changements rapides de titre de fenêtre provoquent un «écran blanc de la mort»

ice

L’expérimentation des caractères d’échappement ANSI sur les émulateurs de terminaux a conduit à la découverte de plusieurs vulnérabilités DoS (déni de service) de haute gravité sur les terminaux Windows et les navigateurs Web Chrome.

Eviatar Gerzi, chercheur en sécurité chez CyberArk, a testé diverses voies d’abus potentielles basées sur un ancien avis de 2003 sur l’exécution de code via des modifications de titre de fenêtre et découvert un moyen d’induire des changements rapides de titre de fenêtre sur PuTTY.

Cette attaque atypique a fait entrer la machine de test dans un état connu sous le nom d’« écran blanc de la mort », où tout se fige à l’exception du curseur de la souris.

Après avoir testé une attaque similaire sur une application locale, le système est entré immédiatement dans WSOD en raison de la surcharge du noyau du système d’exploitation avec des appels.

Appels accablant le noyau du système
Appels accablant le noyau du système
Source : CyberArk

La fonction maltraitée est ‘SetWindowText,’ qui permet de changer le texte de la barre de titre de la fenêtre spécifiée.

Le seul moyen de sortir de l’état WSOD est de redémarrer l’ordinateur, donc cette astuce simple peut conduire à un état DoS sur une gamme d’applications.

Fonction SetWindowText dans PuTTY
Fonction SetWindowText dans PuTTY
Source : CyberArk

Comme le chercheur précise, ‘SetWindowText’ n’est pas le seul levier possible pour les raccrochages, comme cela a été découvert dans le cas de MobaXterm.

Dans l’un des cas, j’ai testé le terminal MobaXterm et j’ai été surpris qu’il n’utilise pas la fonction SetWindowText pour changer le titre de la fenêtre mais plutôt une fonction nommée GdipDrawString.

La chose intéressante dans ce cas est que cela n’a pas affecté l’ensemble de l’ordinateur comme SetWindowText. Cela n’a affecté que l’application, qui a finalement planté.

Gerzi a confirmé que les terminaux Windows suivants sont affectés par un problème de DoS :

  • Mastic – CVE-2021-33500 (gèle tout l’ordinateur), corrigé dans la version 0.75
  • MobaXterm – CVE-2021-28847 (gèle uniquement l’application), corrigé dans la version 21.0 preview 3
  • MinTTY (et Cygwin) – CVE-2021-28848 (gèle tout l’ordinateur), corrigé dans la version 3.4.6
  • Git – utilise MinTTY, corrigé dans la version 2.30.1
  • ZOC – CVE-2021-32198 (ne fige que l’application), pas de correctif
  • XSHELL – CVE-2021-42095 (gèle tout l’ordinateur), corrigé dans la version 7.0.0.76

L’essayer sur les navigateurs Web

Réalisant que presque toutes les applications GUI utilisent la fonction SetWindowText, le chercheur a tenté l’attaque contre les navigateurs Web populaires tels que Chrome.

Il a créé un fichier HTML qui ferait changer rapidement le titre dans une boucle infinie, forçant le navigateur à se figer.

Le même comportement a été remarqué dans Edge, Torch, Maxthon, Opera et Vivaldi, tous les navigateurs basés sur Chromium. Bien que Firefox et Internet Explorer y soient immunisés, ils subissent tout de même un impact sur les performances.

Surveillance des appels de fonction sur Edge
Surveillance des appels de fonction sur Edge
Source : CyberArk

Dans tous les cas cependant, le système d’exploitation sous-jacent n’est pas affecté car les navigateurs modernes sont basés sur des bacs à sable.

Cependant, lors de la tentative d’attaque du navigateur à l’intérieur d’une machine virtuelle, un problème d’épuisement des ressources s’est produit, provoquant l’affichage d’un « écran bleu de la mort ».

BSOD lors du test de DoS sur une machine virtuelle
BSOD lors du test de DoS sur une machine virtuelle
Source : CyberArk

Réponse des vendeurs

Le chercheur note que les applications affectées par cette attaque pourraient être n’importe quoi utilisant SetWindowText ou GdipDrawString, donc les applications ci-dessus ne sont qu’un échantillon du logiciel affecté.

Certaines applications comme Slack, par exemple, disposent d’un limiteur de débit sur les appels des fonctions, elles sont donc résilientes à ce type d’attaques DoS.

Le limiteur de Slack arrête l'attaque après seulement trois appels
Le limiteur de Slack arrête l’attaque après seulement trois appels
Source : CyberArk

Gerzi a contacté les fournisseurs concernés et a reçu les réponses suivantes :

Google : les problèmes de DoS sont traités comme des problèmes d’abus ou de stabilité plutôt que comme des vulnérabilités de sécurité. Remarque : le problème n’est pas observé sur Mac mais est observé sur Linux. Nous avons réexaminé le problème. Nous n’avons pas pu reproduire le crash dans les dernières versions de WS 16.1.2 build-17966106 et Chrome 92.0.4515.131. Nous pensons que le comportement que vous avez observé peut dépendre de la version de chrome utilisée, car nous n’avons vu aucun problème de BSOD de notre côté. Par conséquent, nous considérons qu’il ne s’agit pas d’un bug.

Vivaldi : il s’agit d’une limitation de conception de Windows 10 ; il ne limite pas l’utilisation de la mémoire de l’application et utilise simplement le fichier d’échange (mémoire virtuelle) lorsqu’il manque de RAM. Ceci est plus lent à répondre car il doit être lu à partir du disque.

Microsoft : Notre équipe a réussi à reproduire ce problème, mais il ne répond pas à notre barre de service avec une mise à jour de sécurité immédiate. Bien que cela entraîne une condition de déni de service, cela ne peut être déclenché que localement et résulte de l’épuisement des ressources. Un attaquant ne serait pas en mesure de déclencher des conditions vulnérables supplémentaires ou de récupérer des informations qui seraient bénéfiques dans d’autres attaques sur le système. Nous allons clore ce dossier, mais nous avons ouvert un bug avec notre équipe de développement, et ils pourraient envisager de résoudre ce problème dans une future version de Windows.

En réponse à ce qui précède, le chercheur précise qu’il est possible de déclencher l’attaque à distance en créant un fichier malveillant sur un serveur distant et en l’ouvrant depuis un terminal vulnérable.