CVE-2026-54497
Full vulnerability record from the local CVENow database.
Description
view_component is a framework for building reusable, testable, and encapsulated view components in Ruby on Rails. From 4.0.0 until 4.12.0, ViewComponent::Base instances retain render-scoped objects across calls to render_in; if the same component, collection, or spacer component instance is reused across requests, users, tenants, or threads, later renders can use stale helpers, controller, request, view_flow, format/variant details, and slot child context from an earlier render. This can cause authorization-aware components to render privileged UI for a lower-privileged user, generate links using a stale Host header, leak slot/helper state, and mix request context under concurrent rendering. This issue is fixed in version 4.12.0.
View original CVE JSON
{
"id": "CVE-2026-54497",
"sourceIdentifier": "[email protected]",
"published": "2026-07-17T21:17:08.907",
"lastModified": "2026-10-24T20:10:00.137",
"vulnStatus": "Analyzed",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "view_component is a framework for building reusable, testable, and encapsulated view components in Ruby on Rails. From 4.0.0 until 4.12.0, ViewComponent::Base instances retain render-scoped objects across calls to render_in; if the same component, collection, or spacer component instance is reused across requests, users, tenants, or threads, later renders can use stale helpers, controller, request, view_flow, format/variant details, and slot child context from an earlier render. This can cause authorization-aware components to render privileged UI for a lower-privileged user, generate links using a stale Host header, leak slot/helper state, and mix request context under concurrent rendering. This issue is fixed in version 4.12.0."
},
{
"lang": "es",
"value": "view_component es un framework para construir componentes de vista reutilizables, testeables y encapsulados en Ruby on Rails. Desde la versión 4.0.0 hasta la 4.12.0, las instancias de ViewComponent::Base retienen objetos con alcance de renderizado entre llamadas a render_in; si la misma instancia de componente, colección o componente espaciador se reutiliza entre solicitudes, usuarios, inquilinos o hilos, renderizados posteriores pueden usar helpers, controlador, solicitud, view_flow, detalles de formato/variante y contexto de hijo de slot obsoletos de un renderizado anterior. Esto puede causar que componentes conscientes de la autorización rendericen una interfaz de usuario privilegiada para un usuario con privilegios inferiores, generen enlaces usando un encabezado Host obsoleto, filtren el estado de slot/helper y mezclen el contexto de la solicitud bajo renderizado concurrente. Este problema está solucionado en la versión 4.12.0."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "ViewComponent",
"product": "view_component",
"versions": [
{
"version": ">= 4.0.0, < 4.12.0",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N",
"baseScore": 6.8,
"baseSeverity": "MEDIUM",
"attackVector": "NETWORK",
"attackComplexity": "HIGH",
"privilegesRequired": "LOW",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"availabilityImpact": "NONE"
},
"exploitabilityScore": 1.6,
"impactScore": 5.2
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-07-20T13:46:16.399609Z",
"id": "CVE-2026-54497",
"options": [
{
"exploitation": "poc"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-362"
},
{
"lang": "en",
"value": "CWE-488"
},
{
"lang": "en",
"value": "CWE-668"
}
]
}
],
"configurations": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:a:viewcomponent:view_component:*:*:*:*:*:ruby:*:*",
"versionStartIncluding": "4.0.0",
"versionEndExcluding": "4.12.0",
"matchCriteriaId": "F58C083B-CC19-4C20-B5CD-CCFB7827508A"
}
]
}
]
}
],
"references": [
{
"url": "https://github.com/ViewComponent/view_component/commit/6796b2e89d0bd7b9d7d763a86275e5334731dd61",
"source": "[email protected]",
"tags": [
"Patch"
]
},
{
"url": "https://github.com/ViewComponent/view_component/releases/tag/v4.12.0",
"source": "[email protected]",
"tags": [
"Product",
"Release Notes"
]
},
{
"url": "https://github.com/ViewComponent/view_component/security/advisories/GHSA-9h85-g7w3-rh49",
"source": "[email protected]",
"tags": [
"Exploit",
"Mitigation",
"Vendor Advisory"
]
},
{
"url": "https://github.com/ViewComponent/view_component/security/advisories/GHSA-9h85-g7w3-rh49",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"tags": [
"Exploit",
"Mitigation",
"Vendor Advisory"
]
}
]
}