Qual é a solução alternativa 'ptrace_scope' para programas Wine e existem riscos?

34

Para executar certos programas do Windows no WINE, você precisa desta solução alternativa:

echo 0|sudo tee /proc/sys/kernel/yama/ptrace_scope

De acordo com os sites de suporte, isso se deve a um bug no kernel do Ubuntu que impede que o ptrace e o WINE estejam funcionando bem juntos.

Usando o comando acima, você define o ptrace como 0, o que, de acordo com a pesquisa que fiz (não me pergunte quais sites, pareço muitos deles), ptrace tem a ver com as interações entre os programas. O ajuste 0 é mais permissivo que o 1.

Eu tenho que assumir que havia uma boa razão porque o Ubuntu queria o ptrace = 1, então isso me leva de volta à forma abreviada da questão.

Existe algum risco envolvido na configuração de ptrace = 0. Menor segurança? problemas de depuração? qualquer outro que eu não tenha pensado ???

P.S. para qualquer um que esteja lendo isso que se pergunta o que o bug causa, os programas do Windows falharão em abrir, no System Monitor você verá muitas instâncias do programa tentando abrir e então todos eles irão parar e se você executar o programa para no terminal, você receberá um erro informando que o número máximo de instâncias do programa foi atingido.

    
por TrailRider 04.06.2012 / 04:57

3 respostas

36

Resposta curta: nenhum perigo prático ainda, mas continue lendo para uma maneira melhor ...

O que é essa coisa de ptrace ?

% bl0ck_qu0te%
  • Não, a proteção ptrace é uma medida deliberada de segurança do kernel introduzida pela primeira vez no Ubuntu 10.10. Não é um bug e, por isso, não será "consertado".

  • Em termos simples, o valor ptrace_scope padrão de 1 impede que um processo examine e modifique outro processo a menos que o segundo processo (filho) tenha sido iniciado pelo primeiro processo ( pai).

  • Isso pode causar problemas em alguns programas no Wine devido à maneira como wineserver fornece "Serviços do Windows" para esses programas.

Quais são os riscos na configuração de ptrace_scope para 0 ?

  • Isso restaura o comportamento antigo em que um processo pode "rastrear" outro processo, mesmo se não houver um relacionamento pai-filho.

  • Em teoria, um malware pode usar isso para prejudicar você / seu computador; por exemplo. ele pode se conectar ao Firefox e registrar todos os seus URLs / senhas, etc. Na prática, isso é extremamente improvável, a menos que você instale cegamente debs binários de sites aleatórios, etc.

  • No que diz respeito à depuração, as configurações de 0 são realmente necessárias para que gdb , strace , etc. sejam anexadas a não-crianças, a menos que você as execute com privilégios elevados (sudo). / p>

Quais são os problemas com a solução alternativa?

  • A solução alternativa é um pouco problemática porque ptrace_scope é um valor global e, embora esteja definido como 0 , todos os processos em seu sistema estão isentos da restrição não-infantil.
  • Se você usar a solução alternativa, coloque-a em um script bash simples que a habilite, execute o programa do Windows e, em seguida, desative (define como 1) ao sair.
    • NÃO torne ptrace_scope world-writable (666) como recomenda a publicação no fórum - isso é um enorme risco de segurança, porque agora qualquer processo pode alterá-lo à vontade!

Existe uma solução melhor?

  • Uma solução melhor, mais segura e que não requer modificação repetitiva do ptrace_scope , é conceder capacidades de ptrace do Wineserver .

    • Em um terminal:

      sudo apt-get install libcap2-bin 
      sudo setcap cap_sys_ptrace=eip /usr/bin/wineserver
      sudo setcap cap_sys_ptrace=eip /usr/bin/wine-preloader
      
    • Isso isenta os binários wineserver e wine-preloader da restrição ptrace não-filho e permite que eles rastreiem qualquer processo.

    • Só precisa ser feito uma vez e é mais seguro porque esses binários geralmente são de uma fonte confiável - os repositórios oficiais ou o oficial Wine PPA, portanto, não serão malware.

Se você estiver usando o Crossover

Instale a libcap2:

sudo apt-get install libcap2-bin;

Em seguida, adicione uma exceção ao Crossover:

sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wineserver;
sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wine-preloader;

Por fim, adicione suas bibliotecas ao ld.so.conf (ou você obterá "erro ao carregar bibliotecas compartilhadas: libwine.so.1: não é possível abrir o arquivo de objeto compartilhado: Nenhum arquivo ou diretório"):

echo /opt/cxoffice/lib/ | sudo tee /etc/ld.so.conf.d/crossover.conf
sudo /sbin/ldconfig
    
por ish 21.06.2012 / 07:53
4

No ubuntuforums.org recebi uma resposta com o seguinte link

link

aqui está a pasta do link (com minha ênfase adicionada)

% bl0ck_qu0te%

Então eu acho que a resposta curta seria que é menos seguro, mas a capa provável de um computador pessoal sob esse tipo de ataque seria muito pequena.

    
por TrailRider 19.06.2012 / 06:33
0

UPDATE As instruções acima:

sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wineserver;
sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wine-preloader;

não funciona a partir de 15/9/2018 no Ubuntu 18.04.1 e no PlayOnLinux v.4.2.12 usando a última versão estável do Wine que é v.3.0.1 O libcap2 já estava instalado.

A mensagem de erro no Terminal do Gnome é a seguinte:

Failed to set capabilities on file '/usr/bin/wineserver' (Invalid argument)
The value of the capability argument is not permitted for a file. Or the file is not a regular (non-symlink) file

Não tenho certeza do que isso significa ..... mas pensei em colocar isso para alguém interpretar e talvez ter uma solução nova e viável.

Obrigado.

    
por Danny Strickland 15.09.2018 / 23:33