|
| 1 | +--- |
| 2 | +title: OpenProject 17.1.2 |
| 3 | +sidebar_navigation: |
| 4 | + title: 17.1.2 |
| 5 | +release_version: 17.1.2 |
| 6 | +release_date: 2026-02-26 |
| 7 | +--- |
| 8 | + |
| 9 | + # OpenProject 17.1.2 |
| 10 | + |
| 11 | + Release date: 2026-02-26 |
| 12 | + |
| 13 | + We released OpenProject [OpenProject 17.1.2](https://community.openproject.org/versions/2273). |
| 14 | + The release contains several bug fixes and we recommend updating to the newest version. |
| 15 | + Below you will find a complete list of all changes and bug fixes. |
| 16 | + |
| 17 | +<!-- BEGIN CVE AUTOMATED SECTION --> |
| 18 | + |
| 19 | +## Security fixes |
| 20 | + |
| 21 | + |
| 22 | + |
| 23 | +### CVE-2026-27715 - User mentions result in information disclosure of user names |
| 24 | + |
| 25 | +The Work Package Activity comment feature does not properly validate whether a mentioned user is a member of the current project. |
| 26 | + |
| 27 | + |
| 28 | + |
| 29 | +By manipulating the `data-id` attribute of the `<mention>` element in the comment request, a low-privileged user who has access to a single project can mention arbitrary users within the same organization, even if those users are not members of the project. |
| 30 | + |
| 31 | + |
| 32 | + |
| 33 | +The backend accepts the supplied user ID without enforcing project membership checks, resolves the mention, and triggers server-side notification workflows (including email notifications). |
| 34 | + |
| 35 | + |
| 36 | + |
| 37 | +This behavior violates the intended access control and project isolation model. |
| 38 | + |
| 39 | + |
| 40 | + |
| 41 | +This vulnerability was reported by user slashx0x as part of the [YesWeHack.com OpenProject Bug Bounty program](https://yeswehack.com/programs/openproject), sponsored by the European Commission. |
| 42 | + |
| 43 | + |
| 44 | + |
| 45 | +For more information, please see the [GitHub advisory #GHSA-j4m9-7hff-8qgr](https://github.com/opf/openproject/security/advisories/GHSA-j4m9-7hff-8qgr) |
| 46 | + |
| 47 | + |
| 48 | + |
| 49 | +### CVE-2026-27716 - Information disclosure on OpenProject through /api/v3/custom_fields/{id}/items |
| 50 | + |
| 51 | +The api implementation for `custom_fields` lacks any validation that the current user is authorized on any project using the custom\_field data. This leaks potentially sensitive, project specific business logic. |
| 52 | + |
| 53 | + |
| 54 | + |
| 55 | +This vulnerability was reported by user [syndrome\_impostor](https://yeswehack.com/hunters/syndrome-impostor) as part of the [YesWeHack.com OpenProject Bug Bounty program](https://yeswehack.com/programs/openproject), sponsored by the European Commission. |
| 56 | + |
| 57 | + |
| 58 | + |
| 59 | +For more information, please see the [GitHub advisory #GHSA-qpg6-635j-wjc2](https://github.com/opf/openproject/security/advisories/GHSA-qpg6-635j-wjc2) |
| 60 | + |
| 61 | + |
| 62 | + |
| 63 | +### CVE-2026-27717 - IDOR on OpenProject allows any user to overwrite any sprint/version title |
| 64 | + |
| 65 | +An attacker can overwrite the Sprint/Version titles of any project in the same instance/using the same database. |
| 66 | + |
| 67 | + |
| 68 | + |
| 69 | +This vulnerability was reported by user posisec as part of the [YesWeHack.com OpenProject Bug Bounty program](https://yeswehack.com/programs/openproject), sponsored by the European Commission. |
| 70 | + |
| 71 | + |
| 72 | + |
| 73 | +For more information, please see the [GitHub advisory #GHSA-p3hw-5g6p-69f2](https://github.com/opf/openproject/security/advisories/GHSA-p3hw-5g6p-69f2) |
| 74 | + |
| 75 | + |
| 76 | + |
| 77 | +### CVE-2026-27718 - Stored HTML Injection via MentionFilter Bypass Leads to Credential Harvesting in Email Notifications |
| 78 | + |
| 79 | +A stored HTML injection vulnerability exists in OpenProject's Markdown rendering pipeline. The MentionFilter decodes HTML entities after the SanitizationFilter has already run, allowing an attacker to inject arbitrary HTML into work package comments. This HTML is stored server-side and rendered without sanitization in email notifications sent to all watchers, assignees, and mentioned users, causing confusion about inserted elements. |
| 80 | + |
| 81 | + |
| 82 | + |
| 83 | +This vulnerability was reported by user [s-sploit-c](https://yeswehack.com/hunters/s-sploit-c) as part of the [YesWeHack.com OpenProject Bug Bounty program](https://yeswehack.com/programs/openproject), sponsored by the European Commission. |
| 84 | + |
| 85 | + |
| 86 | + |
| 87 | +For more information, please see the [GitHub advisory #GHSA-cxm3-9m5g-9cq4](https://github.com/opf/openproject/security/advisories/GHSA-cxm3-9m5g-9cq4) |
| 88 | + |
| 89 | + |
| 90 | + |
| 91 | +### CVE-2026-27719 - Authorization flaw in API grids endpoint leads to erase another user widget |
| 92 | + |
| 93 | +The vulnerability is an IDOR/authorization flaw in the My Page grid widgets that allows any authenticated user to delete arbitrary queries by ID. The My Page widgets for work packages accept a queryId inside the widget options. This queryId is stored without any permission checks, and when the widget is removed, a server-side after\_destroy hook deletes the query referenced by that queryId. |
| 94 | + |
| 95 | + |
| 96 | + |
| 97 | +This vulnerability was reported by user Edia\_r as part of the [YesWeHack.com OpenProject Bug Bounty program](https://yeswehack.com/programs/openproject), sponsored by the European Commission. |
| 98 | + |
| 99 | + |
| 100 | + |
| 101 | +For more information, please see the [GitHub advisory #GHSA-7xv7-73x4-qqvp](https://github.com/opf/openproject/security/advisories/GHSA-7xv7-73x4-qqvp) |
| 102 | + |
| 103 | + |
| 104 | + |
| 105 | +### CVE-2026-27720 - IDOR on backlog stories allows leaking of work package subject |
| 106 | + |
| 107 | +The `RbStoriesController` calls `Story.find(params[:id])` without scoping to the current project or visibility. |
| 108 | + |
| 109 | + |
| 110 | + |
| 111 | +By causing an update to the Story with a subject longer than 255 characters, the update is rejected, which results in the original title being returned in the HTTP response. |
| 112 | + |
| 113 | + |
| 114 | + |
| 115 | +Since user stories are mapped to work packages\[1\], this allows reading out the title of any work package just by providing the incrementing work package ID. |
| 116 | + |
| 117 | + |
| 118 | + |
| 119 | +This vulnerability was reported by user posisec as part of the [YesWeHack.com OpenProject Bug Bounty program](https://yeswehack.com/programs/openproject), sponsored by the European Commission. |
| 120 | + |
| 121 | + |
| 122 | + |
| 123 | +For more information, please see the [GitHub advisory #GHSA-xfmm-g339-3x85](https://github.com/opf/openproject/security/advisories/GHSA-xfmm-g339-3x85) |
| 124 | + |
| 125 | + |
| 126 | + |
| 127 | +### CVE-2026-27721 - Improper Authentication on OpenProject through /oauth/authorize via GET parameter "redirect_uri" when using mobile OAuth app |
| 128 | + |
| 129 | +OpenProject permits the registration of custom URI schemes (e.g., openprojectapp://) for OAuth callbacks without enforcing PKCE (Proof Key for Code Exchange) or validating the exclusivity of the destination application (via Universal Links). |
| 130 | + |
| 131 | + |
| 132 | + |
| 133 | +By intercepting this code, an attacker with access to the mobile device can exchange it for an access token (as the client is "Public" and has no secret), effectively hijacking the user's session and gaining full API access to their account |
| 134 | + |
| 135 | + |
| 136 | + |
| 137 | +This vulnerability was reported by user wayward as part of the [YesWeHack.com OpenProject Bug Bounty program](https://yeswehack.com/programs/openproject), sponsored by the European Commission. |
| 138 | + |
| 139 | + |
| 140 | + |
| 141 | +For more information, please see the [GitHub advisory #GHSA-w92f-h4wh-g4w4](https://github.com/opf/openproject/security/advisories/GHSA-w92f-h4wh-g4w4) |
| 142 | + |
| 143 | + |
| 144 | + |
| 145 | +### CVE-2026-27722 - IDOR on OpenProject through /meetings/{meeting_id}/agenda_items/{id}/move_to_section via POST request |
| 146 | + |
| 147 | +There is an Insecure Direct Object Reference (IDOR) in the `MeetingAgendaItemsController#move_to_section endpoint`. This allows an authenticated user to perform Meeting Agenda Pollution by moving their own agenda items into any meeting section of any other project. |
| 148 | + |
| 149 | + |
| 150 | + |
| 151 | +While the initial agenda item is loaded from the authorized meeting context, the controller fails to validate that the target `meeting_section_id` belongs to the same project or a project where the user has permission. |
| 152 | + |
| 153 | + |
| 154 | + |
| 155 | +This vulnerability was reported by user Herdiyan Adam Putra (herdiyanitdev) as part of the [YesWeHack.com OpenProject Bug Bounty program](https://yeswehack.com/programs/openproject), sponsored by the European Commission. |
| 156 | + |
| 157 | + |
| 158 | + |
| 159 | +For more information, please see the [GitHub advisory #GHSA-xw8w-4qxm-g9gv](https://github.com/opf/openproject/security/advisories/GHSA-xw8w-4qxm-g9gv) |
| 160 | + |
| 161 | + |
| 162 | + |
| 163 | +### CVE-2026-27731 - IDOR on OpenProject via PUT /work_packages/[workPackageId]/activities/[activityId]/toggle_reaction allows reader user to read internal comments |
| 164 | + |
| 165 | +A missing permission check on the endpoint to add an emoji reaction to a comment allows an attacker to add an emoji reaction to internal comments, even if they do not have access to internal comments. To correctly display the information in the frontend, the server returns the complete internal comment with the added emoji reaction to the attacker. This allows the attacker by guessing the ID of an internal comment, to access those comments without the permission to see them. |
| 166 | + |
| 167 | + |
| 168 | + |
| 169 | +This vulnerability was reported by user tuannq\_gg as part of the [YesWeHack.com OpenProject Bug Bounty program](https://yeswehack.com/programs/openproject), sponsored by the European Commission. |
| 170 | + |
| 171 | + |
| 172 | + |
| 173 | +For more information, please see the [GitHub advisory #GHSA-3qgp-q2x5-c4jw](https://github.com/opf/openproject/security/advisories/GHSA-3qgp-q2x5-c4jw) |
| 174 | + |
| 175 | + |
| 176 | + |
| 177 | +### CVE-2026-27733 - Authorization bypass via MCP endpoint |
| 178 | + |
| 179 | +If the MCP server is enabled in the application, users that do not have access to enumerate `Status` or `Types` could access those resources without proper permission checks via the MCP server. |
| 180 | + |
| 181 | + |
| 182 | + |
| 183 | +This vulnerability was reported by users noidont and [syndrome\_impostor](https://yeswehack.com/hunters/syndrome-impostor) as part of the [YesWeHack.com OpenProject Bug Bounty program](https://yeswehack.com/programs/openproject), sponsored by the European Commission. |
| 184 | + |
| 185 | + |
| 186 | + |
| 187 | +For more information, please see the [GitHub advisory #GHSA-w9w6-f59w-89vj](https://github.com/opf/openproject/security/advisories/GHSA-w9w6-f59w-89vj) |
| 188 | + |
| 189 | + |
| 190 | + |
| 191 | +### CVE-2026-27817 - Missing boundary check allows users with Manage Agenda Items permission in one project to create Agenda Items in Meetings in other projects |
| 192 | + |
| 193 | +When creating meeting agenda items, the code did properly check that the section an agenda item should be put into belongs to the meeting provided in the URL. This lead to a user with the _Manage Meeting Agendas_ permission in one project to be able to add meeting agenda items to every meeting in the instance. Together with the response about the creation of the meeting agenda item, certain meeting details including |
| 194 | + |
| 195 | + |
| 196 | + |
| 197 | +* Status of the meeting |
| 198 | + |
| 199 | + |
| 200 | + |
| 201 | +* Creator of the meeting |
| 202 | + |
| 203 | + |
| 204 | + |
| 205 | +* Date and Time range of the meeting |
| 206 | + |
| 207 | + |
| 208 | + |
| 209 | + |
| 210 | + |
| 211 | +No other details of the meeting information were exposed. |
| 212 | + |
| 213 | + |
| 214 | + |
| 215 | +This vulnerability was reported by user [sam91281](https://yeswehack.com/hunters/sam91281) as part of the [YesWeHack.com OpenProject Bug Bounty program](https://yeswehack.com/programs/openproject), sponsored by the European Commission. |
| 216 | + |
| 217 | + |
| 218 | + |
| 219 | +For more information, please see the [GitHub advisory #GHSA-c76v-8735-35hq](https://github.com/opf/openproject/security/advisories/GHSA-c76v-8735-35hq) |
| 220 | + |
| 221 | + |
| 222 | + |
| 223 | +### CVE-2026-27827 - Insecure Direct Object Reference in Project Storage Administrition Theft & Pre-Auth Remote Folder Deletion |
| 224 | + |
| 225 | +An unscoped loading of Project Storages lead to users with the _Manage Files in Project_ permission in one project, to access project storages in other projects. This would give information about the storage that they were not supposed to see. |
| 226 | + |
| 227 | + |
| 228 | + |
| 229 | +Additionally, for storages with automatic project folder management, when a deletion of the project folder was triggered, the deletion in the file storage was triggered before the permission check was executed. Together with the unscoped loading above, this allowed users with _Manage Files in Project permission in one project, to delete automatically managed folders in file storages that they did not have access to._ |
| 230 | + |
| 231 | + |
| 232 | + |
| 233 | +This vulnerability was reported by user cavid as part of the [YesWeHack.com OpenProject Bug Bounty program](https://yeswehack.com/programs/openproject), sponsored by the European Commission. |
| 234 | + |
| 235 | + |
| 236 | + |
| 237 | +For more information, please see the [GitHub advisory #GHSA-v8cr-7x8f-78mq](https://github.com/opf/openproject/security/advisories/GHSA-v8cr-7x8f-78mq) |
| 238 | + |
| 239 | + |
| 240 | +<!-- END CVE AUTOMATED SECTION --> |
| 241 | + |
| 242 | +<!--more--> |
| 243 | + |
| 244 | +## Bug fixes and changes |
| 245 | + |
| 246 | +<!-- Warning: Anything within the below lines will be automatically removed by the release script --> |
| 247 | +<!-- BEGIN AUTOMATED SECTION --> |
| 248 | + |
| 249 | +- Bugfix: Error when creating a new work package after uploading an attachment to the previous one that was opened in details view \[[#67980](https://community.openproject.org/wp/67980)\] |
| 250 | +- Bugfix: Pasting rich text into CKEditor crashes it \[[#69597](https://community.openproject.org/wp/69597)\] |
| 251 | +- Bugfix: external\_redirect URL always engaged, making copy&pasting links harder \[[#71946](https://community.openproject.org/wp/71946)\] |
| 252 | +- Bugfix: Parent project name visible in breadcrumb irrespective of parent access \[[#71972](https://community.openproject.org/wp/71972)\] |
| 253 | +- Bugfix: Trying to attach a calendar part when no mail is being generated fails \[[#72244](https://community.openproject.org/wp/72244)\] |
| 254 | +- Bugfix: Meetings appear duplicate in the ical subscription after an interim response \[[#72259](https://community.openproject.org/wp/72259)\] |
| 255 | +- Bugfix: Can't create automatically managed project folder when project name contains forbidden Nextcloud characters \[[#72525](https://community.openproject.org/wp/72525)\] |
| 256 | + |
| 257 | +<!-- END AUTOMATED SECTION --> |
| 258 | +<!-- Warning: Anything above this line will be automatically removed by the release script --> |
| 259 | + |
| 260 | +## Contributions |
| 261 | +A big thanks to our Community members for reporting bugs and helping us identify and provide fixes. |
| 262 | +This release, special thanks for reporting and finding bugs go to Александр Татаринцев, Slavur Jones. |
0 commit comments