PowerPoint Macros: Vereist Een Vertrouwde Uitgever Voor Add-ins
π 2025-10-30
β’
β±οΈ 6 minuten lezen
β’
π΄ Must-Have
πΌ Management Samenvatting
Vereisen van een vertrouwde uitgever voor add-ins bij ondertekende macro's voorkomt dat willekeurige code-ondertekende macro's (met gestolen of gecompromitteerde certificaten) automatisch worden vertrouwd - alleen uitgevers die expliciet zijn toegevoegd aan de lijst met vertrouwde uitgevers kunnen macro's uitvoeren.
Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
7/10
Implementatie
4u (tech: 2u)
Van toepassing op:
β Microsoft PowerPoint
Code signing alleen is onvoldoende: Gestolen certificaten (aanvallers stelen code-signing certificaten), Gecompromitteerde CA's (certificaatautoriteit inbreuken), Verlopen certificaten (oude ondertekende malware). Vertrouwde uitgever vereiste: Gebruiker/beheerder moet uitgever EXPLICIET vertrouwen (eerste keer melding), certificaatketen validatie (verifieer CA), certificaat intrekkingscontrole (CRL/OCSP). Zonder vertrouwde uitgever controle: elke code-ondertekende macro wordt uitgevoerd (gestolen certificaat is automatisch vertrouwd), Geen gebruikersbewustzijn (stille uitvoering), certificaatvalidatie omzeild.
Implementatie
Registry: DisableTrustBarNotificationForUnsignedApplicationAddins is 1 (Blokkeer notificatie voor niet-ondertekende add-ins - forceer vertrouwde uitgever). Effect: Eerste macro van uitgever β melding 'Deze uitgever vertrouwen?', Volgende macro's van dezelfde uitgever β automatisch (geen melding), niet-vertrouwde uitgevers β geblokkeerd.
Vereisten
Office 2016+
Code signing certificaten (interne macro's)
Vertrouwde uitgevers GPO/Intune distributie
Implementatie
Intune Settings Catalog: PowerPoint\Security\Vertrouwenscentrum β Vereisen dat applicatie add-ins zijn ondertekend door vertrouwde uitgever: ingeschakeld. Distribueer vertrouwde uitgever certificaten via GPO (vertrouwde uitgevers store).
Monitoring
Gebruik PowerShell-script macros-trusted-publisher-required.ps1 (functie Invoke-Monitoring) β Controleren.
Monitor macro uitvoeringspogingen, verifieer distributie van lijst met vertrouwde uitgevers.
Compliance en Auditing
Vertrouwde uitgever voldoet aan: CIS Office Benchmark (Macro vertrouwensinstellingen), BIO 14.02 (veilige ontwikkel lifecycle - code signing), ISO 27001 A.14.2.1.
Remediatie
Gebruik PowerShell-script macros-trusted-publisher-required.ps1 (functie Invoke-Remediation) β Herstellen.
Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).
PowerShell
<#
.SYNOPSIS
Dwingt vertrouwde uitgever handtekening voor macros in PowerPoint
.DESCRIPTION
Dit script implementeert CIS control O365-PT-000001 voor het afdwingen dat macros
digitaal ondertekend moeten zijn door een vertrouwde uitgever in Microsoft PowerPoint.
Dit voorkomt uitvoering van onveilige macros zonder expliciete verificatie.
.REQUIREMENTS
- PowerShell 5.1 of hoger
- Lokale administrator rechten voor registry wijzigingen
- Microsoft PowerPoint geΓ―nstalleerd
.PARAMETER Monitoring
Controleert de huidige compliance status
.PARAMETER Remediation
Past de aanbevolen configuratie toe
.PARAMETER Revert
Herstelt de originele configuratie
.PARAMETER WhatIf
Toont wat er zou gebeuren zonder wijzigingen door te voeren
.EXAMPLE
.\macros-trusted-publisher-required.ps1 -Monitoring
Controleert of macro handtekening is vereist
.EXAMPLE
.\macros-trusted-publisher-required.ps1 -Remediation
Dwingt macro handtekening door vertrouwde uitgever
.NOTES
Registry pad: HKCU:\Software\Policies\Microsoft\Office\16.0\POWERPOINT\Security
Waarde: macrostrustedpublisherrequired = 1
CIS Control: O365-PT-000001
DISA STIG: Microsoft Office 365 ProPlus v3r3
#>#Requires -Version 5.1param(
[switch]$Monitoring,
[switch]$Remediation,
[switch]$Revert,
[switch]$WhatIf
)
# Globale variabelen$RegistryPath = "HKCU:\Software\Policies\Microsoft\Office\16.0\POWERPOINT\Security"
$ValueName = "macrostrustedpublisherrequired"
$ExpectedValue = 1$ControlID = "O365-PT-000001"
functionTest-Compliance {
try {
if (-not (Test-Path$RegistryPath)) {
return$false
}
$currentValue = Get-ItemProperty -Path $RegistryPath -Name $ValueName -ErrorAction SilentlyContinue
return ($currentValue -and $currentValue.$ValueName -eq $ExpectedValue)
}
catch {
return$false
}
}
function Invoke-Monitoring {
Write-Host "Monitoring ${ControlID}: Vertrouwde uitgever handtekening voor macros afdwingen" -ForegroundColor Green
try {
if (-not (Test-Path$RegistryPath)) {
Write-Host "β Registry pad bestaat niet: $RegistryPath" -ForegroundColor Red
return$false
}
$currentValue = Get-ItemProperty -Path $RegistryPath -Name $ValueName -ErrorAction SilentlyContinue
if ($currentValue -and $currentValue.$ValueName -eq $ExpectedValue) {
Write-Host "β Control compliant: ${ValueName} = $ExpectedValue" -ForegroundColor Green
return$true
}
else {
$actualValue = if ($currentValue) { $currentValue.$ValueName } else { "Not Set" }
Write-Host "β Control non-compliant: ${ValueName} = $actualValue (Expected: $ExpectedValue)" -ForegroundColor Red
return$false
}
}
catch {
Write-Host "β Fout bij controleren registry instelling: $($_.Exception.Message)" -ForegroundColor Red
return$false
}
}
function Invoke-Remediation {
Write-Host "Remediating ${ControlID}: Vertrouwde uitgever handtekening voor macros afdwingen" -ForegroundColor Yellow
try {
if ($WhatIf) {
Write-Host "WhatIf: Zou registry waarde instellen: ${ValueName} = $ExpectedValue" -ForegroundColor Cyan
return$true
}
if (-not (Test-Path$RegistryPath)) {
Write-Host "Registry pad aanmaken: $RegistryPath" -ForegroundColor Yellow
New-Item -Path $RegistryPath -Force | Out-Null
}
Set-ItemProperty -Path $RegistryPath -Name $ValueName -Value $ExpectedValue -Type DWord -Force
Write-Host "β Registry waarde succesvol ingesteld: ${ValueName} = $ExpectedValue" -ForegroundColor Green
Start-Sleep -Seconds 1return Invoke-Monitoring
}
catch {
Write-Host "β Fout bij configureren registry instelling: $($_.Exception.Message)" -ForegroundColor Red
return$false
}
}
function Invoke-Revert {
Write-Host "Reverting ${ControlID}: Macro handtekening instelling herstellen" -ForegroundColor Yellow
try {
if ($WhatIf) {
Write-Host "WhatIf: Zou registry waarde verwijderen: ${ValueName}" -ForegroundColor Cyan
return$true
}
if (Test-Path$RegistryPath) {
Remove-ItemProperty -Path $RegistryPath -Name $ValueName -ErrorAction SilentlyContinue
Write-Host "β Registry waarde verwijderd: ${ValueName}" -ForegroundColor Green
}
return$true
}
catch {
Write-Host "β Fout bij herstellen registry instelling: $($_.Exception.Message)" -ForegroundColor Red
return$false
}
}
# Hoofd uitvoeringtry {
if ($Monitoring) {
$result = Invoke-Monitoring
exit $(if ($result) { 0 } else { 1 })
}
elseif ($Remediation) {
$result = Invoke-Remediation
exit $(if ($result) { 0 } else { 1 })
}
elseif ($Revert) {
$result = Invoke-Revert
exit $(if ($result) { 0 } else { 1 })
}
else {
Write-Host "Gebruik: .\make-hidden-markup-visible.ps1 [-Monitoring] [-Remediation] [-Revert] [-WhatIf]" -ForegroundColor Yellow
Write-Host " -Monitoring: Controleer huidige compliance status" -ForegroundColor White
Write-Host " -Remediation: Pas aanbevolen configuratie toe" -ForegroundColor White
Write-Host " -Revert: Herstel originele configuratie" -ForegroundColor White
Write-Host " -WhatIf: Toon wat er zou gebeuren" -ForegroundColor White
}
}
catch {
Write-Host "β Onverwachte fout: $($_.Exception.Message)" -ForegroundColor Red
exit 1
}
Risico zonder implementatie
Risico zonder implementatie
High: Hoog: Code-ondertekende macro's met gestolen certificaten worden uitgevoerd zonder vertrouwde uitgever verificatie.
Management Samenvatting
Vereisen van een vertrouwde uitgever voor add-ins bij macro's. Gebruiker/beheerder moet uitgever expliciet vertrouwen. Implementatie: 2-4 uur.