Skip to content

Commit 99112f3

Browse files
Release OpenProject 16.6.5
2 parents e7fc1ef + fb3f4a5 commit 99112f3

19 files changed

Lines changed: 268 additions & 27 deletions

File tree

.github/workflows/danger.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ on:
1111

1212
jobs:
1313
danger:
14-
if: github.repository == 'opf/openproject'
14+
if: github.repository_owner == 'opf'
1515
runs-on: [ubuntu-latest]
1616
timeout-minutes: 10
1717
steps:

.github/workflows/openapi.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ on:
1515
jobs:
1616
api-spec:
1717
name: APIv3 specification (OpenAPI 3.0)
18-
if: github.repository == 'opf/openproject'
18+
if: github.repository_owner == 'opf'
1919
runs-on: [ubuntu-latest]
2020
steps:
2121
- uses: actions/checkout@v5

.github/workflows/packager.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: Package
2-
on:
2+
on:
33
push:
44
branches:
55
- packaging/*
@@ -57,4 +57,4 @@ jobs:
5757
token: ${{ secrets.PACKAGER_PUBLISH_TOKEN }}
5858
repository: opf/openproject
5959
channel: ${{ github.ref_name }}
60-
file: ${{ steps.package.outputs.package_path }}
60+
file: ${{ steps.package.outputs.package_path }}

.github/workflows/pullpreview.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
pull-requests: write # to remove labels
2121
statuses: write # to create commit status
2222

23-
if: github.repository == 'opf/openproject' && ( github.event_name == 'schedule' || github.event.label.name == 'pullpreview' || contains(github.event.pull_request.labels.*.name, 'pullpreview') )
23+
if: github.repository_owner == 'opf' && ( github.event_name == 'schedule' || github.event.label.name == 'pullpreview' || contains(github.event.pull_request.labels.*.name, 'pullpreview') )
2424
runs-on: ubuntu-latest
2525
timeout-minutes: 60
2626
steps:

.github/workflows/test-core.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ permissions:
2424
jobs:
2525
all:
2626
name: Units + Features
27-
if: github.repository == 'opf/openproject'
27+
if: github.repository_owner == 'opf'
2828
runs-on:
2929
labels: "runs-on=${{ github.run_id }}/image=ubuntu24-full-x64/family=m7+c7+r7+i7+r8/ram=128+256/cpu=32"
3030
timeout-minutes: 40

app/controllers/my/sessions_controller.rb

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,9 @@ module My
3232
class SessionsController < ::ApplicationController
3333
before_action :require_login
3434
no_authorization_required! :index,
35-
:show,
3635
:destroy
3736

38-
self._model_object = ::Sessions::UserSession
39-
40-
before_action :find_model_object, only: %i(show destroy)
37+
before_action :load_session, only: %i(destroy)
4138
before_action :prevent_current_session_deletion, only: %i(destroy)
4239

4340
layout "my"
@@ -59,8 +56,6 @@ def index
5956
end
6057
end
6158

62-
def show; end
63-
6459
def destroy
6560
@session.delete
6661

@@ -70,6 +65,10 @@ def destroy
7065

7166
private
7267

68+
def load_session
69+
@session = ::Sessions::UserSession.for_user(current_user).find(params[:id])
70+
end
71+
7372
def prevent_current_session_deletion
7473
if @session.current?(session)
7574
render_400 message: I18n.t("users.sessions.may_not_delete_current")

config/initializers/new_framework_defaults_7_0.rb

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,13 @@
145145

146146
# https://guides.rubyonrails.org/configuring.html#config-action-dispatch-default-headers
147147
# Change the default headers to disable browsers' flawed legacy XSS protection.
148-
# Rails.application.config.action_dispatch.default_headers = {
149-
# "X-Frame-Options" => "SAMEORIGIN",
150-
# "X-XSS-Protection" => "0",
151-
# "X-Content-Type-Options" => "nosniff",
152-
# "X-Download-Options" => "noopen",
153-
# "X-Permitted-Cross-Domain-Policies" => "none",
154-
# "Referrer-Policy" => "strict-origin-when-cross-origin"
155-
# }
148+
Rails.application.config.action_dispatch.default_headers = {
149+
"X-Frame-Options" => "SAMEORIGIN",
150+
"X-Content-Type-Options" => "nosniff",
151+
"X-Download-Options" => "noopen",
152+
"X-Permitted-Cross-Domain-Policies" => "none",
153+
"Referrer-Policy" => "strict-origin-when-cross-origin"
154+
}
156155

157156
# https://guides.rubyonrails.org/configuring.html#config-active-support-cache-format-version
158157
# ** Please read carefully, this must be configured in config/application.rb **

config/routes.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -899,7 +899,7 @@
899899
get "/deletion_info" => "users#deletion_info", as: "delete_my_account_info"
900900
post "/oauth/revoke_application/:application_id" => "oauth/grants#revoke_application", as: "revoke_my_oauth_application"
901901

902-
resources :sessions, controller: "my/sessions", as: "my_sessions", only: %i[index show destroy]
902+
resources :sessions, controller: "my/sessions", as: "my_sessions", only: %i[index destroy]
903903
resources :auto_login_tokens, controller: "my/auto_login_tokens", as: "my_auto_login_tokens", only: %i[destroy]
904904

905905
get "/banner" => "my/enterprise_banners#show", as: "show_enterprise_banner"

docs/release-notes/16-6-2/README.md

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,43 @@ release_date: 2025-12-02
1111
Release date: 2025-12-02
1212

1313
We released OpenProject [OpenProject 16.6.2](https://community.openproject.org/versions/2243).
14-
The release contains several bug fixes and we recommend updating to the newest version.
14+
The release contains security relevant bug fixes and we strongly urge updating to the newest version.
1515
Below you will find a complete list of all changes and bug fixes.
1616

17+
The reported vulnerabilities have been reported as part of a Pentest by [Mantodea Security GmbH](https://mantodeasecurity.de/).
18+
Thank you for your cooperation and responsible disclosure of the vulnerabilities
19+
20+
### CVE-2026-22601 - Code Execution in E-Mail function
21+
22+
For OpenProject version 16.6.1 and below, a registered administrator can execute arbitrary command by configuring sendmail binary path and sending a test email.
23+
24+
This vulnerability was assigned to the CVE CVE-2026-22601.
25+
For more information, please see the [GitHub Advisory GHSA-9vrv-7h26-c7jc)](https://github.com/opf/openproject/security/advisories/GHSA-9vrv-7h26-c7jc).
26+
27+
### CVE-2026-22602 - User Enumeration via User ID
28+
29+
A low‑privileged logged-in user can view the full names of other users. The full name corresponding to any arbitrary user ID can be retrieved via the following URL, even if the requesting account has only minimal permissions:
30+
31+
This vulnerability was assigned to the CVE CVE-2026-22602.
32+
For more information, please see the [GitHub Advisory GHSA-7fvx-9h6h-g82j](https://github.com/opf/openproject/security/advisories/GHSA-7fvx-9h6h-g82j).
33+
34+
35+
### CVE-2026-22603 - No protection against brute-force attacks in the Change Password function
36+
37+
OpenProject’s unauthenticated password-change endpoint (/account/change_password) was not protected by the same brute-force safeguards that apply to the normal login form.
38+
In affected versions, an attacker who can guess or enumerate user IDs can send unlimited password-change requests for a given account without triggering lockout or other rate-limiting controls.
39+
40+
This vulnerability was assigned to the CVE CVE-2026-22603.
41+
For more information, please see the [GitHub Advisory GHSA-93x5-prx9-x239](https://github.com/opf/openproject/security/advisories/GHSA-93x5-prx9-x239).
42+
43+
### CVE-2026-22604 - User enumeration via the change password function
44+
45+
When sending a POST request to the /account/change_password endpoint with an arbitrary User ID as the password_change_user_id parameter, the resulting error page would show the username for the requested user. Since this endpoint is intended to be called without being authenticated, this allows to enumerate the user names of all accounts registered in an OpenProject instance.
46+
47+
This vulnerability was assigned to the CVE CVE-2026-22604.
48+
For more information, please see the [GitHub Advisory GHSA-q7qp-p3vw-j2fh](https://github.com/opf/openproject/security/advisories/GHSA-q7qp-p3vw-j2fh).
49+
50+
1751
<!--more-->
1852

1953
## Bug fixes and changes

docs/release-notes/16-6-3/README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,18 @@ release_date: 2025-12-11
1111
Release date: 2025-12-11
1212

1313
We released OpenProject [OpenProject 16.6.3](https://community.openproject.org/versions/2247).
14-
The release contains several bug fixes and we recommend updating to the newest version.
14+
The release contains security relevant bug fixes and we strongly urge updating to the newest version.
1515
Below you will find a complete list of all changes and bug fixes.
1616

17+
### CVE-2026-22605 - Insecure Direct Object Reference in Meetings
18+
19+
OpenProject versions <= 16.6.2 allows users with the View Meetings permission on any project, to access meeting agenda and section titles, notes, and text outcomes of meetings that belonged to projects, the user does not have access to. Linked work packages to projects the user is not allowed to see, are not affected.
20+
21+
This vulnerability was assigned to the CVE CVE-2026-22605.
22+
For more information, please see the [GitHub Advisory GHSA-fq4m-pxvm-8x2j](https://github.com/opf/openproject/security/advisories/GHSA-fq4m-pxvm-8x2j).
23+
24+
This vulnerability was reported as part of the [YesWeHack.com OpenProject Bug Bounty program](https://yeswehack.com/programs/openproject), sponsored by the European Commission.
25+
1726
<!--more-->
1827

1928
## Bug fixes and changes

0 commit comments

Comments
 (0)