Releases: prowler-cloud/prowler
Prowler 5.26.1
UI
🐞 Fixed
- Role form Cancel buttons now return to Roles (#11125)
- Shared select dropdowns stay constrained and scrollable inside modals (#11125)
API
🐞 Fixed
POST /api/v1/scansCelery task is now published viatransaction.on_commitso the worker cannot read the Scan before the dispatch (#11122)
SDK
🐞 Fixed
entra_users_mfa_capableno longer flags disabled guest users by requestingaccountEnabledanduserTypefrom Microsoft Graph (#11002)
Prowler 5.26.0
✨ New features to highlight in this version
Enjoy them all now for free at https://cloud.prowler.com
🔔 Alerts
Note
Available exclusively in Prowler Cloud.
Wire findings straight into the people who need to know. By default, every organization gets a daily digest of critical findings delivered to the organization owner — auto-provisioned, no setup required, editable or removable any time.
From there, organization admins can define custom alert rules over scan results — scoped by provider, account, severity, status, or any combination — and route them to any user in the organization. A Create Alert shortcut on the Findings page turns the current filter set into an alert rule in one click, so the filters you used to triage become the alert that watches for the same condition tomorrow.
All organization users are confirmed recipients by default (no opt-in confirmation required for now), and every alert email carries a one-click unsubscribe link so nobody is stuck on a list they don't want to be on. The new Manage Alerts RBAC permission keeps configuration gated to the right people.
Read more in the alerts documentation.
🔍 Finding Detail Drawer - Built for Triage
The finding drawer is where security teams actually live during triage, so it has been rebuilt around the question every analyst opens it to answer: what's not good, where, and how do I fix it?
- The verdict comes first. A color-coded status banner sits at the top of the drawer - pass, fail, manual, or muted - so the outcome is the first thing you see, not the last thing you scroll to.
- Remediation gets its own tab. Step-by-step fixes no longer compete with identifiers and metadata for attention; you click one tab and you're in the "what do I do about it" view.
- Resource context is front and center. Account and Resource share the top row with a one-click link straight to the resource page.
- Information hierarchy matches the workflow. Internal identifiers (
check_id,finding_id,finding_uid) move to the bottom of the overview - still one click away when you need them for a Jira ticket or a copy-paste, but no longer competing with the answer to "what is this?". The "Other Findings For This Resource" tab is renamed to the more direct Findings for this resource. - Faster carousel navigation. Stepping through findings inside the drawer no longer flashes empty banners - the status renders immediately from the row you came from while the full record loads in the background.
The net effect: less hunting, fewer clicks between "I have a finding" and "I have a plan."
🎯 Prowler ThreatScore - Compliance View Overhaul
The ThreatScore compliance views get a focused UX pass so the score is something you can act on, not just look at:
- Canonical pillar ordering everywhere - pillars now render in a single canonical order (
1. IAM → 2. Attack Surface → 3. Logging and Monitoring → 4. Encryption) across the badge, breakdown card, donut legend, and accordion. Missing pillars no longer disappear from the UI - they render with-/ 0% so the full set is always visible. - Pillars are clickable - clicking a pillar on
/compliancenow jumps straight to the ThreatScore detail page with the accordion pre-expanded on the pillar you clicked, scrolled into view. No more eyeballing the accordion to find what you just clicked on. - Top Failed Sections always shows the full pillar set - every canonical pillar shows up on the chart, zero-filled when there are no failures, so you get a true at-a-glance pillar-by-pillar fail rate instead of a partial picture.
- Every donut slice is hoverable - on the Requirements Status donut, the slice you hover over expands slightly so even tiny 1–2% fail or manual segments are easy to target and inspect, instead of being swallowed by the dominant pass slice.
📚 ASD Essential Eight Maturity Model - AWS
The Australian Signals Directorate's Essential Eight Maturity Model (Maturity Level One, Nov 2023) is now a first-class compliance framework for AWS. It plugs into the compliance page with the same detail view, top-failed-sections breakdown, and export support as every other framework. Thanks to @boonchuan!
Read more in our compliance documentation.
📧 Google Workspace - Gmail Attachment Safety & Spoofing Protection
Eight new Gmail checks land for Google Workspace, covering attachment safety and spoofing protection at the domain level via the Cloud Identity Policy API:
gmail_anomalous_attachment_protection_enabledgmail_domain_spoofing_protection_enabledgmail_employee_name_spoofing_protection_enabledgmail_encrypted_attachment_protection_enabledgmail_groups_spoofing_protection_enabledgmail_inbound_domain_spoofing_protection_enabledgmail_script_attachment_protection_enabledgmail_unauthenticated_email_protection_enabled
Read more in our Google Workspace documentation.
Explore all Google Workspace checks at Prowler Hub.
☁️ AWS - Bedrock Hardening
Three new AWS Bedrock checks land this release to keep generative-AI surface area honest:
bedrock_guardrails_configured- flags Bedrock deployments that ship without Guardrails configured, the standard AWS-native abuse and content-safety layer.bedrock_prompt_management_exists- verifies Prompt Management is in use so prompts are versioned and auditable rather than embedded inline in application code.bedrock_prompt_encrypted_with_cmk- verifies that each Prompt is encrypted with CMK.
Read more in our AWS provider documentation.
Explore all AWS checks at Prowler Hub.
🖥️ UI - Providers Wording, Findings Polish
A coordinated UX pass across the high-traffic surfaces:
- Providers wording - "Cloud Providers", "Accounts", and "Account Groups" copy is gone. Everything is now consistently labeled "Providers" across the UI and docs, removing the last of the legacy naming.
- Finding remediation links - the detail drawer now labels remediation actions by destination ("View CVE", "View in Prowler Hub", "View Advisory", "View Reference") instead of a generic "View" everywhere.
- Compliance cards - full-width progress bar, passing-requirements caption next to the framework logo.
🔗 Remediation Links Now Point to the Source
Container image CVE findings and IaC findings now link to official sources for remediation and references - CVE.org, Prowler Hub, and GitHub Security Advisories - instead of a third-party advisory mirror. Trivy-sourced findings also link correctly into Prowler Hub, so the "View" buttons in the finding drawer go where you expect every time.
🔐 Security Updates
- Image provider SSRF - parser-mismatch SSRF in registry auth fixed: crafted bearer-token realms and pagination links could force requests to internal addresses and leak credentials cross-origin.
cryptography46.0.6 → 46.0.7 andtrivy0.69.2 → 0.70.0 across SDK, API, and MCP images for CVE-2026-39892 and CVE-2026-33186.requests2.33.1 in the MCP server image to clear advisory 90553.
🙌 External Contributors
Thank you to our community contributors for this release!
- @boonchuan - Add ASD Essential Eight Maturity Model compliance framework for AWS in #10808
- @DannyLyubenov - Batch AWS CodeBuild API calls to prevent throttling-induced false positives in #10639
- @davletd) - Tighten Azure Network Watcher flow log checks to require workspace-backed Traffic Analytics in #10645
- @davletd - Update Azure Network Watcher flow log compliance text for NSG retirement in #10937
- @ivan-necheporenko - Scan every Azure subscription even when display names collide in #10718
- @rchotacode - Scan Oracle Cloud identity in known valid regions for non-Ashburn tenancies in #10529
- @mohamedsolaiman - Add AWS guide for extending existing services in #10924
- @baggers27 - Fix Azure documentation broken link for minimum TLS version in #10916
UI
🚀 Added
- ASD Essential Eight compliance framework support (#11071)
🔄 Changed
Prowler 5.25.2
UI
🔄 Changed
- Compliance cards: progress bar now spans the full card width, the passing-requirements caption sits beside the framework logo under the title, and the ISO 27001 logo asset is recentered within its tile (#10939)
- Findings expanded resource rows now drop the redundant cube icons, render Service and Region with the same compact label style as Last seen and Failing for, and reorder columns to Status, Resource, Provider, Severity, then field labels (#10949)
SDK
🐞 Fixed
route53_dangling_ip_subdomain_takeovernow also flagsCNAMErecords pointing to S3 website endpoints whose buckets are missing from the account (#10920)- Duplicate Kubernetes RBAC findings when the same User or Group subject appeared in multiple ClusterRoleBindings (#10242)
- Match K8s RBAC rules by
apiGroup(#10969) - Return a compact actor name from CloudTrail
userIdentityevents (#10986)
Prowler 5.25.1
UI
🐞 Fixed
- Compliance page export menu now scales on small screens, and frameworks load on first render without requiring a manual scan re-selection (#10918)
API
🐞 Fixed
- Attack Paths: AWS scans no longer fail when enabled regions cannot be retrieved, and scans stuck in
scheduledstate are now cleaned up after the stale threshold (#10917) - Scan report and compliance downloads now redirect to a presigned S3 URL instead of streaming through the API worker, preventing gunicorn timeouts on large files (#10927)
SDK
🐞 Fixed
Prowler 5.25.0
✨ New features to highlight in this version
Enjoy them all now for free at https://cloud.prowler.com/
📦 Official Prowler GitHub Action
prowler-cloud/prowler@5.25 is now an official GitHub Action. Drop it into any workflow to run a Prowler scan, optionally upload SARIF to GitHub Code Scanning, and push results to Prowler Cloud.
- uses: prowler-cloud/prowler@5.25
with:
provider: iac
output-formats: sarif json-ocsf
upload-sarif: true
flags: --severity critical high
The action is pinned to the matching release tag, so v5.25 ships with prowler-cloud/prowler@5.25 ready to use.
🐙 GitHub — zizmor Workflow Scanning as a First-Class Service
The GitHub provider gains a new service: GitHub Actions, powered by zizmor for static analysis of workflow files. Prowler now scans .github/workflows/*.yml for the OWASP Top 10 CI/CD risks — script injection, overly permissive GITHUB_TOKEN, untrusted checkouts, dangerous triggers — and ships the findings through the same pipeline as every other GitHub check. This is your first line of defense against supply chain attacks: a poisoned action, a compromised tag, or a workflow that leaks secrets to a forked PR is exactly the kind of footgun zizmor catches before it ships. zizmor v1.24.1 is bundled into the API Docker image, so the service runs out of the box on Prowler Cloud and self-hosted alike.
Read more in our GitHub provider documentation.
Explore all GitHub checks at Prowler Hub.
🛡️ IaC — SARIF Output for GitHub Code Scanning
The IaC provider now emits SARIF via --output-formats sarif. Combined with the new GitHub Action, that means IaC misconfigurations land directly in the Security → Code Scanning tab on every PR — annotated on the offending Terraform, CloudFormation, Dockerfile, or Kubernetes manifest, with severity, remediation, and Prowler check metadata carried through.
Read more in our IaC provider documentation.
🖥️ UI — Compliance Page Redesign
The compliance page has been rebuilt: client-side search across frameworks, a more compact scan selector trigger, and redesigned compliance cards.
🖥️ UI — Resources, Mutelist, and Filter Polish
A coordinated UX pass across the high-traffic surfaces:
- Resources — batch-applied filters, syntax-highlighted metadata JSON, and tighter drawer behavior.
- Mutelist — name and reason search, plus visual count badges on finding targets.
- Shared filter dropdowns — local option search and auto-scroll to the first visible match across table and provider filters.
- View Resource button — easy navigation to resource details directly from finding view.
📧 Google Workspace — Gmail Service
The Google Workspace provider gains a new Gmail service with 9 CIS-aligned checks covering user settings, link safety, end-user access, and spam/phishing controls — pulled directly from the Cloud Identity Policy API at the domain level.
gmail_mail_delegation_disabledgmail_shortener_scanning_enabledgmail_external_image_scanning_enabledgmail_untrusted_link_warnings_enabledgmail_pop_imap_access_disabledgmail_auto_forwarding_disabledgmail_per_user_outbound_gateway_disabledgmail_enhanced_pre_delivery_scanning_enabledgmail_comprehensive_mail_storage_enabled
Explore all Google Workspace checks at Prowler Hub.
🏛️ Prowler Cloud — Reports for Imported Scans
Note
Available exclusively in Prowler Cloud.
Imported scans (OCSF) now generate the same downloadable artifacts as CLI scans. The new download buttons are wired into both the scans table and the compliance views, so air-gapped, partner, and offline OCSF imports get the same reporting surface as a connected provider.
Read more in our reports documentation.
📊 CIS Benchmark PDF Reports
Compliance for the latest CIS variant of every provider get a Download PDF button, and the API exposes the underlying generator at GET /scans/{id}/cis/{name}/. Only the latest CIS version per provider surfaces the button — the backend rejects PDF generation for older variants — so the report you download always matches the benchmark you'd want to ship to an auditor.
Read more in our compliance documentation.
👥 Tenant User Expulsion
Tenant owners can now remove users from their organizations directly from the UI. Behind the scenes, DELETE /tenants/{tenant_pk}/memberships/{id} deletes the expelled user's account when the removed membership was their last one and blacklists every outstanding refresh token, so existing sessions stop minting new access tokens immediately.
🔍 New Checks
AWS
secretsmanager_has_restrictive_resource_policy- evaluates resource-based policies for AWS Secrets Manager secrets — thanks to @kagahd!
GitHub
repository_default_branch_dismisses_stale_reviews— flags repositories whose default branch protection does not dismiss stale PR approvals when new commits are pushed (CIS 1.1.4) — thanks to @Mathisdjango!
Explore all GitHub checks at Prowler Hub.
🙌 External Contributors
Thank you to our community contributors for this release!
- @Mathisdjango -- New GitHub check: dismiss stale PR approvals on default branch (CIS 1.1.4) in #10569
- @raajheshkannaa --
--repo-list-fileCLI flag for GitHub provider to load repositories from a file in #10501 - @grauJavier -- Centralize AI assistant config via symlinks for skills in #9951
- @boonchuan -- Nginx reverse proxy configuration in #10780
- @kagahd -- New AWS check to evaluate resource-based policies for Secrets Manager secrets in #6985
UI
🚀 Added
- Download PDF button for CIS Benchmark compliance cards, surfaced only on the latest CIS variant per provider to match the backend's latest-only PDF generation (#10650)
knipfor dead code detection withlint:knipandlint:knip:fixscripts (#10654)- Resource button in the findings resource detail drawer to open the related resource page (#10847)
🔄 Changed
- Redesign compliance page, client-side search for compliance frameworks, compact scan selector trigger, enhanced compliance cards (#10767)
- Allows tenant owners to expel users from their organizations (#10787)
- Shared filter dropdowns now support local option search and auto-scroll to the first visible match across table and provider filters (#10859)
- Backward-compatibility middleware redirect from
/sign-up?invitation_token=…to/invitation/accept?invitation_token=…; new invitation emails use/invitation/acceptdirectly (#10797) - Mutelist improvements: table now supports name/reason search and visual count badges for finding targets (#10846)
- Resources now use batch-applied filters, render metadata JSON with syntax highlighting, and more (#10861)
- Table pagination controls now keep their arrows visible on hover in light theme, and more UI improvements (#10862)
API
🚀 Added
- CIS Benchmark PDF report generation for scans, exposing the latest CIS version per provider via
GET /scans/{id}/cis/{name}/(#10650) /overviews/resource-groups(resource inventory),/overviews/categoriesand/overviews/attack-surfacesnow reflect newly-muted findings without waiting for the next scan. The post-mutereaggregate-all-finding-group-summariestask now also dispatchesaggregate_scan_resource_group_summaries_task,aggregate_scan_category_summaries_taskandaggregate_attack_surface_taskper latest scan of every(provider, day)pair, rebuildingScanGroupSummary,ScanCategorySummaryandAttackSurfaceOverviewalongside the tables already covered in #10827 (#10843)- Install zizmor v1.24.1 in API Docker image for GitHub Actions workflow scanning (#10607)
🔄 Changed
- Allows tenant owners to expel users from their organizations (#10787)
aggregate_findings,aggregate_attack_surface,aggregate_scan_resource_group_summariesandaggregate_scan_category_summariesnow upsert viabulk_create(update_conflicts=True, ...)instead of the priorignore_conflicts=True/ plain INSERT /already backfilledshort-circu...
Prowler 5.24.4
UI
🐞 Fixed
- Provider wizard no longer advances to the Launch Scan step when rotating credentials (#10851)
- Attack Paths scan selector now lists scans from every provider with working pagination, instead of capping the list at the first ten (#10864)
API
🚀 Added
DJANGO_SENTRY_TRACES_SAMPLE_RATEenv var (default0.02) enables Sentry performance tracing for the API (#10873)
🔄 Changed
- Attack Paths: Neo4j driver
connection_acquisition_timeoutis now configurable viaNEO4J_CONN_ACQUISITION_TIMEOUT(default lowered from 120 s to 15 s) (#10873)
Prowler 5.24.3
API
🚀 Added
/overviews/findings,/overviews/findings-severityand/overviews/servicesnow reflect newly-muted findings without waiting for the next scan. The post-mutereaggregate-all-finding-group-summariestask was extended to re-run the same per-scan pipeline that scan completion runs (ScanSummary,DailySeveritySummary,FindingGroupDailySummary) on the latest scan of every(provider, day)pair, keeping the pre-aggregated tables in sync withFinding.mutedupdates (#10827)
🐞 Fixed
- Finding groups aggregated
statusnow treats muted findings as resolved: a group isFAILonly while at least one non-muted FAIL remains, otherwise it isPASS(including fully-muted groups). Thefilter[status]filter and thesort=statusordering share the same semantics, keepingstatusconsistent withfail_countand the orthogonalmutedflag (#10825) aggregate_findingsis now idempotent: it deletes the scan's existingScanSummaryrows beforebulk_create, so re-runs (such as the post-mute reaggregation pipeline) no longer violate theunique_scan_summaryconstraint and no longer abort the downstreamDailySeveritySummary/FindingGroupDailySummaryrecomputation for the affected scan (#10827)- Attack Paths: Findings on AWS were silently dropped during the Neo4j merge for resources whose Cartography node is keyed by a short identifier (e.g. EC2 instances) rather than the full ARN (#10839)
SDK
🐞 Fixed
Prowler 5.24.2
UI
🐞 Fixed
- Default muted filter now applied consistently on the findings page and the finding-group resource drill-down, keeping muted findings hidden unless the "include muted findings" checkbox is opted in (#10818)
API
🔄 Changed
- Finding groups
/resourcesendpoints now materialize the filtered finding IDs into a Python list before filteringResourceFindingMapping(#10816)
🐞 Fixed
/finding-groups/latest/<check_id>/resourcesnow selects the latest completed scan per provider by-completed_at(then-inserted_at) instead of-inserted_at, matching the/finding-groups/latestsummary path and the daily-summary upsert so overlapping scans no longer produce divergingdelta/new_countbetween the two endpoints (#10802)
Prowler 5.24.1
UI
🐞 Fixed
- Findings and filter UX fixes: exclude muted findings by default in the resource detail drawer and finding group resource views, show category context label (for example
Status: FAIL) on MultiSelect triggers instead of hiding the placeholder, and add awidewidth option for filter dropdowns applied to the findings Scan filter to prevent label truncation (#10734) - Findings grouped view now handles zero-resource IaC counters, refines drawer loading states, and adds provider indicators to finding groups (#10736)
- Other Findings for this resource: ordering by
severity(#10778) - Other Findings for this resource: show
deltaindicator (#10778) - Compliance: requirement findings do not show muted findings (#10778)
- Latest new findings: link to finding groups order by
-severity,-last_seen_at(#10778)
🔒 Security
- Upgrade React to 19.2.5 and Next.js to 16.2.3 to mitigate CVE-2026-23869 (React2DoS), a high-severity unauthenticated remote DoS vulnerability in the React Flight Protocol's Server Function deserialization (#10754)
API
🔄 Changed
- Attack Paths: Restore
SYNC_BATCH_SIZEandFINDINGS_BATCH_SIZEdefaults to 1000, upgrade Cartography to 0.135.0, enable Celery queue priority for cleanup task, rewrite Finding insertion, remove AWS graph cleanup and add timing logs (#10729)
🐞 Fixed
- Finding group resources endpoints now include findings without associated resources (orphaned IaC findings) as simulated resource rows, and return one row per finding when multiple findings share a resource (#10708)
- Attack Paths: Missing
tenant_idfilter while getting related findings after scan completes (#10722) - Finding group counters
pass_count,fail_countandmanual_countnow exclude muted findings (#10753) - Silent data loss in
ResourceFindingMappingbulk insert that left findings orphaned whenINSERT ... ON CONFLICT DO NOTHINGdropped rows without raising; added explicitunique_fields(#10724)
SDK
🔄 Changed
msgraph-sdkfrom 1.23.0 to 1.55.0 andazure-mgmt-resourcefrom 23.3.0 to 24.0.0, removingmarshmallowas is a transitively dev dependency (#10733)
🐞 Fixed
- Cloudflare account-scoped API tokens failing connection test in the App with
CloudflareUserTokenRequiredError(#10723) - Google Workspace Calendar checks false FAIL on unconfigured settings with secure Google defaults (#10726)
prowler image --registry-listcrashes withAttributeErrorbecauseImageProvider.__init__returns early before registering the global provider (#10691)- Google Workspace Drive checks false FAIL on unconfigured settings with secure Google defaults (#10727)
- Cloudflare
validate_credentialscan hang in an infinite pagination loop when the SDK repeats accounts, blocking connection tests (#10771)
Prowler 5.24.0
✨ New features to highlight in this version
Enjoy them all now for free at https://cloud.prowler.com/
🖥️ Redesigned Resources
The resources detail panel has been rebuilt from the ground up. The new side drawer consolidates resource metadata, associated findings, and events timeline into a cleaner, denser layout — designed to keep you inside the drawer while investigating a resource instead of bouncing back to the list.
🧹 UX and Data Consistency
A large sweep of fixes landed this release targeting the rough edges users actually hit day to day: filter behavior, headers, counters drifting from the underlying data, drawer layouts, and scan/compliance/finding views surfacing stale or mislabeled context.
🆕 AWS Checks
Bedrock Security Hardening
Four new AWS checks tightening the blast radius around Amazon Bedrock and the identities that can reach it:
bedrock_full_access_policy_attached— flags IAM principals withAmazonBedrockFullAccessor equivalent wildcard Bedrock permissions attachediam_role_access_not_stale_to_bedrockandiam_user_access_not_stale_to_bedrock— catch roles and users with Bedrock privileges that haven't been used recently, so dormant GenAI access stops piling up as a standing riskbedrock_vpc_endpoints_configured— verifies Bedrock traffic stays on private VPC endpoints instead of traversing the public internet
Explore all AWS Bedrock checks at Prowler Hub.
IAM Marketplace Guardrails
Two new IAM checks to stop the silent path from a compromised identity to a paid marketplace subscription:
iam_policy_no_wildcard_marketplace_subscribeiam_inline_policy_no_wildcard_marketplace_subscribe
Both detect aws-marketplace:Subscribe granted with wildcards on managed and inline policies — a vector that turns an IAM misconfiguration into a billing incident.
Explore all AWS IAM checks at Prowler Hub.
🆕 Microsoft 365 Checks
Entra Conditional Access
entra_conditional_access_policy_all_apps_all_users— ensures at least one CA policy targets every app and every userentra_conditional_access_policy_mfa_enforced_for_guest_users- checks that guest and external users have MFA enforced. Without that compromised external accounts can access tenant resources using only a passwordentra_conditional_access_policy_block_unknown_device_platforms- block access from unknown device platformsentra_conditional_access_policy_corporate_device_sign_in_frequency_enforced- enforces sign in for non-corporate devices, without that user sessions may persist indefinitely on unmanaged devicesentra_conditional_access_policy_directory_sync_account_excluded— validates that the directory sync service account is excluded from restrictive CA policies to prevent sync outages
Explore all M365 Entra checks at Prowler Hub.
Intune
intune_device_compliance_policy_unassigned_devices_not_compliant_by_default— unassigned devices should not be marked compliant by default by the built-in device policy
Explore all M365 Intune checks at Prowler Hub.
Exchange Online
exchange_organization_delicensing_resiliency_enabled— keeps mailbox data accessible for 30 days after a license is removed, preventing accidental data loss
Explore all M365 Exchange checks at Prowler Hub.
🆕 Exclude Regions in AWS scans
Prowler now lets you exclude specific AWS regions from scans, so you can keep your scan scope focused on the regions that matter to you. You can configure exclusions with
--excluded-regionPROWLER_AWS_DISALLOWED_REGIONSenvironment variableaws.disallowed_regionsinconfig.yaml
See the AWS Regions and Partitions documentation for usage examples.
UI
🚀 Added
- Resources side drawer with redesigned detail panel (#10673)
- Syntax highlighting for remediation code blocks in finding groups drawer with provider-aware auto-detection (Shell, HCL, YAML, Bicep) (#10698)
🔄 Changed
- Attack Paths scan selection: contextual button labels based on graph availability, tooltips on disabled actions, green dot indicator for selectable scans, and a warning banner when viewing data from a previous scan cycle (#10685)
- Remove legacy finding detail sheet, row-details wrapper, and resource detail panel; unify findings and resources around new side drawers (#10692)
- Attack Paths "View Finding" now opens the finding drawer inline over the graph instead of navigating to
/findingsin a new tab, preserving graph zoom, selection, and filter state - Attack Paths scan table: replace action buttons with radio buttons, add dedicated Graph column, use info-colored In Progress badge, remove redundant Progress column, and fix info banner variant (#10704)
🐞 Fixed
- Findings group resource filters now strip unsupported scan parameters, display scan name instead of provider alias in filter badges, migrate mute modal from HeroUI to shadcn, and add searchable accounts/provider type selectors (#10662)
- Compliance detail page header now reflects the actual provider, alias and UID of the selected scan instead of always defaulting to AWS (#10674)
- Provider wizard modal moved to a stable page-level host so the providers table refreshes after link, authenticate, and connection check without closing the modal (#10675)
API
🔄 Changed
- Bump Poetry to
2.3.4in Dockerfile and pre-commit hooks. Regenerateapi/poetry.lock(#10681) - Attack Paths: Remove dead
cleanup_findingsno-op and its supportingprowler_finding_lastupdatedindex (#10684)
🐞 Fixed
- Worker-beat race condition on cold start: replaced
sleep 15with API service healthcheck dependency (Docker Compose) and init containers (Helm), aligned Gunicorn default port to8080(#10603) - API container startup crash on Linux due to root-owned bind-mount preventing JWT key generation (#10646)
🔐 Security
pytestfrom 8.2.2 to 9.0.3 to fix CVE-2025-71176 (#10678)
SDK
🚀 Added
entra_conditional_access_policy_directory_sync_account_excludedcheck for M365 provider (#10620)intune_device_compliance_policy_unassigned_devices_not_compliant_by_defaultcheck for M365 provider (#10599)entra_conditional_access_policy_all_apps_all_userscheck for M365 provider (#10619)bedrock_full_access_policy_attachedcheck for AWS provider (#10577)iam_role_access_not_stale_to_bedrockandiam_user_access_not_stale_to_bedrockchecks for AWS provider (#10536)iam_policy_no_wildcard_marketplace_subscribeandiam_inline_policy_no_wildcard_marketplace_subscribechecks for AWS provider (#10525)bedrock_vpc_endpoints_configuredcheck for AWS provider (#10591)exchange_organization_delicensing_resiliency_enabledcheck for M365 provider (#10608)entra_conditional_access_policy_mfa_enforced_for_guest_userscheck for M365 provider (#10616)entra_conditional_access_policy_corporate_device_sign_in_frequency_enforcedcheck for M365 provider (#10618)entra_conditional_access_policy_block_unknown_device_platformscheck for M365 provider (#10615)--excluded-regionCLI flag,PROWLER_AWS_DISALLOWED_REGIONSenvironment variable, andaws.disallowed_regionsconfig entry to skip specific AWS regions during scans (#10688)
🔄 Changed
- Bump Poetry to
2.3.4and consolidate SDK workflows onto thesetup-python-poetrycomposite action with opt-in lockfile regeneration (#10681) - Normalize Conditional Access platform values in Entra models and simplify platform-based checks (#10635)
🐞 Fixed
- Vercel firewall config handling for team-scoped projects and current API response shapes [(#10695)](https://github.com/prowler-cloud/pr...