Pré requis de lecture 

 

 

 

 

tps3 

 

 

 

L’annonce de VMware sur la désactivation du TPS par défaut dans les builds à partir de Décembre 2014, a fait couler pas mal de lignes sur les blogs mais suite aux différentes recherches, cela reste tout de même assez confus.

 

Nous souhaitons donc revenir légèrement dessus.

 

 

 

 

Avant tout un peu de lexique :

 

 

TPS (Transparent Page Sharing)

 

tps

 

 

 

TPS est le mécanisme VMware qui permet de mutualiser les pages mémoires générées par les VMs sur le même ESX.

Si plusieurs OS similaires tournent sur le même Host, il est très probable que les VMs aient de nombreuses empreintes mémoires identiques. Au lieu de multiplier les pages mémoires, TPS les scan toutes les 60 secondes et il les fait pointer vers une unique sur la RAM Hardware.

 

TPS Intra-VM (Toujours activer par défaut)
Pages mémoires identiques sur la même VMs

TPS Inter-VM
Pages mémoires identiques entres VMs

 

 

 

Exploit AES

C’est un hack découvert, permettant quand 2 VMs partagent la même page mémoire sous certaines conditions très spécifiques, de casser l’encryption AES de la clef et ainsi accéder à la machine cible depuis une autre machine d’un même ESXi.

Concernant les conditions très spécifiques, nos 2 vSavants d’hypervisor ont dépouillés les bulletins de sécurités avec test de performances  avec et sans TPS.

A voir : http://www.hypervisor.fr/?p=5298

 

 

 

Salting :

C’est un mécanisme apparu chez VMware très récemment, depuis les updates :

 

 

Grosso modo, une grande partie des utilisateurs, par simplicité, utilisent des mots de passes communs (azerty, p@ssw0rd, ….). Ceux-ci sont attachés à un hash code.

Les hackers ont un dictionnaire de mot de passe commun avec hash correspondant, et comparent donc ce dernier avec ceux de l’utilisateur. Si c’est le même Bingo, ils peuvent craquer le password.

Le salting permet de faire d’un mot de passe commun un non commun, en y ajoutant des données ce qui génère un hash aléatoire donc différents des dictionnaires de password des hackers.

 

 

 

Le problème

Par mesure de sécurité VMware a donc décidé de désactiver par défaut le TPS depuis les derniers Update d’ESXi.

Ainsi l’un des mécanismes rois de VMware se retrouve non fonctionnel.

VMware afin de se dédouaner invite les admins à l’activer manuellement.

 

 

Donc suite aux passages des updates ESXi, plusieurs problèmes peuvent apparaître :

  • Montée en charge de la consommation dans les clusters de la mémoire utilisée, car elle n’est plus partagée, et ceux immédiatement après update.
  • Les Designers d’infrastructures compte toujours lors du sizing les 20 – 30% de consommation RAM à la baisse, donc calculs à revoir selon le contexte.
  • Une gestion plus fine des VMs, car il faut voir quelles sont les populations de VMs VIP qui ne doivent en aucun cas être confrontées a cette faille.
  • Des discutions interminables inter-service

 

 

Résumé

Il n’y a pas de règle générale à appliquer, c’est au cas par cas selon les infrastructures.

Les fournisseurs de cloud public auront du mal à vendre cette faille comme une normalité à leurs clients.
Les cahiers des charges et SLA sont généralement clairs qu’aucune faille de sécurité connue est tolérable, le TPS sera donc à bannir.

Pour les environnements de prod maîtrisés où des applications non sensibles sont hébergées et les environnements VDI, la perte de ressources VS risques,  peut être démesuré.

 

 

 

 

Contrôle

 

Pour contrôler le fonctionnement des différents mécanismes de récupération de RAM faire:

  1. Démarrer ESXTOP dans la console de l’ESXi , Passez en mode mémoire en appuyant sur “m"
  2. ‘free’ de ‘PMEM /MB’ donne la mémoire disponible dans l’ESXi
  3. ‘curr’ de ‘MEMCTL/MB’ Total mémoire balloonée.
  4. ‘curr’ de ‘SWAP/MB’ donne la mémoire swappée.
  5. Dans notre contexte voir ‘PSHARE’, mais plus précisément ‘saving’ qui est le total de la mémoire sauvée via TPS

 

 

 

Réactivation ou désactivation du TPS

 

ScreenHunter_192 Apr. 01 11.27

KB 2097593

 

 

Pour Activer / désactiver le TPS il faut Activer ou désactiver le Salting sur un ESXi

  1. Connectez vous au vCenter ou ESXi
  2. Sur l’ESXi cible
  3. Configuration => Advanced Settings
  4. Dans Advanced Settings => Mem.
  5. Recherchez Mem.ShareForceSalting et passer la valeur à 0 pour réactiver TPS
  6. OK.
  7. Pour activer le changement:
    • Migrer les VMs vers un autre host puis les repasser sur l’ESXi d’origine
    • OU
    • Éteindre et allumer les VMs.

 

 

Pour désactiver le TPS pour une VM spécifique

  1. Éteindre la VM a désactiver le TPS
  2. Clic droit “Settings”
  3. General => Advanced section.
  4. Configuration Parameters….
  5. Ajouter une ligne via Add Row
  6. Ajouter le texte sched.mem.pshare.salt et mettre en valeur 2.
  7. Allumer la VM

 

 

Ou via Script pour activation sur ESXi

SCRIPT VMware se trouvant dans le KB 2097593

 

A utiliser avec les options

  • .\pshare-salting.ps1  <vcenter IP/hostname> -s -> Enables pshare salting.
  • .\pshare-salting.ps1  <vcenter IP/hostname> -o -> Turn offs pshare salting and falls back to  default TPS behavior.

 

 

 

 

 

 

 

 

En espérant que tout soit plus clair désormais pour vous.

 

 

Pour aller plus loin

 

 

 

 

Share