CWE-862
Allowed-with-ReviewMissing Authorization
Abstraction: Class · Status: Incomplete
The product does not perform an authorization check when an actor attempts to access a resource or perform an action.
15715 vulnerabilities reference this CWE, most recent first.
GHSA-65P6-Q3MJ-RVGV
Vulnerability from github – Published: 2025-07-23 03:32 – Updated: 2025-07-23 03:32The Realty Portal – Agent plugin for WordPress is vulnerable to Privilege Escalation due to missing authorization within the rp_user_profile() AJAX handler in versions 0.1.0 through 0.3.9. The handler reads the client-supplied meta key and value pairs from $_POST and passes them directly to update_user_meta() without restricting to a safe whitelist. This makes it possible for authenticated attackers, with Subscriber-level access and above, to overwrite the wp_capabilities meta and grant themselves the administrator role.
{
"affected": [],
"aliases": [
"CVE-2025-6190"
],
"database_specific": {
"cwe_ids": [
"CWE-862"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2025-07-23T03:15:24Z",
"severity": "HIGH"
},
"details": "The Realty Portal \u2013 Agent plugin for WordPress is vulnerable to Privilege Escalation due to missing authorization within the rp_user_profile() AJAX handler in versions 0.1.0 through 0.3.9. The handler reads the client-supplied meta key and value pairs from $_POST and passes them directly to update_user_meta() without restricting to a safe whitelist. This makes it possible for authenticated attackers, with Subscriber-level access and above, to overwrite the wp_capabilities meta and grant themselves the administrator role.",
"id": "GHSA-65p6-q3mj-rvgv",
"modified": "2025-07-23T03:32:05Z",
"published": "2025-07-23T03:32:05Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2025-6190"
},
{
"type": "WEB",
"url": "https://plugins.trac.wordpress.org/browser/realty-portal-agent/trunk/includes/class-agent-process.php#L494"
},
{
"type": "WEB",
"url": "https://wordpress.org/plugins/realty-portal-agent"
},
{
"type": "WEB",
"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/b3adfe9e-ebdf-4a50-b60f-03a606a84ec0?source=cve"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"type": "CVSS_V3"
}
]
}
GHSA-65VC-5V9H-JMCW
Vulnerability from github – Published: 2026-06-26 15:32 – Updated: 2026-06-26 15:32Contributor Broken Access Control in Nelio Content <= 4.3.4 versions.
{
"affected": [],
"aliases": [
"CVE-2026-57648"
],
"database_specific": {
"cwe_ids": [
"CWE-862"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-06-26T15:16:52Z",
"severity": "MODERATE"
},
"details": "Contributor Broken Access Control in Nelio Content \u003c= 4.3.4 versions.",
"id": "GHSA-65vc-5v9h-jmcw",
"modified": "2026-06-26T15:32:18Z",
"published": "2026-06-26T15:32:18Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-57648"
},
{
"type": "WEB",
"url": "https://patchstack.com/database/wordpress/plugin/nelio-content/vulnerability/wordpress-nelio-content-plugin-4-3-4-broken-access-control-vulnerability?_s_id=cve"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N",
"type": "CVSS_V3"
}
]
}
GHSA-65W6-PF7X-5G85
Vulnerability from github – Published: 2026-04-08 00:15 – Updated: 2026-04-08 00:15Impact
All /api/puck/* CRUD endpoint handlers registered by createPuckPlugin() called Payload's local API with the default overrideAccess: true, bypassing all collection-level access control. The access option passed to createPuckPlugin() and any access rules defined on Puck-registered collections were silently ignored on these endpoints.
An unauthenticated remote attacker could:
- List all documents (including drafts) in any Puck-registered collection
- Read any document by ID (including drafts)
- Create new documents with arbitrary field values
- Update any document (including bypassing field-level access rules)
- Delete any document
- Read version history and restore arbitrary versions
In typical installations, the affected scope is the collection backing the website's pages (default slug: pages). For most users this means an attacker could read, modify, create, or delete every page on the website — including unpublished drafts and version history.
Scope is limited to collections explicitly registered with createPuckPlugin() — the endpoints validate the collection slug against an allowlist, so attackers cannot pivot to other Payload collections such as users, media, or business data not exposed to the plugin. The auto-created puck-templates, puck-ai-prompts, and puck-ai-context collections are also outside the allowlist; they have their own dedicated endpoints with separate authentication.
Other endpoints in the plugin (AI, styles, prompts, context, and the Next.js API route factories in src/api/) were unaffected — they had their own authentication checks.
Patches
Fixed in 0.6.23. All endpoint handlers in src/endpoints/index.ts now pass overrideAccess: false and forward req to Payload's local API, so collection-level access rules are evaluated against the current user.
Workarounds
If you cannot upgrade immediately, place a reverse-proxy or middleware authentication check in front of /api/puck/* to require an authenticated session before requests reach the plugin's handlers.
{
"affected": [
{
"package": {
"ecosystem": "npm",
"name": "@delmaredigital/payload-puck"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "0.6.23"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-39397"
],
"database_specific": {
"cwe_ids": [
"CWE-862"
],
"github_reviewed": true,
"github_reviewed_at": "2026-04-08T00:15:54Z",
"nvd_published_at": "2026-04-07T21:17:18Z",
"severity": "CRITICAL"
},
"details": "### Impact\n\nAll `/api/puck/*` CRUD endpoint handlers registered by `createPuckPlugin()` called Payload\u0027s local API with the default `overrideAccess: true`, bypassing all collection-level access control. The `access` option passed to `createPuckPlugin()` and any `access` rules defined on Puck-registered collections were silently ignored on these endpoints.\n\nAn unauthenticated remote attacker could:\n\n- List all documents (including drafts) in any Puck-registered collection\n- Read any document by ID (including drafts)\n- Create new documents with arbitrary field values\n- Update any document (including bypassing field-level access rules)\n- Delete any document\n- Read version history and restore arbitrary versions\n\n**In typical installations**, the affected scope is the collection backing the website\u0027s pages (default slug: `pages`). For most users this means an attacker could read, modify, create, or delete every page on the website \u2014 including unpublished drafts and version history.\n\n**Scope is limited to collections explicitly registered with `createPuckPlugin()`** \u2014 the endpoints validate the collection slug against an allowlist, so attackers cannot pivot to other Payload collections such as `users`, `media`, or business data not exposed to the plugin. The auto-created `puck-templates`, `puck-ai-prompts`, and `puck-ai-context` collections are also outside the allowlist; they have their own dedicated endpoints with separate authentication.\n\nOther endpoints in the plugin (AI, styles, prompts, context, and the Next.js API route factories in `src/api/`) were unaffected \u2014 they had their own authentication checks.\n\n### Patches\n\nFixed in **0.6.23**. All endpoint handlers in `src/endpoints/index.ts` now pass `overrideAccess: false` and forward `req` to Payload\u0027s local API, so collection-level access rules are evaluated against the current user.\n\n### Workarounds\n\nIf you cannot upgrade immediately, place a reverse-proxy or middleware authentication check in front of `/api/puck/*` to require an authenticated session before requests reach the plugin\u0027s handlers.",
"id": "GHSA-65w6-pf7x-5g85",
"modified": "2026-04-08T00:15:54Z",
"published": "2026-04-08T00:15:54Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/delmaredigital/payload-puck/security/advisories/GHSA-65w6-pf7x-5g85"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-39397"
},
{
"type": "WEB",
"url": "https://github.com/delmaredigital/payload-puck/issues/7"
},
{
"type": "WEB",
"url": "https://github.com/delmaredigital/payload-puck/commit/9148201c6bbfa140d44546438027a2f8a70f79a4"
},
{
"type": "PACKAGE",
"url": "https://github.com/delmaredigital/payload-puck"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L",
"type": "CVSS_V3"
}
],
"summary": "@delmaredigital/payload-puc is missing authorization on /api/puck/* CRUD endpoints allows unauthenticated access to Puck-registered collections"
}
GHSA-65XM-C867-M6J9
Vulnerability from github – Published: 2025-05-16 18:31 – Updated: 2026-04-01 18:35Missing Authorization vulnerability in ValvePress Pinterest Automatic Pin allows Exploiting Incorrectly Configured Access Control Security Levels. This issue affects Pinterest Automatic Pin: from n/a through 4.18.2.
{
"affected": [],
"aliases": [
"CVE-2025-39511"
],
"database_specific": {
"cwe_ids": [
"CWE-862"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2025-05-16T16:15:41Z",
"severity": "MODERATE"
},
"details": "Missing Authorization vulnerability in ValvePress Pinterest Automatic Pin allows Exploiting Incorrectly Configured Access Control Security Levels. This issue affects Pinterest Automatic Pin: from n/a through 4.18.2.",
"id": "GHSA-65xm-c867-m6j9",
"modified": "2026-04-01T18:35:06Z",
"published": "2025-05-16T18:31:08Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2025-39511"
},
{
"type": "WEB",
"url": "https://patchstack.com/database/wordpress/plugin/wp-pinterest-automatic/vulnerability/wordpress-pinterest-automatic-pin-4-18-2-broken-access-control-vulnerability?_s_id=cve"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N",
"type": "CVSS_V3"
}
]
}
GHSA-6633-4H9P-3H29
Vulnerability from github – Published: 2025-01-16 21:31 – Updated: 2026-04-01 18:33Missing Authorization vulnerability in Goldstar Goldstar allows Exploiting Incorrectly Configured Access Control Security Levels.This issue affects Goldstar: from n/a through 2.1.1.
{
"affected": [],
"aliases": [
"CVE-2025-23962"
],
"database_specific": {
"cwe_ids": [
"CWE-862"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2025-01-16T21:15:37Z",
"severity": "MODERATE"
},
"details": "Missing Authorization vulnerability in Goldstar Goldstar allows Exploiting Incorrectly Configured Access Control Security Levels.This issue affects Goldstar: from n/a through 2.1.1.",
"id": "GHSA-6633-4h9p-3h29",
"modified": "2026-04-01T18:33:17Z",
"published": "2025-01-16T21:31:06Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2025-23962"
},
{
"type": "WEB",
"url": "https://patchstack.com/database/wordpress/plugin/goldstar/vulnerability/wordpress-goldstar-plugin-2-1-1-broken-access-control-vulnerability?_s_id=cve"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N",
"type": "CVSS_V3"
}
]
}
GHSA-664V-GM8M-VH2F
Vulnerability from github – Published: 2026-06-15 21:30 – Updated: 2026-06-15 21:30Unauthenticated Broken Access Control in Easy Appointments <= 3.12.21 versions.
{
"affected": [],
"aliases": [
"CVE-2026-39513"
],
"database_specific": {
"cwe_ids": [
"CWE-862"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-06-15T21:16:45Z",
"severity": "HIGH"
},
"details": "Unauthenticated Broken Access Control in Easy Appointments \u003c= 3.12.21 versions.",
"id": "GHSA-664v-gm8m-vh2f",
"modified": "2026-06-15T21:30:45Z",
"published": "2026-06-15T21:30:44Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-39513"
},
{
"type": "WEB",
"url": "https://patchstack.com/database/wordpress/plugin/easy-appointments/vulnerability/wordpress-easy-appointments-plugin-3-12-21-broken-access-control-vulnerability?_s_id=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-665F-VRMF-89J8
Vulnerability from github – Published: 2026-04-08 09:31 – Updated: 2026-04-13 21:30Missing Authorization vulnerability in ilGhera JW Player for WordPress jw-player-7-for-wp allows Exploiting Incorrectly Configured Access Control Security Levels.This issue affects JW Player for WordPress: from n/a through <= 2.3.6.
{
"affected": [],
"aliases": [
"CVE-2026-39614"
],
"database_specific": {
"cwe_ids": [
"CWE-862"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-04-08T09:16:31Z",
"severity": "MODERATE"
},
"details": "Missing Authorization vulnerability in ilGhera JW Player for WordPress jw-player-7-for-wp allows Exploiting Incorrectly Configured Access Control Security Levels.This issue affects JW Player for WordPress: from n/a through \u003c= 2.3.6.",
"id": "GHSA-665f-vrmf-89j8",
"modified": "2026-04-13T21:30:35Z",
"published": "2026-04-08T09:31:33Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-39614"
},
{
"type": "WEB",
"url": "https://patchstack.com/database/Wordpress/Plugin/jw-player-7-for-wp/vulnerability/wordpress-jw-player-for-wordpress-plugin-2-3-6-broken-access-control-vulnerability?_s_id=cve"
}
],
"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"
}
]
}
GHSA-665X-PPC4-685W
Vulnerability from github – Published: 2026-04-21 15:20 – Updated: 2026-04-27 16:31Cross-user wishlist item import via shared wishlist code, leading to private option disclosure and file-disclosure variant
Summary
The shared wishlist add-to-cart endpoint authorizes access with a public sharing_code, but loads the acted-on wishlist item by a separate global wishlist_item_id and never verifies that the item belongs to the shared wishlist referenced by that code.
This lets an attacker use:
- a valid shared wishlist code for wishlist A
- a wishlist item ID belonging to victim wishlist B
to import victim item B into the attacker's cart through the shared wishlist flow for wishlist A.
Because the victim item's stored buyRequest is reused during cart import, the victim's private custom-option data is copied into the attacker's quote. If the product uses a file custom option, this can be elevated to cross-user file disclosure because the imported file metadata is preserved and the download endpoint is not ownership-bound.
Vulnerability Type
- Broken object-level authorization / IDOR
- Cross-user data disclosure
- Cross-user file disclosure variant
Root Cause
In app/code/core/Mage/Wishlist/controllers/SharedController.php, the shared flow does:
$item = Mage::getModel('wishlist/item')->load($itemId);
$wishlist = Mage::getModel('wishlist/wishlist')->loadByCode($code);
...
$item->addToCart($cart);
Relevant lines:
SharedController.php:86loads the wishlist item by global IDSharedController.php:87loads the wishlist by shared codeSharedController.php:99imports the item into cart
There is no check that:
$item->getWishlistId() == $wishlist->getId()
The safe owner flow in app/code/core/Mage/Wishlist/controllers/IndexController.php:521-528 does preserve this binding by deriving the wishlist from item->getWishlistId().
The imported item keeps its original buyRequest because app/code/core/Mage/Wishlist/Model/Item.php:370-372 passes that stored request directly into:
$cart->addProduct($product, $buyRequest);
Security Impact
Baseline impact
An attacker can import another user's private wishlist item into the attacker's own cart, using an unrelated shared wishlist code.
This is a clear cross-user authorization bypass. The victim item's private configuration is copied into the attacker's quote, including custom-option values such as personalized text.
Stronger variant: cross-user file disclosure
If the victim item contains a custom option of type file, the imported quote item preserves file metadata such as:
quote_pathorder_pathsecret_key
The file option renderer in app/code/core/Mage/Catalog/Model/Product/Option/Type/File.php:547-552 generates a download URL from:
- the imported
sales/quote_item_optionID - the preserved
secret_key
The downloader in app/code/core/Mage/Sales/controllers/DownloadController.php:150-185:
- loads quote item option by global ID
- verifies only product option type and
secret_key - reads the file from
order_pathorquote_path
It does not verify ownership of the quote item, order, or original wishlist item. This creates a cross-user file disclosure path once victim file metadata has been imported.
Steps To Reproduce
Lab data
- shared wishlist A:
wishlist_id = 1customer_id = 2sharing_code = 6376bb8c37a09c2de3664bd8cdc16412- victim wishlist B:
wishlist_id = 2customer_id = 3- victim item:
wishlist_item_id = 1wishlist_id = 2product_id = 2- victim private text option marker:
VICTIM-MARKER-49040822
Reproduction
Send:
GET /wishlist/shared/cart/?code=6376bb8c37a09c2de3664bd8cdc16412&item=1
Where:
codebelongs to shared wishlist Aitem=1belongs to victim wishlist B
Expected result
The request should be rejected because the item does not belong to the shared wishlist referenced by the sharing_code.
Actual result
The application imports victim item 1 into the attacker's quote anyway.
Verified Evidence
Baseline variant
Previously verified at quote/option level in lab:
option_1 = VICTIM-MARKER-49040822
This shows that the attacker's cart received victim-private custom-option data from another user's wishlist item.
File-disclosure variant
Previously verified in lab after importing a victim file-option payload:
/sales/download/downloadCustomOption/id/9/key/86fca9b61c0b891b52fb/
This URL was generated from imported quote item option data containing the victim file metadata and secret key.
Why This Is A Valid Bug
This is not a timing issue and does not depend on non-default security settings.
The bug is a direct authorization failure:
- authorization is based on wishlist A's share code
- the acted-on object is item B from another wishlist
- there is no item-to-wishlist binding check
- victim-controlled item state is then copied into attacker-controlled cart state
That is a broken object-level authorization issue with clear cross-user impact.
Remediation
In SharedController::cartAction(), reject any request where the loaded item does not belong to the wishlist loaded from the share code:
$item = Mage::getModel('wishlist/item')->load($itemId);
$wishlist = Mage::getModel('wishlist/wishlist')->loadByCode($code);
if (!$item->getId() || !$wishlist->getId() || (int) $item->getWishlistId() !== (int) $wishlist->getId()) {
return $this->_forward('noRoute');
}
Defense in depth:
- bind
sales/download/downloadCustomOptionto the current quote/order owner instead of trusting onlyid + secret_key
{
"affected": [
{
"package": {
"ecosystem": "Packagist",
"name": "openmage/magento-lts"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "20.17.0"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-40098"
],
"database_specific": {
"cwe_ids": [
"CWE-862"
],
"github_reviewed": true,
"github_reviewed_at": "2026-04-21T15:20:41Z",
"nvd_published_at": "2026-04-20T17:16:34Z",
"severity": "MODERATE"
},
"details": "# Cross-user wishlist item import via shared wishlist code, leading to private option disclosure and file-disclosure variant\n\n## Summary\n\nThe shared wishlist add-to-cart endpoint authorizes access with a public `sharing_code`, but loads the acted-on wishlist item by a separate global `wishlist_item_id` and never verifies that the item belongs to the shared wishlist referenced by that code.\n\nThis lets an attacker use:\n\n- a valid shared wishlist code for wishlist A\n- a wishlist item ID belonging to victim wishlist B\n\nto import victim item B into the attacker\u0027s cart through the shared wishlist flow for wishlist A.\n\nBecause the victim item\u0027s stored `buyRequest` is reused during cart import, the victim\u0027s private custom-option data is copied into the attacker\u0027s quote. If the product uses a file custom option, this can be elevated to cross-user file disclosure because the imported file metadata is preserved and the download endpoint is not ownership-bound.\n\n## Vulnerability Type\n\n- Broken object-level authorization / IDOR\n- Cross-user data disclosure\n- Cross-user file disclosure variant\n\n## Root Cause\n\nIn `app/code/core/Mage/Wishlist/controllers/SharedController.php`, the shared flow does:\n\n```php\n$item = Mage::getModel(\u0027wishlist/item\u0027)-\u003eload($itemId);\n$wishlist = Mage::getModel(\u0027wishlist/wishlist\u0027)-\u003eloadByCode($code);\n...\n$item-\u003eaddToCart($cart);\n```\n\nRelevant lines:\n\n- `SharedController.php:86` loads the wishlist item by global ID\n- `SharedController.php:87` loads the wishlist by shared code\n- `SharedController.php:99` imports the item into cart\n\nThere is no check that:\n\n```php\n$item-\u003egetWishlistId() == $wishlist-\u003egetId()\n```\n\nThe safe owner flow in `app/code/core/Mage/Wishlist/controllers/IndexController.php:521-528` does preserve this binding by deriving the wishlist from `item-\u003egetWishlistId()`.\n\nThe imported item keeps its original `buyRequest` because `app/code/core/Mage/Wishlist/Model/Item.php:370-372` passes that stored request directly into:\n\n```php\n$cart-\u003eaddProduct($product, $buyRequest);\n```\n\n## Security Impact\n\n### Baseline impact\n\nAn attacker can import another user\u0027s private wishlist item into the attacker\u0027s own cart, using an unrelated shared wishlist code.\n\nThis is a clear cross-user authorization bypass. The victim item\u0027s private configuration is copied into the attacker\u0027s quote, including custom-option values such as personalized text.\n\n### Stronger variant: cross-user file disclosure\n\nIf the victim item contains a custom option of type `file`, the imported quote item preserves file metadata such as:\n\n- `quote_path`\n- `order_path`\n- `secret_key`\n\nThe file option renderer in `app/code/core/Mage/Catalog/Model/Product/Option/Type/File.php:547-552` generates a download URL from:\n\n- the imported `sales/quote_item_option` ID\n- the preserved `secret_key`\n\nThe downloader in `app/code/core/Mage/Sales/controllers/DownloadController.php:150-185`:\n\n- loads quote item option by global ID\n- verifies only product option type and `secret_key`\n- reads the file from `order_path` or `quote_path`\n\nIt does not verify ownership of the quote item, order, or original wishlist item. This creates a cross-user file disclosure path once victim file metadata has been imported.\n\n## Steps To Reproduce\n\n### Lab data\n\n- shared wishlist A:\n - `wishlist_id = 1`\n - `customer_id = 2`\n - `sharing_code = 6376bb8c37a09c2de3664bd8cdc16412`\n- victim wishlist B:\n - `wishlist_id = 2`\n - `customer_id = 3`\n- victim item:\n - `wishlist_item_id = 1`\n - `wishlist_id = 2`\n - `product_id = 2`\n- victim private text option marker:\n - `VICTIM-MARKER-49040822`\n\n### Reproduction\n\nSend:\n\n```http\nGET /wishlist/shared/cart/?code=6376bb8c37a09c2de3664bd8cdc16412\u0026item=1\n```\n\nWhere:\n\n- `code` belongs to shared wishlist A\n- `item=1` belongs to victim wishlist B\n\n### Expected result\n\nThe request should be rejected because the item does not belong to the shared wishlist referenced by the `sharing_code`.\n\n### Actual result\n\nThe application imports victim item `1` into the attacker\u0027s quote anyway.\n\n## Verified Evidence\n\n### Baseline variant\n\nPreviously verified at quote/option level in lab:\n\n```text\noption_1 = VICTIM-MARKER-49040822\n```\n\nThis shows that the attacker\u0027s cart received victim-private custom-option data from another user\u0027s wishlist item.\n\n### File-disclosure variant\n\nPreviously verified in lab after importing a victim file-option payload:\n\n```text\n/sales/download/downloadCustomOption/id/9/key/86fca9b61c0b891b52fb/\n```\n\nThis URL was generated from imported quote item option data containing the victim file metadata and secret key.\n\n## Why This Is A Valid Bug\n\nThis is not a timing issue and does not depend on non-default security settings.\n\nThe bug is a direct authorization failure:\n\n- authorization is based on wishlist A\u0027s share code\n- the acted-on object is item B from another wishlist\n- there is no item-to-wishlist binding check\n- victim-controlled item state is then copied into attacker-controlled cart state\n\nThat is a broken object-level authorization issue with clear cross-user impact.\n\n## Remediation\n\nIn `SharedController::cartAction()`, reject any request where the loaded item does not belong to the wishlist loaded from the share code:\n\n```php\n$item = Mage::getModel(\u0027wishlist/item\u0027)-\u003eload($itemId);\n$wishlist = Mage::getModel(\u0027wishlist/wishlist\u0027)-\u003eloadByCode($code);\n\nif (!$item-\u003egetId() || !$wishlist-\u003egetId() || (int) $item-\u003egetWishlistId() !== (int) $wishlist-\u003egetId()) {\n return $this-\u003e_forward(\u0027noRoute\u0027);\n}\n```\n\nDefense in depth:\n\n- bind `sales/download/downloadCustomOption` to the current quote/order owner instead of trusting only `id + secret_key`",
"id": "GHSA-665x-ppc4-685w",
"modified": "2026-04-27T16:31:43Z",
"published": "2026-04-21T15:20:41Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/OpenMage/magento-lts/security/advisories/GHSA-665x-ppc4-685w"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-40098"
},
{
"type": "WEB",
"url": "https://github.com/OpenMage/magento-lts/pull/5446"
},
{
"type": "PACKAGE",
"url": "https://github.com/OpenMage/magento-lts"
},
{
"type": "WEB",
"url": "https://github.com/OpenMage/magento-lts/releases/tag/v20.17.0"
}
],
"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",
"type": "CVSS_V4"
}
],
"summary": "OpenMage LTS: Cross-user wishlist import leads to private option \u0026 file disclosure"
}
GHSA-6669-C2MR-PV93
Vulnerability from github – Published: 2022-05-24 19:08 – Updated: 2022-05-24 19:08Improper authorization in handler for custom URL scheme vulnerability in Retty App for Android versions prior to 4.8.13 and Retty App for iOS versions prior to 4.11.14 allows a remote attacker to lead a user to access an arbitrary website via the vulnerable App.
{
"affected": [],
"aliases": [
"CVE-2021-20747"
],
"database_specific": {
"cwe_ids": [
"CWE-862"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2021-07-14T02:15:00Z",
"severity": "MODERATE"
},
"details": "Improper authorization in handler for custom URL scheme vulnerability in Retty App for Android versions prior to 4.8.13 and Retty App for iOS versions prior to 4.11.14 allows a remote attacker to lead a user to access an arbitrary website via the vulnerable App.",
"id": "GHSA-6669-c2mr-pv93",
"modified": "2022-05-24T19:08:04Z",
"published": "2022-05-24T19:08:04Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2021-20747"
},
{
"type": "WEB",
"url": "https://drive.google.com/file/d/1PBYqIsK8QxEEhGJ4SEgpY7iZw3RTTDho/view"
},
{
"type": "WEB",
"url": "https://jvn.jp/en/jp/JVN26891339/index.html"
}
],
"schema_version": "1.4.0",
"severity": []
}
GHSA-667F-V95M-Q2XP
Vulnerability from github – Published: 2025-11-04 18:31 – Updated: 2025-11-04 18:31WorkDo HRM SaaS HR and Payroll Tool 8.1 is affected vulnerable to Insecure Permissions. An authenticated user can create leave or resignation records on behalf of other users.
{
"affected": [],
"aliases": [
"CVE-2025-63294"
],
"database_specific": {
"cwe_ids": [
"CWE-862"
],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2025-11-04T16:16:01Z",
"severity": "MODERATE"
},
"details": "WorkDo HRM SaaS HR and Payroll Tool 8.1 is affected vulnerable to Insecure Permissions. An authenticated user can create leave or resignation records on behalf of other users.",
"id": "GHSA-667f-v95m-q2xp",
"modified": "2025-11-04T18:31:58Z",
"published": "2025-11-04T18:31:58Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2025-63294"
},
{
"type": "WEB",
"url": "https://codecanyon.net/item/hrm-saas-hr-and-payroll-tool/25982934"
},
{
"type": "WEB",
"url": "https://medium.com/@barrattjack89/cve-2025-63294-insecure-permissions-in-workdo-hrm-saas-hr-and-payroll-8-1-d6bb03c21177"
},
{
"type": "WEB",
"url": "https://workdo.io/hrm-saas-human-resource-management-software"
}
],
"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"
}
]
}
Mitigation
- Divide the product into anonymous, normal, privileged, and administrative areas. Reduce the attack surface by carefully mapping roles with data and functionality. Use role-based access control (RBAC) [REF-229] to enforce the roles at the appropriate boundaries.
- Note that this approach may not protect against horizontal authorization, i.e., it will not protect a user from attacking others with the same role.
Mitigation
Ensure that access control checks are performed related to the business logic. These checks may be different than the access control checks that are applied to more generic resources such as files, connections, processes, memory, and database records. For example, a database may restrict access for medical records to a specific database user, but each record might only be intended to be accessible to the patient and the patient's doctor [REF-7].
Mitigation MIT-4.4
Strategy: Libraries or Frameworks
- Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid.
- For example, consider using authorization frameworks such as the JAAS Authorization Framework [REF-233] and the OWASP ESAPI Access Control feature [REF-45].
Mitigation
- For web applications, make sure that the access control mechanism is enforced correctly at the server side on every page. Users should not be able to access any unauthorized functionality or information by simply requesting direct access to that page.
- One way to do this is to ensure that all pages containing sensitive information are not cached, and that all such pages restrict access to requests that are accompanied by an active and authenticated session token associated with a user who has the required permissions to access that page.
Mitigation
Use the access control capabilities of your operating system and server environment and define your access control lists accordingly. Use a "default deny" policy when defining these ACLs.
CAPEC-665: Exploitation of Thunderbolt Protection Flaws
An adversary leverages a firmware weakness within the Thunderbolt protocol, on a computing device to manipulate Thunderbolt controller firmware in order to exploit vulnerabilities in the implementation of authorization and verification schemes within Thunderbolt protection mechanisms. Upon gaining physical access to a target device, the adversary conducts high-level firmware manipulation of the victim Thunderbolt controller SPI (Serial Peripheral Interface) flash, through the use of a SPI Programing device and an external Thunderbolt device, typically as the target device is booting up. If successful, this allows the adversary to modify memory, subvert authentication mechanisms, spoof identities and content, and extract data and memory from the target device. Currently 7 major vulnerabilities exist within Thunderbolt protocol with 9 attack vectors as noted in the Execution Flow.