{"api_version":"1","generated_at":"2026-08-20T21:23:14+00:00","cve":"CVE-2026-66001","urls":{"html":"https://cve.report/CVE-2026-66001","api":"https://cve.report/api/cve/CVE-2026-66001.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-66001","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-66001"},"summary":{"title":"Frappe: Improper Authorization in OAuth2 Consent Endpoint","description":"Frappe is a full-stack web application framework. Prior to 15.114.0 and 16.26.0, the approve and authorize functions in frappe/integrations/oauth2.py allow the OAuth2 consent flow to proceed without restricting approve to POST, without a csrf_token in frappe/templates/includes/oauth_confirmation.html, and without scoping an active OAuth token check to the requesting client. An attacker can cause an authenticated user to approve an OAuth grant or reuse authorization state for the wrong client, exposing data and permitting actions within the granted scopes. This issue is fixed in versions 15.114.0 and 16.26.0.","state":"PUBLISHED","assigner":"GitHub_M","published_at":"2026-08-20 19:16:58","updated_at":"2026-08-20 19:16:58"},"problem_types":["CWE-352","CWE-352 CWE-352: Cross-Site Request Forgery (CSRF)"],"metrics":[{"version":"4.0","source":"security-advisories@github.com","type":"Secondary","score":"8.5","severity":"HIGH","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/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","data":{"version":"4.0","vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/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","baseScore":8.5,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","attackRequirements":"NONE","privilegesRequired":"NONE","userInteraction":"ACTIVE","vulnConfidentialityImpact":"HIGH","vulnIntegrityImpact":"HIGH","vulnAvailabilityImpact":"NONE","subConfidentialityImpact":"NONE","subIntegrityImpact":"NONE","subAvailabilityImpact":"NONE","exploitMaturity":"NOT_DEFINED","confidentialityRequirement":"NOT_DEFINED","integrityRequirement":"NOT_DEFINED","availabilityRequirement":"NOT_DEFINED","modifiedAttackVector":"NOT_DEFINED","modifiedAttackComplexity":"NOT_DEFINED","modifiedAttackRequirements":"NOT_DEFINED","modifiedPrivilegesRequired":"NOT_DEFINED","modifiedUserInteraction":"NOT_DEFINED","modifiedVulnConfidentialityImpact":"NOT_DEFINED","modifiedVulnIntegrityImpact":"NOT_DEFINED","modifiedVulnAvailabilityImpact":"NOT_DEFINED","modifiedSubConfidentialityImpact":"NOT_DEFINED","modifiedSubIntegrityImpact":"NOT_DEFINED","modifiedSubAvailabilityImpact":"NOT_DEFINED","Safety":"NOT_DEFINED","Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","valueDensity":"NOT_DEFINED","vulnerabilityResponseEffort":"NOT_DEFINED","providerUrgency":"NOT_DEFINED"}},{"version":"4.0","source":"CNA","type":"DECLARED","score":"8.5","severity":"HIGH","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","data":{"attackComplexity":"LOW","attackRequirements":"NONE","attackVector":"NETWORK","baseScore":8.5,"baseSeverity":"HIGH","privilegesRequired":"NONE","subAvailabilityImpact":"NONE","subConfidentialityImpact":"NONE","subIntegrityImpact":"NONE","userInteraction":"ACTIVE","vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","version":"4.0","vulnAvailabilityImpact":"NONE","vulnConfidentialityImpact":"HIGH","vulnIntegrityImpact":"HIGH"}}],"references":[{"url":"https://github.com/frappe/frappe/commit/eb9c1446cac13236c6d573b136786db2e46254fa","name":"https://github.com/frappe/frappe/commit/eb9c1446cac13236c6d573b136786db2e46254fa","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/frappe/frappe/commit/d7460769f999c68d3121b680119f8724ddd3eb9d","name":"https://github.com/frappe/frappe/commit/d7460769f999c68d3121b680119f8724ddd3eb9d","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/frappe/frappe/pull/40073","name":"https://github.com/frappe/frappe/pull/40073","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/frappe/frappe/pull/40700","name":"https://github.com/frappe/frappe/pull/40700","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/frappe/frappe/releases/tag/v16.26.0","name":"https://github.com/frappe/frappe/releases/tag/v16.26.0","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/frappe/frappe/pull/40701","name":"https://github.com/frappe/frappe/pull/40701","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/frappe/frappe/security/advisories/GHSA-2ph8-x773-8p2x","name":"https://github.com/frappe/frappe/security/advisories/GHSA-2ph8-x773-8p2x","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/frappe/frappe/commit/336c7d335db762b494acdfe43aea69d459fd51d7","name":"https://github.com/frappe/frappe/commit/336c7d335db762b494acdfe43aea69d459fd51d7","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/frappe/frappe/releases/tag/v15.114.0","name":"https://github.com/frappe/frappe/releases/tag/v15.114.0","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-66001","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-66001","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"frappe","product":"frappe","version":"affected < 15.114.0","platforms":[]},{"source":"CNA","vendor":"frappe","product":"frappe","version":"affected >= 16.0.0-beta.1, < 16.26.0","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"product":"frappe","vendor":"frappe","versions":[{"status":"affected","version":"< 15.114.0"},{"status":"affected","version":">= 16.0.0-beta.1, < 16.26.0"}]}],"descriptions":[{"lang":"en","value":"Frappe is a full-stack web application framework. Prior to 15.114.0 and 16.26.0, the approve and authorize functions in frappe/integrations/oauth2.py allow the OAuth2 consent flow to proceed without restricting approve to POST, without a csrf_token in frappe/templates/includes/oauth_confirmation.html, and without scoping an active OAuth token check to the requesting client. An attacker can cause an authenticated user to approve an OAuth grant or reuse authorization state for the wrong client, exposing data and permitting actions within the granted scopes. This issue is fixed in versions 15.114.0 and 16.26.0."}],"metrics":[{"cvssV4_0":{"attackComplexity":"LOW","attackRequirements":"NONE","attackVector":"NETWORK","baseScore":8.5,"baseSeverity":"HIGH","privilegesRequired":"NONE","subAvailabilityImpact":"NONE","subConfidentialityImpact":"NONE","subIntegrityImpact":"NONE","userInteraction":"ACTIVE","vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","version":"4.0","vulnAvailabilityImpact":"NONE","vulnConfidentialityImpact":"HIGH","vulnIntegrityImpact":"HIGH"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-352","description":"CWE-352: Cross-Site Request Forgery (CSRF)","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-08-20T18:27:32.056Z","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","shortName":"GitHub_M"},"references":[{"name":"https://github.com/frappe/frappe/security/advisories/GHSA-2ph8-x773-8p2x","tags":["x_refsource_CONFIRM"],"url":"https://github.com/frappe/frappe/security/advisories/GHSA-2ph8-x773-8p2x"},{"name":"https://github.com/frappe/frappe/pull/40073","tags":["x_refsource_MISC"],"url":"https://github.com/frappe/frappe/pull/40073"},{"name":"https://github.com/frappe/frappe/pull/40700","tags":["x_refsource_MISC"],"url":"https://github.com/frappe/frappe/pull/40700"},{"name":"https://github.com/frappe/frappe/pull/40701","tags":["x_refsource_MISC"],"url":"https://github.com/frappe/frappe/pull/40701"},{"name":"https://github.com/frappe/frappe/commit/336c7d335db762b494acdfe43aea69d459fd51d7","tags":["x_refsource_MISC"],"url":"https://github.com/frappe/frappe/commit/336c7d335db762b494acdfe43aea69d459fd51d7"},{"name":"https://github.com/frappe/frappe/commit/d7460769f999c68d3121b680119f8724ddd3eb9d","tags":["x_refsource_MISC"],"url":"https://github.com/frappe/frappe/commit/d7460769f999c68d3121b680119f8724ddd3eb9d"},{"name":"https://github.com/frappe/frappe/commit/eb9c1446cac13236c6d573b136786db2e46254fa","tags":["x_refsource_MISC"],"url":"https://github.com/frappe/frappe/commit/eb9c1446cac13236c6d573b136786db2e46254fa"},{"name":"https://github.com/frappe/frappe/releases/tag/v15.114.0","tags":["x_refsource_MISC"],"url":"https://github.com/frappe/frappe/releases/tag/v15.114.0"},{"name":"https://github.com/frappe/frappe/releases/tag/v16.26.0","tags":["x_refsource_MISC"],"url":"https://github.com/frappe/frappe/releases/tag/v16.26.0"}],"source":{"advisory":"GHSA-2ph8-x773-8p2x","discovery":"UNKNOWN"},"title":"Frappe: Improper Authorization in OAuth2 Consent Endpoint"}},"cveMetadata":{"assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","assignerShortName":"GitHub_M","cveId":"CVE-2026-66001","datePublished":"2026-08-20T18:27:32.056Z","dateReserved":"2026-07-23T18:54:15.833Z","dateUpdated":"2026-08-20T18:27:32.056Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-08-20 19:16:58","lastModifiedDate":"2026-08-20 19:16:58","problem_types":["CWE-352","CWE-352 CWE-352: Cross-Site Request Forgery (CSRF)"],"metrics":{"cvssMetricV40":[{"source":"security-advisories@github.com","type":"Secondary","cvssData":{"version":"4.0","vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/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","baseScore":8.5,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","attackRequirements":"NONE","privilegesRequired":"NONE","userInteraction":"ACTIVE","vulnConfidentialityImpact":"HIGH","vulnIntegrityImpact":"HIGH","vulnAvailabilityImpact":"NONE","subConfidentialityImpact":"NONE","subIntegrityImpact":"NONE","subAvailabilityImpact":"NONE","exploitMaturity":"NOT_DEFINED","confidentialityRequirement":"NOT_DEFINED","integrityRequirement":"NOT_DEFINED","availabilityRequirement":"NOT_DEFINED","modifiedAttackVector":"NOT_DEFINED","modifiedAttackComplexity":"NOT_DEFINED","modifiedAttackRequirements":"NOT_DEFINED","modifiedPrivilegesRequired":"NOT_DEFINED","modifiedUserInteraction":"NOT_DEFINED","modifiedVulnConfidentialityImpact":"NOT_DEFINED","modifiedVulnIntegrityImpact":"NOT_DEFINED","modifiedVulnAvailabilityImpact":"NOT_DEFINED","modifiedSubConfidentialityImpact":"NOT_DEFINED","modifiedSubIntegrityImpact":"NOT_DEFINED","modifiedSubAvailabilityImpact":"NOT_DEFINED","Safety":"NOT_DEFINED","Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","valueDensity":"NOT_DEFINED","vulnerabilityResponseEffort":"NOT_DEFINED","providerUrgency":"NOT_DEFINED"}}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"66001","Ordinal":"1","Title":"Frappe: Improper Authorization in OAuth2 Consent Endpoint","CVE":"CVE-2026-66001","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"66001","Ordinal":"1","NoteData":"Frappe is a full-stack web application framework. Prior to 15.114.0 and 16.26.0, the approve and authorize functions in frappe/integrations/oauth2.py allow the OAuth2 consent flow to proceed without restricting approve to POST, without a csrf_token in frappe/templates/includes/oauth_confirmation.html, and without scoping an active OAuth token check to the requesting client. An attacker can cause an authenticated user to approve an OAuth grant or reuse authorization state for the wrong client, exposing data and permitting actions within the granted scopes. This issue is fixed in versions 15.114.0 and 16.26.0.","Type":"Description","Title":"Frappe: Improper Authorization in OAuth2 Consent Endpoint"}]}}}