Bug 2524928 (CVE-2026-81668) - CVE-2026-81668 rubygem-katello: Cross-tenant Content View Filter rule access and modification via unauthorized parent filter lookup
Summary: CVE-2026-81668 rubygem-katello: Cross-tenant Content View Filter rule access ...
Keywords:
Status: NEW
Alias: CVE-2026-81668
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-08-27 10:52 UTC by TEJ RATHI
Modified: 2026-08-28 06:05 UTC (History)
13 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description TEJ RATHI 2026-08-27 10:52:01 UTC
An object-level authorization bypass in Katello's Content View Filter Rules API.

Katello::Api::V2::ContentViewFilterRulesController#find_filter (app/controllers/katello/api/v2/content_view_filter_rules_controller.rb) loads the parent filter with ContentViewFilter.find(params[:content_view_filter_id]). That before_action runs for every action. The rules route is top-level and carries no content view identifier, so this lookup is the only object resolution in the request. Authorization only checks whether the user may invoke the action (view_content_views for read, edit_content_views for write). It does not authorize the Content View Filter supplied by the user.

The adjacent ContentViewFiltersController already resolves filters with ContentViewFilter.readable.find_by(...) for reads and ContentViewFilter.editable.find_by(...) for modifications. ContentViewFilter has no default organization scope; readable and editable are explicit class methods and are unused here. Katello::Model does not include Authorizable, so there is no post-save permission rollback when a rule is created or deleted.

An authenticated, low-privileged user with Content View permissions scoped to one organization can therefore read, create, update, and delete filter rules on a Content View Filter belonging to another organization by supplying that filter's identifier, even when that filter is absent from ContentViewFilter.readable and ContentViewFilter.editable.

The disclosed data is filter-rule metadata. Modifications persist in the live filter configuration used for the next Content View publish. Already-published Content View versions are snapshots and are not rewritten by this endpoint. Publish and promote remain separate permissions.


Note You need to log in before you can comment on or make changes to this bug.