ASA-2018-00054 – Linux kernel: Cleancache vazamento de arquivos deletados


For the English version of this alert, click here.

Allele Security Alert

ASA-2018-00054

Identificador(es)

ASA-2018-00054, CVE-2018-16862

Título

Cleancache vazamento de arquivos deletados

Fabricante(s)

Linux kernel

Produto(s)

Linux kernel

Versão(ões) afetada(s)

Linux kernel since v3.15-rc1

Versão(ões) corrigida(s)

Linux kernel 4.20-rc5

Prova de conceito

Desconhecido

Descrição

Um usuário não privilegiado pode acessar o conteúdo de um arquivo deletado de qualquer usuário do sistema de arquivo com cleancache habilitado. Por enquanto, somente o driver tmem do Xen se registra como um backend para cleancache.

Detalhes técnicos

Sob certas condições, cleancache pode não descartar o conteúdo de um arquivo deletado na sua última chamada a iput(). Quando um arquivo recém criado obtém o número inode do arquivo deletado anteriormente, a sua leitura poderá obter o conteúdo do arquivo deletado salvo no cleancache.

Se todas as páginas forem excluídas do mapeamento por recuperação da memória e também movidas para o cleancache:

__delete_from_page_cache
  (no shadow case)
  unaccount_page_cache_page
    cleancache_put_page
  page_cache_delete
    mapping->nrpages -= nr
    (nrpages torna 0)

Nós não limpamos o cleancache de um inode depois do truncamento final do arquivo (remoção).

truncate_inode_pages_final
  check (nrpages || nrexceptional) is false
    no truncate_inode_pages
      no cleancache_invalidate_inode(mapping)

Desta maneira quando lendo de um novo arquivo criado com o mesmo inode nós podemos obter lixo de memória deixado nas páginas do cleancache e visualizar dados errados em vez do conteúdo do novo arquivo criado.

Créditos

Vasily Averin e Pavel Tikhomirov da Virtuozzo Kernel Team

Referência(s)

CVE-2018-16862: Linux kernel: cleancache: deleted files infoleak
https://seclists.org/oss-sec/2018/q4/169

mm: cleancache: fix corruption on missed inode invalidation
https://lore.kernel.org/patchwork/patch/1011367/

Bug 1649017 – (CVE-2018-16862) CVE-2018-16862 kernel: cleancache: Infoleak of deleted files after reuse of old inodes
https://bugzilla.redhat.com/show_bug.cgi?id=1649017

mm: cleancache: fix corruption on missed inode invalidation
https://github.com/torvalds/linux/commit/6ff38bd40230af35e446239396e5fc8ebd6a5248#diff-a867b589a17d6d3ea5e9a787a775da7b

CVE-2018-16862
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-16862

CVE-2018-16862
https://nvd.nist.gov/vuln/detail/CVE-2018-16862

Se encontrou algum erro neste alerta ou deseja uma análise compreensiva, entre em contato.

Última modificação: 9 de dezembro de 2018