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

未關閉 適合新手
#199 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

評估

難度
2/5
預估耗時
1-3 小時
新手友好度
78/100
Issue 類型
缺陷
描述清晰度
描述清楚
活躍度
活躍
技術堆疊
azure, powershell
領域
cloud, security

研究方向

開啟 rules/findings/azure/keyvault/azure-keyvault-purge-protection-not-enabled.json,並將其條件與可復原的 Key Vault 規則進行比較。檢查 New-MonkeyVaultObject.ps1 如何正規化缺少的值,然後對未啟用清除保護的 vault 執行該規則。完成標準是該 vault 未通過清除保護規則,而不是通過。

由索引模型根據 Issue 內容生成。

描述

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.

主要語言
PowerShell
星號
1.4k
分支
144
平均合併
1 天 21 小時
30 天內合併 PR
1

環境準備

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

silverhack/monkey365 的其他 Issue

查看 silverhack/monkey365 的全部 Issue

相似的 Issue

更多 Cloud Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。