Skip to content

merge queue: checking main (de0fe19), #36344 and #36593 together - #36596

Closed
mergify[bot] wants to merge 11 commits into
mainfrom
mergify/merge-queue/afb4935079
Closed

merge queue: checking main (de0fe19), #36344 and #36593 together#36596
mergify[bot] wants to merge 11 commits into
mainfrom
mergify/merge-queue/afb4935079

Conversation

@mergify

@mergify mergify Bot commented Jul 15, 2026

Copy link
Copy Markdown

✨ Pull request #36344 ahead in the queue was removed (reason: pull request dequeued). The pull request #36593 has been requeued. ✨

Branch main (de0fe19), #36344 and #36593 are queued together for merge.

This pull request has been created by Mergify to speculatively check the mergeability of #36593.
You don't need to do anything. Mergify will close this pull request automatically when it is complete.

Required conditions of queue rule default for merge:

Required conditions to stay in the queue:

---
checking_base_sha: 78c90548e0d4399feb220f5ea2828abee90db9e0
previous_check_retries: []
previous_failed_batches: []
pull_requests:
  - number: 36593
    scopes: []
scopes: []
...

mbiuki and others added 11 commits June 28, 2026 14:09
ToolGroupResource._addtouser and ._removefromuser now require the caller
to be a CMS Administrator before assigning or removing any layout other
than the gettingStarted onboarding layout. Previously any backend user
could self-assign the admin Settings layout (which contains the roles
portlet), bypassing the intended privilege boundary.

RoleAjax.addUserToRole and .removeUsersFromRole now require the caller to
be a CMS Administrator in addition to the existing portlet-access check.
Previously a user who had gained roles-portlet access could grant
themselves (or any user) any role including CMS Administrator via DWR.

Together these two gaps formed a privilege-escalation chain that allowed
any authenticated backend user to reach CMS Administrator and subsequently
execute arbitrary OS commands via OSGi bundle upload.

Closes: dotCMS/private-issues#640

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Move the isAdmin() check above the loadUserById() call in both
_removefromuser and _addtouser so unauthorized callers are rejected
before any DB round-trip for the target user.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JHg1W7beD4Z1yLoTJpyXss
Covers the four new admin checks: RoleAjax.addUserToRole /
removeUsersFromRole reject non-admin callers even with roles-portlet
permission, ToolGroupResource add/remove reject non-admins, the
gettingstarted layout exemption still works for non-admins, and admin
callers pass through with the expected API side effects.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JHg1W7beD4Z1yLoTJpyXss
dsilvam found that _addtouser exempts the "gettingstarted" layout from
the admin check but _removefromuser did not, so a non-admin could enable
the Getting Started page but got a DotSecurityException dismissing it
(reachable from My Account and the onboarding portlet toggles).

Mirror the exemption on the remove path, and tighten both paths so the
gettingstarted exemption is self-service only — targeting another userid
still requires admin (also addresses the dotBot userid-validation finding
on the add path). Extracted the shared check into
isSelfServiceGettingStarted().

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JHg1W7beD4Z1yLoTJpyXss
Moves main forward to the current Tomcat 9.0.x release (2026-07-03),
picking up the CVE-2024-56337 startup-protection check, the CVE-2025-49125
regression fix, WebDAV serveSubpathOnly hardening, and the
permessage-deflate buffer fix. Single property drives the dependency,
the assembled distribution, and the Docker base image.

Closes #36592

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JHg1W7beD4Z1yLoTJpyXss
@github-actions

Copy link
Copy Markdown
Contributor

❌ Issue Linking Required

This PR could not be linked to an issue. All PRs must be linked to an issue for tracking purposes.

How to fix this:

Option 1: Add keyword to PR body (Recommended - auto-removes this comment)
Edit this PR description and add one of these lines:

  • Fixes #123 or Closes #123 — same-repo issue
  • Fixes org/repo#123 or Closes org/repo#123 — cross-repo or private issue
  • Closes https://github.com/org/repo/issues/123 — full GitHub URL
  • Other supported keywords: fix, fixed, close, closed, resolve, resolved

Option 2: Link via GitHub UI (Note: won't clear the failed check)

  1. Go to the PR → Development section (right sidebar)

  2. Click "Link issue" and select an existing issue

  3. Push a new commit or re-run the workflow to clear the failed check
    Option 3: Use branch naming
    Create a new branch with one of these patterns:

  • 123-feature-description (number at start)

  • issue-123-feature-description (issue-number at start)

  • feature-issue-123 (issue-number anywhere)

Why is this required?

Issue linking ensures proper tracking, documentation, and helps maintain project history. It connects your code changes to the problem they solve.
---This comment was automatically generated by the issue linking workflow

@mergify mergify Bot closed this Jul 15, 2026
@mergify
mergify Bot deleted the mergify/merge-queue/afb4935079 branch July 15, 2026 15:39
@github-actions github-actions Bot added the Area : Backend PR changes Java/Maven backend code label Jul 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area : Backend PR changes Java/Maven backend code

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant