CVE-2026-65635 (GCVE-0-2026-65635)
Vulnerability from cvelistv5 – Published: 2026-07-30 14:17 – Updated: 2026-07-31 04:20
VLAI
EPSS
VEX
Title
Boruta dynamic client registration allows creation of over-privileged OAuth clients
Summary
Improper Isolation or Compartmentalization vulnerability in malach-it boruta (Elixir.Boruta.Openid module) allows attackers to register OpenID Connect clients with administrative privileges through the dynamic client registration entry point. Boruta.Openid.register_client/3 forwards caller-supplied registration parameters to the administrative client creation path without a public/admin field-level allowlist, so an unauthenticated registrant can set security-sensitive attributes including supported grant types, authorized scopes, PKCE enforcement, public refresh and revocation behavior, token lifetimes, and signing settings. The library does not distinguish between metadata a public registrant is allowed to set and administrative controls that should require operator approval.
This vulnerability is associated with program files lib/boruta/openid.ex and program routines 'Elixir.Boruta.Openid':register_client/3, 'Elixir.Boruta.Openid':parse_registration_params/2.
This issue affects boruta from 2.3.0 before 2.3.7.
Severity
SSVC
Exploitation: poc
Automatable: no
Technical Impact: partial
CISA Coordinator (v2.0.3)
CWE
- CWE-653 - Improper Isolation or Compartmentalization
Assigner
References
5 references
| URL | Tags |
|---|---|
| https://github.com/malach-it/boruta_auth/security… | vendor-advisoryrelated |
| https://cna.erlef.org/cves/CVE-2026-65635.html | related |
| https://osv.dev/vulnerability/EEF-CVE-2026-65635 | related |
| https://github.com/malach-it/boruta_auth/commit/8… | patch |
| https://github.com/malach-it/boruta_auth/commit/9… | patch |
Impacted products
Credits
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-65635",
"options": [
{
"Exploitation": "poc"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-07-30T16:13:41.629153Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-07-30T16:13:59.649Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"references": [
{
"tags": [
"exploit"
],
"url": "https://github.com/malach-it/boruta_auth/security/advisories/GHSA-w869-fcf2-68vp"
}
],
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"collectionURL": "https://repo.hex.pm",
"cpes": [
"cpe:2.3:a:malach-it:boruta:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"Elixir.Boruta.Openid"
],
"packageName": "boruta",
"packageURL": "pkg:hex/boruta",
"product": "boruta",
"programFiles": [
"lib/boruta/openid.ex"
],
"programRoutines": [
{
"name": "\u0027Elixir.Boruta.Openid\u0027:register_client/3"
},
{
"name": "\u0027Elixir.Boruta.Openid\u0027:parse_registration_params/2"
}
],
"repo": "https://github.com/malach-it/boruta_auth",
"vendor": "malach-it",
"versions": [
{
"lessThan": "2.3.7",
"status": "affected",
"version": "2.3.0",
"versionType": "semver"
}
]
},
{
"collectionURL": "https://github.com",
"cpes": [
"cpe:2.3:a:malach-it:boruta:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"Elixir.Boruta.Openid"
],
"packageName": "malach-it/boruta_auth",
"packageURL": "pkg:github/malach-it/boruta_auth",
"product": "boruta",
"programFiles": [
"lib/boruta/openid.ex"
],
"programRoutines": [
{
"name": "\u0027Elixir.Boruta.Openid\u0027:register_client/3"
},
{
"name": "\u0027Elixir.Boruta.Openid\u0027:parse_registration_params/2"
}
],
"repo": "https://github.com/malach-it/boruta_auth",
"vendor": "malach-it",
"versions": [
{
"changes": [
{
"at": "82584c854a332482232fd25301ab12a835f9f643",
"status": "unaffected"
},
{
"at": "95619a1beaff68fa766cca9b388e7c780d182525",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "85481b706636fe68a43d0b8d3275e2afc7f7fee1",
"versionType": "git"
}
]
}
],
"configurations": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eA deployment is vulnerable when the host application exposes \u003ctt\u003eBoruta.Openid.register_client/3\u003c/tt\u003e on a network endpoint without requiring a trusted initial access token and without a strict server-side allowlist that prevents caller-supplied administrative attributes from reaching the underlying changeset. The standard controller generator does not install a dynamic client registration route, so deployments that never call \u003ctt\u003eBoruta.Openid.register_client/3\u003c/tt\u003e from a public endpoint are not exploitable.\u003c/p\u003e"
}
],
"value": "A deployment is vulnerable when the host application exposes Boruta.Openid.register_client/3 on a network endpoint without requiring a trusted initial access token and without a strict server-side allowlist that prevents caller-supplied administrative attributes from reaching the underlying changeset. The standard controller generator does not install a dynamic client registration route, so deployments that never call Boruta.Openid.register_client/3 from a public endpoint are not exploitable."
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:malach-it:boruta:*:*:*:*:*:*:*:*",
"versionEndExcluding": "2.3.7",
"versionStartIncluding": "2.3.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "AND"
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Pascal Knoth"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Pascal Knoth"
},
{
"lang": "en",
"type": "analyst",
"value": "Jonatan M\u00e4nnchen / EEF"
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eImproper Isolation or Compartmentalization vulnerability in malach-it boruta (\u003ctt\u003eElixir.Boruta.Openid\u003c/tt\u003e module) allows attackers to register OpenID Connect clients with administrative privileges through the dynamic client registration entry point. \u003ctt\u003eBoruta.Openid.register_client/3\u003c/tt\u003e forwards caller-supplied registration parameters to the administrative client creation path without a public/admin field-level allowlist, so an unauthenticated registrant can set security-sensitive attributes including supported grant types, authorized scopes, PKCE enforcement, public refresh and revocation behavior, token lifetimes, and signing settings. The library does not distinguish between metadata a public registrant is allowed to set and administrative controls that should require operator approval.\u003c/p\u003e\u003cp\u003eThis vulnerability is associated with program files \u003ctt\u003elib/boruta/openid.ex\u003c/tt\u003e and program routines \u003ctt\u003e\u0027Elixir.Boruta.Openid\u0027:register_client/3\u003c/tt\u003e, \u003ctt\u003e\u0027Elixir.Boruta.Openid\u0027:parse_registration_params/2\u003c/tt\u003e.\u003c/p\u003e\u003cp\u003eThis issue affects boruta from 2.3.0 before 2.3.7.\u003c/p\u003e"
}
],
"value": "Improper Isolation or Compartmentalization vulnerability in malach-it boruta (Elixir.Boruta.Openid module) allows attackers to register OpenID Connect clients with administrative privileges through the dynamic client registration entry point. Boruta.Openid.register_client/3 forwards caller-supplied registration parameters to the administrative client creation path without a public/admin field-level allowlist, so an unauthenticated registrant can set security-sensitive attributes including supported grant types, authorized scopes, PKCE enforcement, public refresh and revocation behavior, token lifetimes, and signing settings. The library does not distinguish between metadata a public registrant is allowed to set and administrative controls that should require operator approval.\n\nThis vulnerability is associated with program files lib/boruta/openid.ex and program routines \u0027Elixir.Boruta.Openid\u0027:register_client/3, \u0027Elixir.Boruta.Openid\u0027:parse_registration_params/2.\n\nThis issue affects boruta from 2.3.0 before 2.3.7."
}
],
"impacts": [
{
"capecId": "CAPEC-1",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-1 Accessing Functionality Not Properly Constrained by ACLs"
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 8.3,
"baseSeverity": "HIGH",
"privilegesRequired": "NONE",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "LOW",
"subIntegrityImpact": "LOW",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:H/VA:L/SC:L/SI:L/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "LOW",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "HIGH"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-653",
"description": "CWE-653 Improper Isolation or Compartmentalization",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-07-31T04:20:15.914Z",
"orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"shortName": "EEF"
},
"references": [
{
"tags": [
"vendor-advisory",
"related"
],
"url": "https://github.com/malach-it/boruta_auth/security/advisories/GHSA-w869-fcf2-68vp"
},
{
"tags": [
"related"
],
"url": "https://cna.erlef.org/cves/CVE-2026-65635.html"
},
{
"tags": [
"related"
],
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-65635"
},
{
"tags": [
"patch"
],
"url": "https://github.com/malach-it/boruta_auth/commit/82584c854a332482232fd25301ab12a835f9f643"
},
{
"tags": [
"patch"
],
"url": "https://github.com/malach-it/boruta_auth/commit/95619a1beaff68fa766cca9b388e7c780d182525"
}
],
"source": {
"discovery": "EXTERNAL"
},
"title": "Boruta dynamic client registration allows creation of over-privileged OAuth clients",
"workarounds": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eDisable the dynamic client registration route or restrict it to authenticated administrators. If dynamic registration must remain available to untrusted callers, do not forward the request parameters to \u003ctt\u003eBoruta.Openid.register_client/3\u003c/tt\u003e directly. Instead, construct a new parameter map in the host application that contains only the standards-defined public metadata (such as redirect URIs, client name, logo, and contacts) and overwrite every administrative attribute (supported grant types, authorized scopes, PKCE flag, public refresh and revocation flags, token lifetimes, signing settings, token endpoint authentication method) with values from a fixed least-privilege server-side profile before calling the function.\u003c/p\u003e"
}
],
"value": "Disable the dynamic client registration route or restrict it to authenticated administrators. If dynamic registration must remain available to untrusted callers, do not forward the request parameters to Boruta.Openid.register_client/3 directly. Instead, construct a new parameter map in the host application that contains only the standards-defined public metadata (such as redirect URIs, client name, logo, and contacts) and overwrite every administrative attribute (supported grant types, authorized scopes, PKCE flag, public refresh and revocation flags, token lifetimes, signing settings, token endpoint authentication method) with values from a fixed least-privilege server-side profile before calling the function."
}
],
"x_generator": {
"engine": "cvelib 1.8.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"assignerShortName": "EEF",
"cveId": "CVE-2026-65635",
"datePublished": "2026-07-30T14:17:02.942Z",
"dateReserved": "2026-07-22T13:58:26.233Z",
"dateUpdated": "2026-07-31T04:20:15.914Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-65635",
"date": "2026-08-03",
"epss": "0.00301",
"percentile": "0.22471"
},
"nvd": "{\"cve\":{\"id\":\"CVE-2026-65635\",\"sourceIdentifier\":\"6b3ad84c-e1a6-4bf7-a703-f496b71e49db\",\"published\":\"2026-07-30T15:16:35.017\",\"lastModified\":\"2026-07-30T17:16:34.043\",\"vulnStatus\":\"Deferred\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"Improper Isolation or Compartmentalization vulnerability in malach-it boruta (Elixir.Boruta.Openid module) allows attackers to register OpenID Connect clients with administrative privileges through the dynamic client registration entry point. Boruta.Openid.register_client/3 forwards caller-supplied registration parameters to the administrative client creation path without a public/admin field-level allowlist, so an unauthenticated registrant can set security-sensitive attributes including supported grant types, authorized scopes, PKCE enforcement, public refresh and revocation behavior, token lifetimes, and signing settings. The library does not distinguish between metadata a public registrant is allowed to set and administrative controls that should require operator approval.\\n\\nThis vulnerability is associated with program files lib/boruta/openid.ex and program routines \u0027Elixir.Boruta.Openid\u0027:register_client/3, \u0027Elixir.Boruta.Openid\u0027:parse_registration_params/2.\\n\\nThis issue affects boruta from 2.3.0 before 2.3.7.\"}],\"affected\":[{\"source\":\"6b3ad84c-e1a6-4bf7-a703-f496b71e49db\",\"affectedData\":[{\"vendor\":\"malach-it\",\"product\":\"boruta\",\"defaultStatus\":\"unaffected\",\"collectionURL\":\"https://repo.hex.pm\",\"packageName\":\"boruta\",\"cpes\":[\"cpe:2.3:a:malach-it:boruta:*:*:*:*:*:*:*:*\"],\"modules\":[\"Elixir.Boruta.Openid\"],\"programFiles\":[\"lib/boruta/openid.ex\"],\"programRoutines\":[{\"name\":\"\u0027Elixir.Boruta.Openid\u0027:register_client/3\"},{\"name\":\"\u0027Elixir.Boruta.Openid\u0027:parse_registration_params/2\"}],\"repo\":\"https://github.com/malach-it/boruta_auth\",\"packageURL\":\"pkg:hex/boruta\",\"versions\":[{\"version\":\"2.3.0\",\"lessThan\":\"2.3.7\",\"versionType\":\"semver\",\"status\":\"affected\"}]},{\"vendor\":\"malach-it\",\"product\":\"boruta\",\"defaultStatus\":\"unaffected\",\"collectionURL\":\"https://github.com\",\"packageName\":\"malach-it/boruta_auth\",\"cpes\":[\"cpe:2.3:a:malach-it:boruta:*:*:*:*:*:*:*:*\"],\"modules\":[\"Elixir.Boruta.Openid\"],\"programFiles\":[\"lib/boruta/openid.ex\"],\"programRoutines\":[{\"name\":\"\u0027Elixir.Boruta.Openid\u0027:register_client/3\"},{\"name\":\"\u0027Elixir.Boruta.Openid\u0027:parse_registration_params/2\"}],\"repo\":\"https://github.com/malach-it/boruta_auth\",\"packageURL\":\"pkg:github/malach-it/boruta_auth\",\"versions\":[{\"version\":\"85481b706636fe68a43d0b8d3275e2afc7f7fee1\",\"lessThan\":\"*\",\"versionType\":\"git\",\"status\":\"affected\",\"changes\":[{\"at\":\"82584c854a332482232fd25301ab12a835f9f643\",\"status\":\"unaffected\"},{\"at\":\"95619a1beaff68fa766cca9b388e7c780d182525\",\"status\":\"unaffected\"}]}]}]}],\"metrics\":{\"cvssMetricV40\":[{\"source\":\"6b3ad84c-e1a6-4bf7-a703-f496b71e49db\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"4.0\",\"vectorString\":\"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:H/VA:L/SC:L/SI:L/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.3,\"baseSeverity\":\"HIGH\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"attackRequirements\":\"PRESENT\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"vulnConfidentialityImpact\":\"LOW\",\"vulnIntegrityImpact\":\"HIGH\",\"vulnAvailabilityImpact\":\"LOW\",\"subConfidentialityImpact\":\"LOW\",\"subIntegrityImpact\":\"LOW\",\"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\"}}],\"ssvcV203\":[{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"ssvcData\":{\"timestamp\":\"2026-07-30T16:13:41.629153Z\",\"id\":\"CVE-2026-65635\",\"options\":[{\"exploitation\":\"poc\"},{\"automatable\":\"no\"},{\"technicalImpact\":\"partial\"}],\"role\":\"CISA Coordinator\",\"version\":\"2.0.3\"}}]},\"weaknesses\":[{\"source\":\"6b3ad84c-e1a6-4bf7-a703-f496b71e49db\",\"type\":\"Secondary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-653\"}]}],\"references\":[{\"url\":\"https://cna.erlef.org/cves/CVE-2026-65635.html\",\"source\":\"6b3ad84c-e1a6-4bf7-a703-f496b71e49db\"},{\"url\":\"https://github.com/malach-it/boruta_auth/commit/82584c854a332482232fd25301ab12a835f9f643\",\"source\":\"6b3ad84c-e1a6-4bf7-a703-f496b71e49db\"},{\"url\":\"https://github.com/malach-it/boruta_auth/commit/95619a1beaff68fa766cca9b388e7c780d182525\",\"source\":\"6b3ad84c-e1a6-4bf7-a703-f496b71e49db\"},{\"url\":\"https://github.com/malach-it/boruta_auth/security/advisories/GHSA-w869-fcf2-68vp\",\"source\":\"6b3ad84c-e1a6-4bf7-a703-f496b71e49db\"},{\"url\":\"https://osv.dev/vulnerability/EEF-CVE-2026-65635\",\"source\":\"6b3ad84c-e1a6-4bf7-a703-f496b71e49db\"},{\"url\":\"https://github.com/malach-it/boruta_auth/security/advisories/GHSA-w869-fcf2-68vp\",\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\"}]}}",
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-65635\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"poc\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-07-30T16:13:41.629153Z\"}}}], \"references\": [{\"url\": \"https://github.com/malach-it/boruta_auth/security/advisories/GHSA-w869-fcf2-68vp\", \"tags\": [\"exploit\"]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-07-30T16:13:56.376Z\"}}], \"cna\": {\"title\": \"Boruta dynamic client registration allows creation of over-privileged OAuth clients\", \"source\": {\"discovery\": \"EXTERNAL\"}, \"credits\": [{\"lang\": \"en\", \"type\": \"finder\", \"value\": \"Pascal Knoth\"}, {\"lang\": \"en\", \"type\": \"remediation developer\", \"value\": \"Pascal Knoth\"}, {\"lang\": \"en\", \"type\": \"analyst\", \"value\": \"Jonatan M\\u00e4nnchen / EEF\"}], \"impacts\": [{\"capecId\": \"CAPEC-1\", \"descriptions\": [{\"lang\": \"en\", \"value\": \"CAPEC-1 Accessing Functionality Not Properly Constrained by ACLs\"}]}], \"metrics\": [{\"format\": \"CVSS\", \"cvssV4_0\": {\"version\": \"4.0\", \"baseScore\": 8.3, \"attackVector\": \"NETWORK\", \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:H/VA:L/SC:L/SI:L/SA:N\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"attackRequirements\": \"PRESENT\", \"privilegesRequired\": \"NONE\", \"subIntegrityImpact\": \"LOW\", \"vulnIntegrityImpact\": \"HIGH\", \"subAvailabilityImpact\": \"NONE\", \"vulnAvailabilityImpact\": \"LOW\", \"subConfidentialityImpact\": \"LOW\", \"vulnConfidentialityImpact\": \"LOW\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"GENERAL\"}]}], \"affected\": [{\"cpes\": [\"cpe:2.3:a:malach-it:boruta:*:*:*:*:*:*:*:*\"], \"repo\": \"https://github.com/malach-it/boruta_auth\", \"vendor\": \"malach-it\", \"modules\": [\"Elixir.Boruta.Openid\"], \"product\": \"boruta\", \"versions\": [{\"status\": \"affected\", \"version\": \"2.3.0\", \"lessThan\": \"2.3.7\", \"versionType\": \"semver\"}], \"packageURL\": \"pkg:hex/boruta\", \"packageName\": \"boruta\", \"programFiles\": [\"lib/boruta/openid.ex\"], \"collectionURL\": \"https://repo.hex.pm\", \"defaultStatus\": \"unaffected\", \"programRoutines\": [{\"name\": \"\u0027Elixir.Boruta.Openid\u0027:register_client/3\"}, {\"name\": \"\u0027Elixir.Boruta.Openid\u0027:parse_registration_params/2\"}]}, {\"cpes\": [\"cpe:2.3:a:malach-it:boruta:*:*:*:*:*:*:*:*\"], \"repo\": \"https://github.com/malach-it/boruta_auth\", \"vendor\": \"malach-it\", \"modules\": [\"Elixir.Boruta.Openid\"], \"product\": \"boruta\", \"versions\": [{\"status\": \"affected\", \"changes\": [{\"at\": \"82584c854a332482232fd25301ab12a835f9f643\", \"status\": \"unaffected\"}, {\"at\": \"95619a1beaff68fa766cca9b388e7c780d182525\", \"status\": \"unaffected\"}], \"version\": \"85481b706636fe68a43d0b8d3275e2afc7f7fee1\", \"lessThan\": \"*\", \"versionType\": \"git\"}], \"packageURL\": \"pkg:github/malach-it/boruta_auth\", \"packageName\": \"malach-it/boruta_auth\", \"programFiles\": [\"lib/boruta/openid.ex\"], \"collectionURL\": \"https://github.com\", \"defaultStatus\": \"unaffected\", \"programRoutines\": [{\"name\": \"\u0027Elixir.Boruta.Openid\u0027:register_client/3\"}, {\"name\": \"\u0027Elixir.Boruta.Openid\u0027:parse_registration_params/2\"}]}], \"references\": [{\"url\": \"https://github.com/malach-it/boruta_auth/security/advisories/GHSA-w869-fcf2-68vp\", \"tags\": [\"vendor-advisory\", \"related\"]}, {\"url\": \"https://cna.erlef.org/cves/CVE-2026-65635.html\", \"tags\": [\"related\"]}, {\"url\": \"https://osv.dev/vulnerability/EEF-CVE-2026-65635\", \"tags\": [\"related\"]}, {\"url\": \"https://github.com/malach-it/boruta_auth/commit/82584c854a332482232fd25301ab12a835f9f643\", \"tags\": [\"patch\"]}, {\"url\": \"https://github.com/malach-it/boruta_auth/commit/95619a1beaff68fa766cca9b388e7c780d182525\", \"tags\": [\"patch\"]}], \"workarounds\": [{\"lang\": \"en\", \"value\": \"Disable the dynamic client registration route or restrict it to authenticated administrators. If dynamic registration must remain available to untrusted callers, do not forward the request parameters to Boruta.Openid.register_client/3 directly. Instead, construct a new parameter map in the host application that contains only the standards-defined public metadata (such as redirect URIs, client name, logo, and contacts) and overwrite every administrative attribute (supported grant types, authorized scopes, PKCE flag, public refresh and revocation flags, token lifetimes, signing settings, token endpoint authentication method) with values from a fixed least-privilege server-side profile before calling the function.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cp\u003eDisable the dynamic client registration route or restrict it to authenticated administrators. If dynamic registration must remain available to untrusted callers, do not forward the request parameters to \u003ctt\u003eBoruta.Openid.register_client/3\u003c/tt\u003e directly. Instead, construct a new parameter map in the host application that contains only the standards-defined public metadata (such as redirect URIs, client name, logo, and contacts) and overwrite every administrative attribute (supported grant types, authorized scopes, PKCE flag, public refresh and revocation flags, token lifetimes, signing settings, token endpoint authentication method) with values from a fixed least-privilege server-side profile before calling the function.\u003c/p\u003e\", \"base64\": false}]}], \"x_generator\": {\"engine\": \"cvelib 1.8.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"Improper Isolation or Compartmentalization vulnerability in malach-it boruta (Elixir.Boruta.Openid module) allows attackers to register OpenID Connect clients with administrative privileges through the dynamic client registration entry point. Boruta.Openid.register_client/3 forwards caller-supplied registration parameters to the administrative client creation path without a public/admin field-level allowlist, so an unauthenticated registrant can set security-sensitive attributes including supported grant types, authorized scopes, PKCE enforcement, public refresh and revocation behavior, token lifetimes, and signing settings. The library does not distinguish between metadata a public registrant is allowed to set and administrative controls that should require operator approval.\\n\\nThis vulnerability is associated with program files lib/boruta/openid.ex and program routines \u0027Elixir.Boruta.Openid\u0027:register_client/3, \u0027Elixir.Boruta.Openid\u0027:parse_registration_params/2.\\n\\nThis issue affects boruta from 2.3.0 before 2.3.7.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cp\u003eImproper Isolation or Compartmentalization vulnerability in malach-it boruta (\u003ctt\u003eElixir.Boruta.Openid\u003c/tt\u003e module) allows attackers to register OpenID Connect clients with administrative privileges through the dynamic client registration entry point. \u003ctt\u003eBoruta.Openid.register_client/3\u003c/tt\u003e forwards caller-supplied registration parameters to the administrative client creation path without a public/admin field-level allowlist, so an unauthenticated registrant can set security-sensitive attributes including supported grant types, authorized scopes, PKCE enforcement, public refresh and revocation behavior, token lifetimes, and signing settings. The library does not distinguish between metadata a public registrant is allowed to set and administrative controls that should require operator approval.\u003c/p\u003e\u003cp\u003eThis vulnerability is associated with program files \u003ctt\u003elib/boruta/openid.ex\u003c/tt\u003e and program routines \u003ctt\u003e\u0027Elixir.Boruta.Openid\u0027:register_client/3\u003c/tt\u003e, \u003ctt\u003e\u0027Elixir.Boruta.Openid\u0027:parse_registration_params/2\u003c/tt\u003e.\u003c/p\u003e\u003cp\u003eThis issue affects boruta from 2.3.0 before 2.3.7.\u003c/p\u003e\", \"base64\": false}]}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-653\", \"description\": \"CWE-653 Improper Isolation or Compartmentalization\"}]}], \"configurations\": [{\"lang\": \"en\", \"value\": \"A deployment is vulnerable when the host application exposes Boruta.Openid.register_client/3 on a network endpoint without requiring a trusted initial access token and without a strict server-side allowlist that prevents caller-supplied administrative attributes from reaching the underlying changeset. The standard controller generator does not install a dynamic client registration route, so deployments that never call Boruta.Openid.register_client/3 from a public endpoint are not exploitable.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cp\u003eA deployment is vulnerable when the host application exposes \u003ctt\u003eBoruta.Openid.register_client/3\u003c/tt\u003e on a network endpoint without requiring a trusted initial access token and without a strict server-side allowlist that prevents caller-supplied administrative attributes from reaching the underlying changeset. The standard controller generator does not install a dynamic client registration route, so deployments that never call \u003ctt\u003eBoruta.Openid.register_client/3\u003c/tt\u003e from a public endpoint are not exploitable.\u003c/p\u003e\", \"base64\": false}]}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:a:malach-it:boruta:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"2.3.7\", \"versionStartIncluding\": \"2.3.0\"}], \"operator\": \"OR\"}], \"operator\": \"AND\"}], \"providerMetadata\": {\"orgId\": \"6b3ad84c-e1a6-4bf7-a703-f496b71e49db\", \"shortName\": \"EEF\", \"dateUpdated\": \"2026-07-31T04:20:15.914Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2026-65635\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-07-31T04:20:15.914Z\", \"dateReserved\": \"2026-07-22T13:58:26.233Z\", \"assignerOrgId\": \"6b3ad84c-e1a6-4bf7-a703-f496b71e49db\", \"datePublished\": \"2026-07-30T14:17:02.942Z\", \"assignerShortName\": \"EEF\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
The MITRE ATT&CK techniques below are AI-generated suggestions, inferred from the description of the
vulnerability by the CIRCL/vulnerability-attack-technique-classification-roberta-base
model, served locally by ML-Gateway.
They have not been verified by an analyst and are provided for guidance only.
Loading…
Loading…