[Bug]: Key Vault: "Ensure 'Purge protection' is set to 'Enabled'" never fails because the rule queries properties.enablePurgeProtection

Aperta Adatta ai principianti
#199 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
azure, powershell
Ambito
cloud, security

Direzione di ricerca

Apri rules/findings/azure/keyvault/azure-keyvault-purge-protection-not-enabled.json e confronta la sua condizione con quella della regola Key Vault recuperabile. Controlla come New-MonkeyVaultObject.ps1 normalizza il valore mancante, poi esegui la regola su un vault senza protezione dall’eliminazione definitiva. Il lavoro è completato quando quel vault non supera la regola di protezione dall’eliminazione definitiva, invece di superarla.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug status/needs-triage

What happened?
Every Key Vault without purge protection is reported as pass for azure_key_vault_purge_protection_disabled (rules/findings/azure/keyvault/azure-keyvault-purge-protection-not-enabled.json).

The rule condition is:

["properties.enablePurgeProtection", "eq", "false"]

properties holds the raw ARM properties of the vault. ARM only accepts true for enablePurgeProtection (Key Vault reference: "Enabling this functionality is irreversible - that is, the property does not accept false as its value"). A vault that never had purge protection enabled has no enablePurgeProtection value at all, and $null -eq $false is false, so the condition never matches.

New-MonkeyVaultObject.ps1 already normalises the value (line 75):

protection = [PSCustomObject]@{
    enablePurgeProtection = If($null -ne $InputObject.Properties.PsObject.Properties.Item('enablePurgeProtection')){$InputObject.Properties.enablePurgeProtection}Else{$false};

How to reproduce it

  1. Use a Key Vault created without purge protection. az keyvault show -n <vault> --query "{purge:properties.enablePurgeProtection, softDelete:properties.enableSoftDelete}" returns "purge": null, "softDelete": true.
  2. Run Invoke-Monkey365 -Instance Azure with the default ruleset.
  3. azure_key_vault_purge_protection_disabled is reported as pass.

Expected behavior
The rule fails for vaults without purge protection.

Suggested fix
Query the normalised value, as the "recoverable" rule already does:

["protection.enablePurgeProtection", "eq", "false"]

From where are you running Monkey365?

  • Resource: Docker container
  • OS: Linux (Ubuntu 24.04)
  • PowerShell Version: 7.6.9
  • Monkey365 Version: 1.0.5 (also 1.0.0, PowerShell Gallery)
  • Others: app-only authentication with access tokens

Additional context
Same pattern as the Key Vault RBAC issue (value read or queried at the wrong level), reported separately.

Lingua principale
PowerShell
Stelle
1.4k
Fork
144
Merge medio
1g 21h
PR unite (30g)
1

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di silverhack/monkey365

Tutte le issue di silverhack/monkey365

Issue simili

Altre issue su Cloud

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.