CVE-2026-82748: Ash.Actions.Aggregate authorizes an aggregate under one action but computes it under another

Published Sep 1, 2026
·
Updated

Incorrect Authorization vulnerability in ash-project ash authorizes an aggregate under one read action while computing it under another, so an aggregate can run with policies that do not match the action it was authorized against.

Ash.Actions.Aggregate groups aggregates by their {authorize?, readaction} and authorizes each group under that read action, but when building the data query it selected the action as opts[:action] || readaction || <primary read> (lib/ash/actions/aggregate.ex). When a caller passed an :action option, the aggregate query ran under that action while authorization had been computed for the group's own readaction. If the run action's read policies are more permissive than the authorized one, the aggregate (a count or sum) is computed over records the authorized action's policies would have excluded, disclosing information about data the actor cannot read. The fix runs the aggregate under the same readaction it is authorized against.

This issue affects ash: from 3.5.13 before 3.32.2.

Affected Software

1 affected component
ash>3.5.13<=3.32.2

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade ash to a version that resolves this vulnerability.

    Fixed in 3.32.2
  2. Configuration

    Ensure Ash.Actions.Aggregate builds the aggregate data query using the same read_action it was authorized against (the group's read_action), rather than honoring a caller-supplied :action that could be more permissive than the authorized one.

    Ash.Actions.Aggregate opts[:action] handling = use the group’s read_action for query execution instead of opts[:action] || read_action || <primary read>

Event History

Sep 1, 2026
CVE Published
via MITRE·03:52 AM
Data Sourced
via MITRE·03:52 AM
DescriptionWeakness

Frequently Asked Questions

1

Who is exposed to this issue?

Applications using ash versions from 3.5.13 before 3.32.2 are affected when they perform aggregates and pass an :action option that differs from the aggregate group's read action. Exposure depends on the action used to run the query having read policies that are more permissive than those of the action used for authorization.

2

What does an attacker need to exploit it?

An attacker needs to invoke an aggregate, such as a count or sum, through a path where the caller supplies or causes an :action option to be used. The aggregate must be authorized under one read action but computed under a different, more permissive read action.

3

What information can be disclosed?

The issue can disclose aggregate information, including counts or sums, calculated over records that the actor would not be permitted to read under the action used for authorization. The described impact is information disclosure through aggregate results rather than direct access to the excluded records.

4

What can be done before upgrading?

Avoid passing an :action option that differs from the aggregate's read action, particularly where the selected action has more permissive read policies. Ensure aggregate execution and authorization use the same read action until upgrading to 3.32.2 or later.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203