CWE-639
AllowedAuthorization Bypass Through User-Controlled Key
Abstraction: Base · Status: Incomplete
The system's authorization functionality does not prevent one user from gaining access to another user's data or record by modifying the key value identifying the data.
5367 vulnerabilities reference this CWE, most recent first.
GHSA-F895-WC4G-97XV
Vulnerability from github – Published: 2026-09-16 06:31 – Updated: 2026-09-16 06:31The Online Scheduling and Appointment Booking System – Bookly plugin for WordPress is vulnerable to Insecure Direct Object Reference in all versions up to, and including, 28.1 via the 'conversation_id' parameter due to missing validation on a user controlled key. This makes it possible for unauthenticated attackers to read the full AI booking conversation transcript of any customer — leaking names, email addresses, phone numbers, and appointment details echoed by the assistant — and inject arbitrary messages into any victim conversation that are subsequently replayed to the Cloud AI worker along with the full private history. Because AI conversations are stored with no owner, user, or session identifier and conversation IDs are sequential integers, an unauthenticated attacker can enumerate all customer conversations simply by incrementing the conversation_id parameter.
{
"affected": [],
"aliases": [
"CVE-2026-89063"
],
"database_specific": {
"cwe_ids": [
"CWE-639"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-09-16T05:16:47Z",
"severity": "HIGH"
},
"details": "The Online Scheduling and Appointment Booking System \u2013 Bookly plugin for WordPress is vulnerable to Insecure Direct Object Reference in all versions up to, and including, 28.1 via the \u0027conversation_id\u0027 parameter due to missing validation on a user controlled key. This makes it possible for unauthenticated attackers to read the full AI booking conversation transcript of any customer \u2014 leaking names, email addresses, phone numbers, and appointment details echoed by the assistant \u2014 and inject arbitrary messages into any victim conversation that are subsequently replayed to the Cloud AI worker along with the full private history. Because AI conversations are stored with no owner, user, or session identifier and conversation IDs are sequential integers, an unauthenticated attacker can enumerate all customer conversations simply by incrementing the conversation_id parameter.",
"id": "GHSA-f895-wc4g-97xv",
"modified": "2026-09-16T06:31:34Z",
"published": "2026-09-16T06:31:34Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-89063"
},
{
"type": "WEB",
"url": "https://plugins.trac.wordpress.org/browser/bookly-responsive-appointment-booking-tool/tags/28.1/frontend/modules/ai/Ajax.php#L212"
},
{
"type": "WEB",
"url": "https://plugins.trac.wordpress.org/browser/bookly-responsive-appointment-booking-tool/tags/28.1/frontend/modules/ai/Ajax.php#L215"
},
{
"type": "WEB",
"url": "https://plugins.trac.wordpress.org/browser/bookly-responsive-appointment-booking-tool/tags/28.1/frontend/modules/ai/Ajax.php#L38"
},
{
"type": "WEB",
"url": "https://plugins.trac.wordpress.org/browser/bookly-responsive-appointment-booking-tool/tags/28.1/frontend/modules/ai/Ajax.php#L60"
},
{
"type": "WEB",
"url": "https://plugins.trac.wordpress.org/browser/bookly-responsive-appointment-booking-tool/tags/28.1/lib/base/Component.php#L67"
},
{
"type": "WEB",
"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/b6af015f-f954-4afb-9d65-56176f73672f?source=cve"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N",
"type": "CVSS_V3"
}
]
}
GHSA-F8CV-RHQG-3X6W
Vulnerability from github – Published: 2022-08-06 00:00 – Updated: 2022-08-11 00:00Authenticated IDOR vulnerability in StoreApps Affiliate For WooCommerce premium plugin <= 4.7.0 at WordPress allows an attacker to change the PayPal email. WooCommerce PayPal Payments plugin (free) should be at least installed to get the extra input field on the user profile page.
{
"affected": [],
"aliases": [
"CVE-2022-36284"
],
"database_specific": {
"cwe_ids": [
"CWE-639"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2022-08-05T16:15:00Z",
"severity": "MODERATE"
},
"details": "Authenticated IDOR vulnerability in StoreApps Affiliate For WooCommerce premium plugin \u003c= 4.7.0 at WordPress allows an attacker to change the PayPal email. WooCommerce PayPal Payments plugin (free) should be at least installed to get the extra input field on the user profile page.",
"id": "GHSA-f8cv-rhqg-3x6w",
"modified": "2022-08-11T00:00:33Z",
"published": "2022-08-06T00:00:45Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2022-36284"
},
{
"type": "WEB",
"url": "https://dzv365zjfbd8v.cloudfront.net/changelogs/affiliate-for-woocommerce/changelog.txt"
},
{
"type": "WEB",
"url": "https://patchstack.com/database/vulnerability/affiliate-for-woocommerce/wordpress-affiliate-for-woocommerce-premium-plugin-4-7-0-authenticated-idor-vulnerability-leading-to-paypal-email-change"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N",
"type": "CVSS_V3"
}
]
}
GHSA-F8J3-R9JJ-4QXR
Vulnerability from github – Published: 2025-08-12 18:31 – Updated: 2025-08-12 18:31ServiceNow has addressed a Broken Access Control vulnerability that was identified in the ServiceNow AI Platform. This vulnerability could allow a low privileged user to bypass access controls and perform a limited set of actions typically reserved for higher privileged users, potentially leading to unauthorized data modifications. This issue is addressed in the listed patches and family releases, which have been made available to hosted and self-hosted customers, as well as partners.
{
"affected": [],
"aliases": [
"CVE-2025-3089"
],
"database_specific": {
"cwe_ids": [
"CWE-639"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2025-08-12T16:15:27Z",
"severity": "MODERATE"
},
"details": "ServiceNow has addressed a Broken Access Control vulnerability that was identified in the ServiceNow AI Platform. This vulnerability could allow a low privileged user to bypass access controls and perform a limited set of actions typically reserved for higher privileged users, potentially leading to unauthorized data modifications.\u00a0This issue is addressed in the listed patches and family releases, which have been made available to hosted and self-hosted customers, as well as partners.",
"id": "GHSA-f8j3-r9jj-4qxr",
"modified": "2025-08-12T18:31:25Z",
"published": "2025-08-12T18:31:25Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2025-3089"
},
{
"type": "WEB",
"url": "https://support.servicenow.com/kb?id=kb_article_view\u0026sysparm_article=KB2264930"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"type": "CVSS_V4"
}
]
}
GHSA-F8MV-JPHX-3R7G
Vulnerability from github – Published: 2024-06-06 21:30 – Updated: 2024-06-06 21:30An Incorrect Authorization vulnerability exists in lunary-ai/lunary versions up to and including 1.2.2, which allows unauthenticated users to delete any dataset. The vulnerability is due to the lack of proper authorization checks in the dataset deletion endpoint. Specifically, the endpoint does not verify if the provided project ID belongs to the current user, thereby allowing any dataset to be deleted without proper authentication. This issue was fixed in version 1.2.8.
{
"affected": [],
"aliases": [
"CVE-2024-5130"
],
"database_specific": {
"cwe_ids": [
"CWE-639",
"CWE-862",
"CWE-863"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2024-06-06T19:16:04Z",
"severity": "HIGH"
},
"details": "An Incorrect Authorization vulnerability exists in lunary-ai/lunary versions up to and including 1.2.2, which allows unauthenticated users to delete any dataset. The vulnerability is due to the lack of proper authorization checks in the dataset deletion endpoint. Specifically, the endpoint does not verify if the provided project ID belongs to the current user, thereby allowing any dataset to be deleted without proper authentication. This issue was fixed in version 1.2.8.",
"id": "GHSA-f8mv-jphx-3r7g",
"modified": "2024-06-06T21:30:37Z",
"published": "2024-06-06T21:30:37Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2024-5130"
},
{
"type": "WEB",
"url": "https://github.com/lunary-ai/lunary/commit/14078c1d2b8766075bf655f187ece24c7a787776"
},
{
"type": "WEB",
"url": "https://huntr.com/bounties/e81a9871-308d-4628-9726-af66643a16fe"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N",
"type": "CVSS_V3"
}
]
}
GHSA-F8V3-8WM7-H9QR
Vulnerability from github – Published: 2026-04-30 21:30 – Updated: 2026-04-30 21:30IBM Langflow Desktop 1.0.0 through 1.8.4 Langflow could allow an unauthenticated user to view other users' images due to an indirect object reference through a user-controlled key.
{
"affected": [],
"aliases": [
"CVE-2026-4503"
],
"database_specific": {
"cwe_ids": [
"CWE-639"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-04-30T21:16:33Z",
"severity": "HIGH"
},
"details": "IBM Langflow Desktop 1.0.0 through 1.8.4 Langflow could allow an unauthenticated user to view other users\u0027 images due to an indirect object reference through a user-controlled key.",
"id": "GHSA-f8v3-8wm7-h9qr",
"modified": "2026-04-30T21:30:39Z",
"published": "2026-04-30T21:30:38Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-4503"
},
{
"type": "WEB",
"url": "https://www.ibm.com/support/pages/node/7271099"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N",
"type": "CVSS_V3"
}
]
}
GHSA-F924-8J9Q-7FPQ
Vulnerability from github – Published: 2025-10-14 12:31 – Updated: 2025-10-14 12:31A vulnerability has been identified in SiPass integrated (All versions < V3.0). Affected server applications contains a broken access control vulnerability. The authorization mechanism lacks sufficient server-side checks, allowing an attacker to execute a specific API request.
Successful exploitation allows an attacker to potentially manipulate data belonging to other users.
{
"affected": [],
"aliases": [
"CVE-2025-40773"
],
"database_specific": {
"cwe_ids": [
"CWE-639"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2025-10-14T10:15:38Z",
"severity": "MODERATE"
},
"details": "A vulnerability has been identified in SiPass integrated (All versions \u003c V3.0). Affected server applications contains a broken access control vulnerability. The authorization mechanism lacks sufficient server-side checks, allowing an attacker to execute a specific API request.\n\nSuccessful exploitation allows an attacker to potentially manipulate data belonging to other users.",
"id": "GHSA-f924-8j9q-7fpq",
"modified": "2025-10-14T12:31:31Z",
"published": "2025-10-14T12:31:31Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2025-40773"
},
{
"type": "WEB",
"url": "https://cert-portal.siemens.com/productcert/html/ssa-599451.html"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N",
"type": "CVSS_V3"
},
{
"score": "CVSS:4.0/AV:A/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"type": "CVSS_V4"
}
]
}
GHSA-F92X-P3Q7-CX4J
Vulnerability from github – Published: 2026-10-16 18:34 – Updated: 2026-10-16 18:34Arkon through 0.9.2 contains a missing authorization vulnerability in list_skill_versions that allows authenticated employees to read other departments' skill version metadata by bypassing the can_access_skill check. Attackers holding the default skill:read permission can request GET /api/skills/{slug}/versions for another department's skill to obtain version numbers, hashes, storage paths and changelogs.
{
"affected": [],
"aliases": [
"CVE-2026-111717"
],
"database_specific": {
"cwe_ids": [
"CWE-639"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-10-16T18:17:56Z",
"severity": "MODERATE"
},
"details": "Arkon through 0.9.2 contains a missing authorization vulnerability in list_skill_versions that allows authenticated employees to read other departments\u0027 skill version metadata by bypassing the can_access_skill check. Attackers holding the default skill:read permission can request GET /api/skills/{slug}/versions for another department\u0027s skill to obtain version numbers, hashes, storage paths and changelogs.",
"id": "GHSA-f92x-p3q7-cx4j",
"modified": "2026-10-16T18:34:56Z",
"published": "2026-10-16T18:34:56Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-111717"
},
{
"type": "WEB",
"url": "https://github.com/nduckmink/arkon/blob/v0.9.2/app/routers/skills.py#L408-L425"
},
{
"type": "WEB",
"url": "https://github.com/nduckmink/arkon/blob/v0.9.2/app/routers/skills.py#L427-L434"
},
{
"type": "WEB",
"url": "https://hackmd.io/@hieuPenguinnn/arkon-wiki-graph-cross-department-idor"
},
{
"type": "WEB",
"url": "https://www.vulncheck.com/advisories/arkon-through-0.9.2-missing-authorization-via-skills-versions-api"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N",
"type": "CVSS_V3"
},
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"type": "CVSS_V4"
}
]
}
GHSA-F93W-PCJ3-RGGC
Vulnerability from github – Published: 2026-03-05 20:57 – Updated: 2026-03-09 20:46Impact
Pingora versions prior to 0.8.0 generated cache keys using only the URI path, excluding critical factors such as the host header. This allows an attacker to poison the cache and serve cross-origin responses to users.
This vulnerability affects users of Pingora's alpha proxy caching feature who relied on the default CacheKey implementation. An attacker could exploit this for cross-tenant data leakage in multi-tenant deployments, or serve malicious content to legitimate users by poisoning shared cache entries.
Note: Cloudflare customers and Cloudflare's CDN infrastructure were not affected by this vulnerability, as Cloudflare's default cache key implementation uses multiple factors to prevent cache key poisoning and never made use of the previously provided default.
Patches
We strongly suggest users should upgrade to Pingora v.0.8.0 or higher, which removes the default CacheKey implementation.
Workarounds
Do not rely on the provided CacheKey default, and at minimum use the host / :authority and the upstream peer TLS scheme as part of building the CacheKey, as well as other factors that may apply to the deployment e.g. HTTP method.
References
See CVE-2026-2836 and the Cloudflare blog post for more details.
Credits
Disclosed responsibly by Rajat Raghav (@xclow3n) through the Cloudflare Bug Bounty Program.
{
"affected": [
{
"database_specific": {
"last_known_affected_version_range": "\u003c= 0.7.0"
},
"package": {
"ecosystem": "crates.io",
"name": "pingora-cache"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "0.8.0"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-2836"
],
"database_specific": {
"cwe_ids": [
"CWE-639"
],
"github_reviewed": true,
"github_reviewed_at": "2026-03-05T20:57:49Z",
"nvd_published_at": null,
"severity": "HIGH"
},
"details": "### Impact\nPingora versions prior to 0.8.0 generated cache keys using only the URI path, excluding critical factors such as the host header. This allows an attacker to poison the cache and serve cross-origin responses to users.\n\nThis vulnerability affects users of Pingora\u0027s alpha proxy caching feature who relied on the default CacheKey implementation. An attacker could exploit this for cross-tenant data leakage in multi-tenant deployments, or serve malicious content to legitimate users by poisoning shared cache entries.\n\nNote: Cloudflare customers and Cloudflare\u0027s CDN infrastructure were not affected by this vulnerability, as Cloudflare\u0027s default cache key implementation uses multiple factors to prevent cache key poisoning and never made use of the previously provided default.\n\n### Patches\nWe strongly suggest users should upgrade to Pingora v.0.8.0 or higher, which removes the default CacheKey implementation.\n\n### Workarounds\nDo not rely on the provided CacheKey default, and at minimum use the host / :authority and the upstream peer TLS scheme as part of building the CacheKey, as well as other factors that may apply to the deployment e.g. HTTP method. \n\n### References\nSee [CVE-2026-2836](https://cve.org/CVERecord?id=CVE-2026-2836) and the [Cloudflare blog post](https://blog.cloudflare.com/pingora-oss-smuggling-vulnerabilities/) for more details.\n\n### Credits\nDisclosed responsibly by Rajat Raghav (@xclow3n) through the Cloudflare [Bug Bounty Program](https://www.cloudflare.com/disclosure/).",
"id": "GHSA-f93w-pcj3-rggc",
"modified": "2026-03-09T20:46:06Z",
"published": "2026-03-05T20:57:49Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/cloudflare/pingora/security/advisories/GHSA-f93w-pcj3-rggc"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-2836"
},
{
"type": "PACKAGE",
"url": "https://github.com/cloudflare/pingora"
},
{
"type": "WEB",
"url": "https://rustsec.org/advisories/RUSTSEC-2026-0035.html"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:H/SI:H/SA:N",
"type": "CVSS_V4"
}
],
"summary": "Pingora vulnerable to cache poisoning via insecure-by-default cache key"
}
GHSA-F952-GXQ8-Q296
Vulnerability from github – Published: 2026-10-16 00:31 – Updated: 2026-10-16 00:31ZenTao PMS through 22.6 contains an authorization bypass vulnerability in action::editComment that allows authenticated users to read and overwrite other users' comments by supplying an arbitrary actionID. Attackers can iterate sequential action ids to modify comments on bugs, stories, tasks, and documents in products and projects they cannot access, and view targeted comment content and attachments.
{
"affected": [],
"aliases": [
"CVE-2026-111346"
],
"database_specific": {
"cwe_ids": [
"CWE-639"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-10-15T22:19:32Z",
"severity": "MODERATE"
},
"details": "ZenTao PMS through 22.6 contains an authorization bypass vulnerability in action::editComment that allows authenticated users to read and overwrite other users\u0027 comments by supplying an arbitrary actionID. Attackers can iterate sequential action ids to modify comments on bugs, stories, tasks, and documents in products and projects they cannot access, and view targeted comment content and attachments.",
"id": "GHSA-f952-gxq8-q296",
"modified": "2026-10-16T00:31:57Z",
"published": "2026-10-16T00:31:57Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-111346"
},
{
"type": "WEB",
"url": "https://github.com/easysoft/zentaopms"
},
{
"type": "WEB",
"url": "https://github.com/easysoft/zentaopms/blob/zentaopms_22.6_20260917/module/action/control.php#L384-L426"
},
{
"type": "WEB",
"url": "https://github.com/easysoft/zentaopms/blob/zentaopms_22.6_20260917/module/action/model.php#L2025-L2057"
},
{
"type": "WEB",
"url": "https://hackmd.io/@hieuPenguinnn/zentaopms-action-editcomment-cross-user-idor"
},
{
"type": "WEB",
"url": "https://www.vulncheck.com/advisories/zentao-pms-through-22.6-authorization-bypass-via-action-editcomment"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N",
"type": "CVSS_V3"
},
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"type": "CVSS_V4"
}
]
}
GHSA-F95F-77JX-FCJC
Vulnerability from github – Published: 2026-03-25 21:21 – Updated: 2026-03-25 21:21Summary
The DELETE /api/v1/projects/:project/shares/:share endpoint does not verify that the link share belongs to the project specified in the URL. An attacker with admin access to any project can delete link shares from other projects by providing their own project ID combined with the target share ID.
Details
The permission check in canDoLinkShare (pkg/models/link_sharing_permissions.go:53-70) validates admin access on the project from the :project URL parameter. However, the Delete method at pkg/models/link_sharing.go:305 queries only WHERE id = ? using the share ID, without verifying it belongs to the URL-specified project:
func (share *LinkSharing) Delete(s *xorm.Session, _ web.Auth) (err error) {
_, err = s.Where("id = ?", share.ID).Delete(share)
return
}
This is the same vulnerability class as GHSA-jfmm-mjcp-8wq2 (task attachment IDOR) and the fixed GHSA-mr3j-p26x-72x4 (task comment IDOR).
Additionally, ReadOne at line 203 has the same pattern (WHERE id = ? only), though it is not currently exploitable because CanRead fails first due to an unrelated issue with the hash parameter binding.
Impact
An authenticated user with admin access to any project can: - Delete link shares belonging to any other project in the system - Disrupt collaboration by removing shared access links - Link share IDs are sequential integers, making enumeration trivial
Reproduction
- User A creates Project A and a link share on it (share ID = X)
- User B creates Project B (gaining admin access)
- User B calls
DELETE /api/v1/projects/{projectB_id}/shares/{X} - The permission check passes (User B is admin on Project B)
- The delete executes
WHERE id = X— deleting User A's link share
Recommended Fix
Change Delete at pkg/models/link_sharing.go:305 to:
_, err = s.Where("id = ? AND project_id = ?", share.ID, share.ProjectID).Delete(share)
Also fix ReadOne at line 203 as defense in depth.
{
"affected": [
{
"package": {
"ecosystem": "Go",
"name": "code.vikunja.io/api"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "2.2.1"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-33700"
],
"database_specific": {
"cwe_ids": [
"CWE-639"
],
"github_reviewed": true,
"github_reviewed_at": "2026-03-25T21:21:20Z",
"nvd_published_at": "2026-03-24T16:16:35Z",
"severity": "MODERATE"
},
"details": "## Summary\n\nThe `DELETE /api/v1/projects/:project/shares/:share` endpoint does not verify that the link share belongs to the project specified in the URL. An attacker with admin access to any project can delete link shares from other projects by providing their own project ID combined with the target share ID.\n\n## Details\n\nThe permission check in `canDoLinkShare` (`pkg/models/link_sharing_permissions.go:53-70`) validates admin access on the project from the `:project` URL parameter. However, the `Delete` method at `pkg/models/link_sharing.go:305` queries only `WHERE id = ?` using the share ID, without verifying it belongs to the URL-specified project:\n\n```go\nfunc (share *LinkSharing) Delete(s *xorm.Session, _ web.Auth) (err error) {\n _, err = s.Where(\"id = ?\", share.ID).Delete(share)\n return\n}\n```\n\nThis is the same vulnerability class as GHSA-jfmm-mjcp-8wq2 (task attachment IDOR) and the fixed GHSA-mr3j-p26x-72x4 (task comment IDOR).\n\nAdditionally, `ReadOne` at line 203 has the same pattern (`WHERE id = ?` only), though it is not currently exploitable because `CanRead` fails first due to an unrelated issue with the hash parameter binding.\n\n## Impact\n\nAn authenticated user with admin access to any project can:\n- Delete link shares belonging to any other project in the system\n- Disrupt collaboration by removing shared access links\n- Link share IDs are sequential integers, making enumeration trivial\n\n## Reproduction\n\n1. User A creates Project A and a link share on it (share ID = X)\n2. User B creates Project B (gaining admin access)\n3. User B calls `DELETE /api/v1/projects/{projectB_id}/shares/{X}`\n4. The permission check passes (User B is admin on Project B)\n5. The delete executes `WHERE id = X` \u2014 deleting User A\u0027s link share\n\n## Recommended Fix\n\nChange `Delete` at `pkg/models/link_sharing.go:305` to:\n\n```go\n_, err = s.Where(\"id = ? AND project_id = ?\", share.ID, share.ProjectID).Delete(share)\n```\n\nAlso fix `ReadOne` at line 203 as defense in depth.",
"id": "GHSA-f95f-77jx-fcjc",
"modified": "2026-03-25T21:21:20Z",
"published": "2026-03-25T21:21:20Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/go-vikunja/vikunja/security/advisories/GHSA-f95f-77jx-fcjc"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-33700"
},
{
"type": "PACKAGE",
"url": "https://github.com/go-vikunja/vikunja"
},
{
"type": "WEB",
"url": "https://vikunja.io/changelog/vikunja-v2.2.2-was-released"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "Vikunja has a Link Share Delete IDOR \u2014 Missing Project Ownership Check Allows Cross-Project Link Share Deletion"
}
Mitigation
For each and every data access, ensure that the user has sufficient privilege to access the record that is being requested.
Mitigation
Make sure that the key that is used in the lookup of a specific user's record is not controllable externally by the user or that any tampering can be detected.
Mitigation
Use encryption in order to make it more difficult to guess other legitimate values of the key or associate a digital signature with the key so that the server can verify that there has been no tampering.
No CAPEC attack patterns related to this CWE.