Eerder deze maand kwamen er beveiligingsfouten in diverse processoren aan het licht en werd meer informatie gedeeld over hoe je het beste systemen tegen de zogeheten Meltdown en Spectre fouten kunt beschermen. Bijzonder bij dit probleem is dat een software patch niet afdoende is; het moet ook verholpen worden in de processor zelf door middel van een zogeheten microcode update. Deze microcode update kan uitgevoerd worden op Microsoft Surface hardware via Windows Update en andere systemen zoals die van Dell zullen een BIOS/UEFI update moeten krijgen.
Hoe weet je nu zeker of je systemen goed en volledig gepatched zijn tegen Meltdown en Spectre? Microsoft heeft speciale Powershell module gemaakt om te controleren: SpeculationControl, te vinden in de Powershell Gallery. Door de Cmdlet “Get-SpeculationControlSettings” te draaien kan men een systeem controleren op juiste HW firmware update, OS patch installatie (en indien een Windows Server: OS patch configuratie). Hieronder is het resultaat van dit Cmdlet te zien op een volledig gepatched systeem:
Dit is handig om snel een systeem te controleren maar heeft wel een paar nadelen. Dit script is gemaakt om een overzicht te geven van een specifiek systeem met uitleg in tekstvorm. Helaas is het ook niet mogelijk om meerdere systemen uit te lezen en in een overzicht te tonen.
Controleren met System Center tooling
System Center Configuration Manager is een system management product gemaakt om meerdere systemen uit te rollen, patchen en software op afstand uit te lezen. Het specifieke onderdeel “Compliance Settings” geeft inzicht in hoe een systeem binnen je organisatie ingesteld is en of dit compliant is aan het interne beleid. We kunnen deze functionaliteit gebruiken om te controleren op Meltdown/Spectre kwetsbaarheden binnen de organisatie.
De eerste stap is het omzetten van het “Get-SpeculationControlSettings” Cmdlet naar een script met minder text als uitkomst. Speciaal hiervoor heb ik een speciale versie van het script gemaakt en is hier te vinden op Pastebin. Het script is hetzelfde maar zal de uitvoer terug brengen naar een enkele regel. Een volledig gepatched systeem zoals hierboven zal het volgende als uitvoer hebben:
BTI_HwSupported-BTI_OSSupported-BTI_OSEnabled-ShadowEnabledOrUnnecessary
Eerste deel kijkt naar hardware ondersteuning, gevolgd door OS patch installatie en patch configuratie en uiteindelijk controle voor kernel VA shodow bescherming. Omdat deze uitvoer beperkt is tot een regel tekst, kunnen we met Compliance Management het script op meerdere systemen laten draaien en de uitkomst controleren.
We beginnen met het aanmaken van een Configuration Item (specificatie van de controle):
Volg de wizard totdat de optie Settings wordt getoond.
Hier kan men een nieuwe setting specificeren en zullen we het bovenstaande script gebruiken:
Bij Compliance Rules kunnen specifiëren dat we willen dat de uitkomst van het controlescript gelijk moet zijn aan “BTI_HwSupported-BTI_OSSupported-BTI_OSEnabled-ShadowEnabledOrUnnecessary” voor optimale bescherming.
Wanneer de Configuration Item is aangemaakt, kan deze toegevoegd worden aan een nieuwe of bestaande Configuration Baseline. Zet de Purpose op required om zeker te weten dat het script geëvalueerd wordt op systemen.
Deze baseline kan vervolgens gedeployed worden naar de gewenste device collections. Zet schedule op gewenste interval. Uitvoer van het script is niet belastend voor een systeem (minder dan twee seconden klaar) waardoor je het gemakkelijk iedere dag kunt draaien. Vergeet niet dat Configuration Manager is ontworpen om dit soort evaluaties asynchroon op systemen te draaien en het soms even kan duren voordat de resultaten zichtbaar zijn.
Meltdown Spectre patching resultaten inzien
Op een specifiek systeem kan men via de de Configuration Manager Client de Configuration Baseline inzien, direct draaien en ook een lokaal rapport opvragen. Dit is handig om te controleren of een systeem na handmatig patchen nu wel compliant is.
Het kan voorkomen dat het uitvoeren van een Powershell script als Compliance Setting niet toegestaan is. Dit kan men aanpassen in Configuration Manager, Administation, Client Settings. Hier kan onder Computer Agent de Powershell Execution Policy aangepast worden naar een instelling die ervoor zorgt dat compliance management wel Powershell mag gebruiken. Hiermee wordt de Execution Policy van het systeem zelf niet aangepast.
Uiteindelijk, nadat systemen de tijd hebben gehad de nieuwe deployment te ontvangen, het script te draaien en hun resultaten te rapporteren, kan men via Monitoring de compliance van een omgeving controleren. Wanneer een client non-compliant is, is ook direct inzichtelijk waarom dit zo is: vaak het gebrek van een BIOS/UEFI patch.