machines virtuelles protégées - sstic · démarrage sécurisé 14/06/2018 sstic 2018...

27
Machines virtuelles protégées Jean-Baptiste Galet SSTIC 2018 – 14 juin 2018

Upload: others

Post on 08-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

Machines virtuelles protégées

Jean-Baptiste GaletSSTIC 2018 – 14 juin 2018

Page 2: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 3: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

Introduction

14/06/2018 3SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées

Hyperviseur

VM VM VM

Serveur physique

Page 4: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 5: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 6: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 7: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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 ✓

Page 8: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 9: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

Solutions

14/06/2018 9SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées

Page 10: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 11: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 12: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 13: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 14: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 15: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 16: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 17: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 18: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 19: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 20: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

14/06/2018 20SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées

Hyper-V

Page 21: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

Hyper-V

14/06/2018 21SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées

Page 22: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 23: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 24: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 25: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 26: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

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

Page 27: Machines virtuelles protégées - SSTIC · Démarrage sécurisé 14/06/2018 SSTIC 2018 –Jean-Baptiste Galet –Machines virtuelles protégées 6 UEFI OS Loader db dbx cert Kernel

Questions@jbgalet

14/06/2018 27SSTIC 2018 – Jean-Baptiste Galet – Machines virtuelles protégées