CVE-2026-88057 (GCVE-0-2026-88057)
Vulnerability from cvelistv5
Published
2026-09-10 18:46
Modified
2026-09-11 20:32
Severity ?
VLAI Severity ?
EPSS score ?
CWE
- CWE-79 - Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
Summary
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 20.3.28, 21.2.20, and 22.1.0, Angular's compiler and runtime in @angular/core and @angular/compiler could omit or select an incorrect sanitizer for security-sensitive directive host bindings because SecurityContext was derived from the declaring directive or component selector rather than the concrete host element. The mismatch is reachable through hostDirectives composition, inherited HostBinding declarations, createComponent with a custom hostElement or dynamic directives, SVG/MathML namespace elements, and tag-neutral selectors such as :not(...). Attacker-controlled href, src, action, xlink:href, or data values can therefore reach DOM attributes without Angular's built-in sanitizer and execute arbitrary JavaScript in the user's browser context. Applications unable to upgrade can use DomSanitizer.sanitize with SecurityContext.URL before assignment or restrict inputs to validated HTTP and HTTPS URL schemes. This issue is fixed in versions 20.3.28, 21.2.20, and 22.1.0.
References
| URL | Tags | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|||||||||||||||||||||||||||||
Impacted products
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-88057",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-09-11T16:34:33.902581Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-09-11T20:32:49.884Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "angular",
"vendor": "angular",
"versions": [
{
"status": "affected",
"version": "\u003c= 19.2.25"
},
{
"status": "affected",
"version": "\u003e= 20.0.0, \u003c 20.3.28"
},
{
"status": "affected",
"version": "\u003e= 21.0.0, \u003c 21.2.20"
},
{
"status": "affected",
"version": "\u003e= 22.0.0, \u003c 22.1.0"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 20.3.28, 21.2.20, and 22.1.0, Angular\u0027s compiler and runtime in @angular/core and @angular/compiler could omit or select an incorrect sanitizer for security-sensitive directive host bindings because SecurityContext was derived from the declaring directive or component selector rather than the concrete host element. The mismatch is reachable through hostDirectives composition, inherited HostBinding declarations, createComponent with a custom hostElement or dynamic directives, SVG/MathML namespace elements, and tag-neutral selectors such as :not(...). Attacker-controlled href, src, action, xlink:href, or data values can therefore reach DOM attributes without Angular\u0027s built-in sanitizer and execute arbitrary JavaScript in the user\u0027s browser context. Applications unable to upgrade can use DomSanitizer.sanitize with SecurityContext.URL before assignment or restrict inputs to validated HTTP and HTTPS URL schemes. This issue is fixed in versions 20.3.28, 21.2.20, and 22.1.0."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 5.3,
"baseSeverity": "MEDIUM",
"privilegesRequired": "NONE",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "LOW",
"subIntegrityImpact": "LOW",
"userInteraction": "PASSIVE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "NONE"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-79",
"description": "CWE-79: Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-10T18:46:51.847Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/angular/angular/security/advisories/GHSA-hh8m-fm6v-7cvg",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/angular/angular/security/advisories/GHSA-hh8m-fm6v-7cvg"
},
{
"name": "https://github.com/angular/angular/issues/69550",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/issues/69550"
},
{
"name": "https://github.com/angular/angular/pull/69558",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/pull/69558"
},
{
"name": "https://github.com/angular/angular/commit/2f96c8020f85ccb715a76de4b79a0c680c2c7264",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/commit/2f96c8020f85ccb715a76de4b79a0c680c2c7264"
},
{
"name": "https://github.com/angular/angular/commit/6afe6fa781c2f0931f0aedd729b9884a8fe212ee",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/commit/6afe6fa781c2f0931f0aedd729b9884a8fe212ee"
},
{
"name": "https://github.com/angular/angular/commit/6caa298dee58319b2d674dc91364e26ffe3ecb2b",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/commit/6caa298dee58319b2d674dc91364e26ffe3ecb2b"
},
{
"name": "https://github.com/angular/angular/releases/tag/v20.3.28",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/releases/tag/v20.3.28"
},
{
"name": "https://github.com/angular/angular/releases/tag/v21.2.20",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/releases/tag/v21.2.20"
},
{
"name": "https://github.com/angular/angular/releases/tag/v22.1.0",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/releases/tag/v22.1.0"
}
],
"source": {
"advisory": "GHSA-hh8m-fm6v-7cvg",
"discovery": "UNKNOWN"
},
"title": "Angular: Sanitization bypass via directive host bindings on concrete host elements in @angular/core and @angular/compiler"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-88057",
"datePublished": "2026-09-10T18:46:51.847Z",
"dateReserved": "2026-09-09T21:22:45.434Z",
"dateUpdated": "2026-09-11T20:32:49.884Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-88057\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"yes\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-09-11T16:34:33.902581Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-09-11T16:34:34.924Z\"}}], \"cna\": {\"title\": \"Angular: Sanitization bypass via directive host bindings on concrete host elements in @angular/core and @angular/compiler\", \"source\": {\"advisory\": \"GHSA-hh8m-fm6v-7cvg\", \"discovery\": \"UNKNOWN\"}, \"metrics\": [{\"cvssV4_0\": {\"version\": \"4.0\", \"baseScore\": 5.3, \"attackVector\": \"NETWORK\", \"baseSeverity\": \"MEDIUM\", \"vectorString\": \"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N\", \"userInteraction\": \"PASSIVE\", \"attackComplexity\": \"LOW\", \"attackRequirements\": \"NONE\", \"privilegesRequired\": \"NONE\", \"subIntegrityImpact\": \"LOW\", \"vulnIntegrityImpact\": \"NONE\", \"subAvailabilityImpact\": \"NONE\", \"vulnAvailabilityImpact\": \"NONE\", \"subConfidentialityImpact\": \"LOW\", \"vulnConfidentialityImpact\": \"NONE\"}}], \"affected\": [{\"vendor\": \"angular\", \"product\": \"angular\", \"versions\": [{\"status\": \"affected\", \"version\": \"\u003c= 19.2.25\"}, {\"status\": \"affected\", \"version\": \"\u003e= 20.0.0, \u003c 20.3.28\"}, {\"status\": \"affected\", \"version\": \"\u003e= 21.0.0, \u003c 21.2.20\"}, {\"status\": \"affected\", \"version\": \"\u003e= 22.0.0, \u003c 22.1.0\"}]}], \"references\": [{\"url\": \"https://github.com/angular/angular/security/advisories/GHSA-hh8m-fm6v-7cvg\", \"name\": \"https://github.com/angular/angular/security/advisories/GHSA-hh8m-fm6v-7cvg\", \"tags\": [\"x_refsource_CONFIRM\"]}, {\"url\": \"https://github.com/angular/angular/issues/69550\", \"name\": \"https://github.com/angular/angular/issues/69550\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/angular/angular/pull/69558\", \"name\": \"https://github.com/angular/angular/pull/69558\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/angular/angular/commit/2f96c8020f85ccb715a76de4b79a0c680c2c7264\", \"name\": \"https://github.com/angular/angular/commit/2f96c8020f85ccb715a76de4b79a0c680c2c7264\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/angular/angular/commit/6afe6fa781c2f0931f0aedd729b9884a8fe212ee\", \"name\": \"https://github.com/angular/angular/commit/6afe6fa781c2f0931f0aedd729b9884a8fe212ee\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/angular/angular/commit/6caa298dee58319b2d674dc91364e26ffe3ecb2b\", \"name\": \"https://github.com/angular/angular/commit/6caa298dee58319b2d674dc91364e26ffe3ecb2b\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/angular/angular/releases/tag/v20.3.28\", \"name\": \"https://github.com/angular/angular/releases/tag/v20.3.28\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/angular/angular/releases/tag/v21.2.20\", \"name\": \"https://github.com/angular/angular/releases/tag/v21.2.20\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/angular/angular/releases/tag/v22.1.0\", \"name\": \"https://github.com/angular/angular/releases/tag/v22.1.0\", \"tags\": [\"x_refsource_MISC\"]}], \"descriptions\": [{\"lang\": \"en\", \"value\": \"Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 20.3.28, 21.2.20, and 22.1.0, Angular\u0027s compiler and runtime in @angular/core and @angular/compiler could omit or select an incorrect sanitizer for security-sensitive directive host bindings because SecurityContext was derived from the declaring directive or component selector rather than the concrete host element. The mismatch is reachable through hostDirectives composition, inherited HostBinding declarations, createComponent with a custom hostElement or dynamic directives, SVG/MathML namespace elements, and tag-neutral selectors such as :not(...). Attacker-controlled href, src, action, xlink:href, or data values can therefore reach DOM attributes without Angular\u0027s built-in sanitizer and execute arbitrary JavaScript in the user\u0027s browser context. Applications unable to upgrade can use DomSanitizer.sanitize with SecurityContext.URL before assignment or restrict inputs to validated HTTP and HTTPS URL schemes. This issue is fixed in versions 20.3.28, 21.2.20, and 22.1.0.\"}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-79\", \"description\": \"CWE-79: Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)\"}]}], \"providerMetadata\": {\"orgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"shortName\": \"GitHub_M\", \"dateUpdated\": \"2026-09-10T18:46:51.847Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2026-88057\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-09-11T20:32:49.884Z\", \"dateReserved\": \"2026-09-09T21:22:45.434Z\", \"assignerOrgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"datePublished\": \"2026-09-10T18:46:51.847Z\", \"assignerShortName\": \"GitHub_M\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…