machines virtuelles protégées - sstic · démarrage sécurisé 14/06/2018 sstic 2018...
TRANSCRIPT
Machines virtuelles protégées
Jean-Baptiste GaletSSTIC 2018 – 14 juin 2018
Introduction
14/06/2018 2SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Hyperviseur
VM VM VM
Serveur physique
Hyperviseur
VM VM VM
Serveur physique
Guest to Guest Guest to Host
Introduction
14/06/2018 3SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Hyperviseur
VM VM VM
Serveur physique
Introduction
14/06/2018 4SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Service d’administration
Hyperviseur
VM VM VM
Hyperviseur
VM VM VM
Stockage
Sauvegarde Serveur physique
Réseau:Migration de VM
Serveur physique
Introduction
Machine virtuelle protégée – Objectifs:➢Hyperviseur de confiance
➢Séquence de démarrage de la VM intègre
➢Disques chiffrés
➢Snapshots chiffrés
➢Mémoire vive protégée
➢Migration entre hyperviseurs: trafic chiffré
➢Accès à la machine (console, série, etc.) restreint
14/06/2018 5SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Démarrage sécurisé
14/06/2018 6SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
UEFI OS Loader
db dbxcert
Kernel ModulesModulesModulescert
TPM
cert
UEFI log
PCR: Registres de mesure du TPMPCR_Extend(i, data) := PCR[i] HASH(PCR[i] || data)
Secure Boot Trusted Boot
Mesures
PCR Hash
0 060390A1D0CDCC
1 B8B87A022A8081E
2 103A6CCC440527E
[…]
7 7CEAB49DFCC37C6
TPM – Seal/Unseal
14/06/2018 7SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
secret
@!/xlsj^%dk
Seal(0, 1, 7)
PCR Hash
0 060390A1D0CDCC
1 B8B87A022A8081E
2 0B9610F8EA5E002
[…]
7 7CEAB49DFCC37C6
@!/xlsj^%dk
Unseal(0, 1, 7)
secret ✓
TPM – Remote Attestation
14/06/2018 8SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
PCR Hash
0 060390A1D0CDCC
1 B8B87A022A8081E
2 0B9610F8EA5E002
[…]
7 7CEAB49DFCC37C6
UEFI log
Quote(KEY, [0, 1, 7]) := Sign(KEY, Hash(PCR[0] || PCR[1] || PCR[7]))
PCR_Read([0, 1, 7]) := PCR[0] || PCR[1] || PCR[7]
PCR Data
0 08A84FE9625A0A6
0 EF9CD4DA9DD40F0
1 7DD004FDC3A5012
[…]
0 10D4F4312080E048
PCR Hash
0 060390A1D0CDCC
1 B8B87A022A8081E
2 0B9610F8EA5E002
[…]
7 7CEAB49DFCC37C6
+ AttestationVérifications
Solutions
14/06/2018 9SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
vSphere
6.5 (10/2016)• ESXi Secure Boot
• VM Encryption
• Encrypted vMotion
6.7 (04/2018)• TPM 2.0 – Attestation des ESXi
• Virtual TPM
• Support de VBS pour les VM Windows
14/06/2018 10SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
vCenter
KMIP Key Manager
KMIP Key ManagerESXi
VM VM VM
ESXi
VM VM VM
Storage
vSphere
VM EncryptionChiffrement des disques virtuels (vmdk), des snapshots, des données de configuration sensibles (TPM)
2 clés utilisées:
• DEK (Disk Encryption Key)
• Générée sur l’hyperviseur
• Chiffrement des données
• KEK (Key Encryption Key)
• Stockée sur le KMS
• Chiffre les DEK
Encrypted vMotion• Chiffrement applicatif
• Clé éphémère générée pour chaque migration
14/06/2018 11SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
vSphere
Les KEK sont diffusées à tous les hyperviseurs du cluster
L’échec de l’attestation de l’hyperviseur n’empêche pas la diffusion des clés
Les administrateurs locaux des hyperviseurs peuvent déchiffrer les données (crypto-util)
14/06/2018 12SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Some will ask questions such as “But will this mean that VM’s won’t run on/vMotion to a host that has failed attestation?”. The answer is that VM’s will continue to run on host that has failed attestation. What I can say in response is that “We are very aware of the ask for this capability” and we would really welcome your feedback.
https://blogs.vmware.com/vsphere/2018/04/vsphere-6-7-esxi-tpm-2-0.html
vSphere
Protections effectives
14/06/2018 13SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Service d’administration
Hyperviseur
VM VM VM
Hyperviseur
VM VM VM
Stockage
Sauvegarde Serveur physique
Réseau:Migration de VM
Serveur physique
Hyper-V
• Windows Server 2016 (09/2016)• Introduction de Guarded Fabric (Rôles Guarded Host et Host Guardian,
Shielded-VM)
• Windows Server / Windows 10 – 1709 (10/2017)• Ajout de la fonctionnalité Guarded Host sur les workstations
• Support des Shielded-VM Linux
• Windows Server / Windows 10 – 1803 (04/2018)• v2 du protocole d’attestation à distance
14/06/2018 14SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Hyper-V
Virtualization-Based Security
14/06/2018 15SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Hyperviseur
Windows /VTL0 VSM /VTL1
Materiel
Kernel Secure Kernel
Environnementutilisateur
IUM
Applications Trustlets
Credential GuardWDAC (aka Device Guard)• Configurable Code Integrity• HVCIvTPM
VsmIdk : clé RSA scélée avec le TPMAccessible uniquement par le VTL1
RPC
Mailboxes
Hyper-V
• Guarded Host• Windows Server 2016 ou Windows 10
• VBS + politique WDAC
• HGS (Host Guardian Service)• [Attestation Service] Réalise l’attestation des hyperviseurs
• [Key Protection Service] Délivre les clés des machines virtuelles
14/06/2018 16SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
HGS
Guarded Host
VM VM VM
Guarded Host
VM VM VM
Storage AttestationKey Protection
Hyper-V
Shielded-VM• Machine virtuelle avec:
• UEFI + Secure Boot• TPM2 virtuel• Interfaces host – guest restreintes• Pas de console locale• Worker process en PPL
• La protection repose sur le chiffrement:• Du TPM virtuel• Des données volatiles pour les snapshots• Du trafic de live migration
Les données du disque doivent être chiffrées avec une solution FDE (Bitlocker / LUKS)
14/06/2018 17SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Shielded-VM
Protecteur
Gardien 1
Gardien 2
vTPM Data
Disques
Configuration
Snapshots
Hyper-V
Démarrage d’une Shielded-VM
14/06/2018 18SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
VTL0 VTL1
UserKernel
UserKernel
vmwp.exe vmsp.exe
vid.dll
vid.sys
\\.\Vpcivsp
Mailboxes
vmcompute.exe RPC
Hyper-V
14/06/2018 19SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Attestation à distance (TPM)
Guarded Host Host Guardian (HGS)
Demande d’attestation{ Clé publique du TPM (EKPub) }
Attestation de santé
Vérification de l’enregistrement de
l’EKPUB
Génération d’une attestation de santé
(Signature de la VsmIdk)
VTL1
TPM
TPM_CC_StartAuthSession
PCR + UEFI logPCR_Read(7, 12, 13)
Calcul des PCR avec l’UEFI log
Compare les PCR du TPM avec ceux calculés
Vérifie l’UEFI logExtraction de la VsmIdk
Salted Session
14/06/2018 20SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Hyper-V
Hyper-V
14/06/2018 21SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Hyper-V
14/06/2018 22SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Diffusion des clésGuarded Host Host Guardian (HGS)
Envoi du protecteur et de l’attestation de santé
Envoi de la Transport key et du nouveau protecteur
Vérification de l’attestation de santé
Extraction de la VsmIdk
Extraction de la clécourante
VTL1
Génération d’unenouvelle clé symétrique
Chiffrement de la clécourante et de la
nouvelle clé avec la VsmIdk
Création du nouveau protecteur
Shielded-VM
vTPM Data
Protecteur
Gardien 1
Gardien 2
Hyper-V
• L’attestation des hyperviseurs est limitée et manque de capacité de personnalisation• L’utilisation de Bitlocker avec un protecteur TPM permet de pallier cette
limitation
• La RAM des machines virtuelles est accessible depuis le noyau du VTL0
• La sécurité des hyperviseurs repose fortement sur la politique WDAC• KMCI
• UMCI: Nombreux bypass (LolBins)
14/06/2018 23SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Hyper-V
Protections effectives
14/06/2018 24SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Service d’administration
Hyperviseur
VM VM VM
Hyperviseur
VM VM VM
Stockage
Sauvegarde Serveur physique
Réseau:Migration de VM
Serveur physique
Objectifs atteints ?
Machine virtuelle protégée~ Hyperviseur de confiance
✓ Séquence de démarrage de la VM intègre
✓ Disques chiffrés
✓ Snapshots chiffrés
~ Mémoire vive protégée
✓ Migration entre hyperviseurs: trafic chiffré
~ Accès à la machine (console, série, etc.) restreint
14/06/2018 25SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Conclusion
• Les deux solutions présentées apportent des protections intéressantes• Ces protections restent perfectibles
• Modérément complexe à mettre en œuvre
• Les éditeurs font évoluer ces fonctionnalités et communiquent dessus
• Des solutions matérielles émergent pour chiffrer la mémoire:• AMD SEV SEVered (Fraunhofer AISEC)
• Intel MKTME
• Travaux à poursuivre
14/06/2018 26SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées
Questions@jbgalet
14/06/2018 27SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées