CtrlPanel: Missing Authorization on Admin Write Endpoints Allows RBAC Bypass
CtrlPanel is open-source billing software for hosting providers. Versions 1.1.1 and prior contains a broken access control vulnerability where multiple admin controllers enforce permission checks on form display methods but omit equivalent checks on the corresponding write methods, allowing any authenticated user to bypass RBAC via direct POST/PATCH requests. Controllers missing checks on write methods store() and update() include ApplicationApiController (admin.api.write), CouponController (admin.coupons.write), PartnerController (admin.partners.write), ShopProductController (admin.store.write), UsefulLinkController (admin.useful_links.write), and VoucherController (admin.voucher.write); ProductController (admin.products.edit), ServerController (write/change_owner/change_identifier), and UserController (write/change_email/change_credits/change_username/change_password/change_role/change_referral/change_ptero/change_serverlimit) are missing checks on update() only, and ActivityLogController exposed empty stub store()/update() methods that silently accepted any request. An authenticated attacker without admin write privileges can issue API credentials, generate unlimited coupons and vouchers, assign arbitrary partner commission and discount rates, alter shop product pricing and limits, reassign server ownership or identifiers, and modify user accounts including roles, credits, passwords, and linked Pterodactyl IDs to achieve full privilege escalation, as well as abuse logBackI
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-34358
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 02:03 UTC · Revision 1
Source evidence
CtrlPanel: Missing Authorization on Admin Write Endpoints Allows RBAC Bypass
core-osv · Original sourcePublished 19 May 2026, 21:39 UTC
CtrlPanel is open-source billing software for hosting providers. Versions 1.1.1 and prior contains a broken access control vulnerability where multiple admin controllers enforce permission checks on form display methods but omit equivalent checks on the corresponding write methods, allowing any authenticated user to bypass RBAC via direct POST/PATCH requests. Controllers missing checks on write methods store() and update() include ApplicationApiController (admin.api.write), CouponController (admin.coupons.write), PartnerController (admin.partners.write), ShopProductController (admin.store.write), UsefulLinkController (admin.useful_links.write), and VoucherController (admin.voucher.write); ProductController (admin.products.edit), ServerController (write/change_owner/change_identifier), and UserController (write/change_email/change_credits/change_username/change_password/change_role/change_referral/change_ptero/change_serverlimit) are missing checks on update() only, and ActivityLogController exposed empty stub store()/update() methods that silently accepted any request. An authenticated attacker without admin write privileges can issue API credentials, generate unlimited coupons and vouchers, assign arbitrary partner commission and discount rates, alter shop product pricing and limits, reassign server ownership or identifiers, and modify user accounts including roles, credits, passwords, and linked Pterodactyl IDs to achieve full privilege escalation, as well as abuse logBackI
osv:CVE-2026-34358
Complete source record
{
"id": "2b468f383f34cf0303f5798836cbd412285b325a8dd7128c0465b009762a0ade",
"url": "https://osv.dev/vulnerability/CVE-2026-34358",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "CtrlPanel: Missing Authorization on Admin Write Endpoints Allows RBAC Bypass",
"summary": "CtrlPanel is open-source billing software for hosting providers. Versions 1.1.1 and prior contains a broken access control vulnerability where multiple admin controllers enforce permission checks on form display methods but omit equivalent checks on the corresponding write methods, allowing any authenticated user to bypass RBAC via direct POST/PATCH requests. Controllers missing checks on write methods store() and update() include ApplicationApiController (admin.api.write), CouponController (admin.coupons.write), PartnerController (admin.partners.write), ShopProductController (admin.store.write), UsefulLinkController (admin.useful_links.write), and VoucherController (admin.voucher.write); ProductController (admin.products.edit), ServerController (write/change_owner/change_identifier), and UserController (write/change_email/change_credits/change_username/change_password/change_role/change_referral/change_ptero/change_serverlimit) are missing checks on update() only, and ActivityLogController exposed empty stub store()/update() methods that silently accepted any request. An authenticated attacker without admin write privileges can issue API credentials, generate unlimited coupons and vouchers, assign arbitrary partner commission and discount rates, alter shop product pricing and limits, reassign server ownership or identifiers, and modify user accounts including roles, credits, passwords, and linked Pterodactyl IDs to achieve full privilege escalation, as well as abuse logBackI",
"evidence": "osv:CVE-2026-34358",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-34358",
"aliases": [
"CVE-2026-34358",
"GHSA-pxmw-gj52-9p68"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/ctrlpanel-gg/panel",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "b3bd1ed50b9f50b76797d09609980fdb4ae70252"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "1.2.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "b3bd1ed50b9f50b76797d09609980fdb4ae70252"
}
],
"source": "REFERENCES_TAG",
"original_tag": "1.2.0"
}
]
}
}
],
"versions": [
"1.1.1",
"1.1",
"1.0.8",
"1.0.7",
"1.0.6",
"1.0.5",
"1.0.4",
"1.0.3",
"1.0.2",
"1.0.1",
"1.0",
"0.1"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-34358.json"
}
}
],
"modified": "2026-10-28T02:30:32.522757495Z",
"provider": "osv",
"references": [
"https://github.com/Ctrlpanel-gg/panel/releases/tag/1.2.0",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/34xxx/CVE-2026-34358.json",
"https://github.com/Ctrlpanel-gg/panel/security/advisories/GHSA-pxmw-gj52-9p68",
"https://nvd.nist.gov/vuln/detail/CVE-2026-34358"
],
"provider_metadata": {
"cwe_ids": [
"CWE-284",
"CWE-862"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/34xxx/CVE-2026-34358.json"
}
},
"related_cves": [
{
"value": "CVE-2026-34358",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 499530,
"published_at": "2026-05-19T21:39:26.135+00:00"
}