For the English version of this alert, click here.
Allele Security Alert
ASA-2019-00626
Identificador(es)
ASA-2019-00626, CVE-2019-18423, XSA-301
Título
add-to-physmap pode ser utilizado para causar Negação de Serviço (DoS) em hosts ARM
Fabricante(s)
The Xen Project
Produto(s)
Xen
Versão(ões) afetada(s)
Xen versão 4.8 e mais recentes sendo executadas em sistemas ARM
Versão(ões) corrigida(s)
Xen 4.11 – 4.8 com os seguintes patches:
[PATCH 1/3] xen/arm: p2m: Avoid aliasing guest physical frame
https://xenbits.xen.org/xsa/xsa301-4.11-1.patch
[PATCH 2/3] xen/arm: p2m: Avoid off-by-one check on p2m->max_mapped_gfn
https://xenbits.xen.org/xsa/xsa301-4.11-2.patch
[PATCH 3/3] xen/arm: p2m: Don’t check the return of p2m_get_root_pointer() with BUG_ON()
https://xenbits.xen.org/xsa/xsa301-4.11-3.patch
Xen unstable – 4.12 com os seguintes patches:
[PATCH 1/3] xen/arm: p2m: Avoid aliasing guest physical frame
https://xenbits.xen.org/xsa/xsa301-master-1.patch
[PATCH 2/3] xen/arm: p2m: Avoid off-by-one check on p2m->max_mapped_gfn
https://xenbits.xen.org/xsa/xsa301-master-2.patch
[PATCH 3/3] xen/arm: p2m: Don’t check the return of
p2m_get_root_pointer() with BUG_ON()
https://xenbits.xen.org/xsa/xsa301-master-3.patch
Prova de conceito
Desconhecido
Descrição
Um administrador convidado mal-intencionado pode causar uma falha no hypervisor, resultando em uma Negação de Serviço (DoS).
Detalhes técnicos
p2m->max_mapped_gfn é usado pelas funções p2m_resolve_translation_fault() e p2m_get_entry() para verificar a integridade do frame físico do convidado. O restante do código nas duas funções assumirá que existe uma tabela raiz válida e verifica isso com BUG_ON().
A função p2m_get_root_pointer() ignorará os bits superiores não utilizados de um frame físico convidado. Isso significa que a função p2m_set_entry() fará o apelido do frame. No entanto, p2m->max_mapped_gfn será atualizado usando o frame original.
Seria possível definir p2m->max_mapped_gfn alto o suficiente para cobrir um frame que levaria p2m_get_root_pointer() a retornar NULL em p2m_get_entry() e p2m_resolve_translation_fault().
Além disso, a verificação de integridade em p2m->max_mapped_gfn é off-by-one, permitindo que “o mais alto mapeado + 1” seja considerado válido. No entanto, p2m_get_root_pointer() retornará NULL.
O problema pode ser acionado com um hypercall especialmente criada XENMEM_add_to_physmap{, _batch} seguido de um acesso a um endereço (via hypercall ou acesso direto) que passa na verificação de integridade, mas faz com que p2m_get_root_pointer() retorne NULL.
Créditos
Julian Grall (Arm)
Referência(s)
XSA-301 – Xen Security Advisories
https://xenbits.xen.org/xsa/advisory-301.html
oss-security – Xen Security Advisory 301 v3 (CVE-2019-18423) – add-to-physmap
can be abused to DoS Arm hosts
https://www.openwall.com/lists/oss-security/2019/10/31/4
[PATCH 1/3] xen/arm: p2m: Avoid aliasing guest physical frame
https://xenbits.xen.org/xsa/xsa301-4.11-1.patch
[PATCH 2/3] xen/arm: p2m: Avoid off-by-one check on p2m->max_mapped_gfn
https://xenbits.xen.org/xsa/xsa301-4.11-2.patch
[PATCH 3/3] xen/arm: p2m: Don’t check the return of p2m_get_root_pointer() with BUG_ON()
https://xenbits.xen.org/xsa/xsa301-4.11-3.patch
[PATCH 1/3] xen/arm: p2m: Avoid aliasing guest physical frame
https://xenbits.xen.org/xsa/xsa301-master-1.patch
[PATCH 2/3] xen/arm: p2m: Avoid off-by-one check on p2m->max_mapped_gfn
https://xenbits.xen.org/xsa/xsa301-master-2.patch
[PATCH 3/3] xen/arm: p2m: Don’t check the return of p2m_get_root_pointer() with BUG_ON()
https://xenbits.xen.org/xsa/xsa301-master-3.patch
CVE-2019-18423
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-18423
CVE-2019-18423
https://nvd.nist.gov/vuln/detail/CVE-2019-18423
Se encontrou algum erro neste alerta ou deseja uma análise compreensiva, entre em contato.
Última modificação: 12 novembro 2019