Ir para o conteúdoIr para navegação de página: página anterior [tecla de acesso p]/próxima página [tecla de acesso n]
documentation.suse.com / Documentação do SUSE Linux Enterprise Desktop / Guia de Administração / Tarefas comuns / Aplicação de patches ativos no espaço do usuário
Aplica-se a SUSE Linux Enterprise Desktop 15 SP4

12 Aplicação de patches ativos no espaço do usuário

Este documento descreve os princípios básicos e o uso da aplicação de patches ativos no espaço do usuário.

12.1 Sobre a aplicação de patches ativos no espaço do usuário

A aplicação de patches ativos no espaço do usuário (ULP, Userspace Live Patching) refere-se ao processo de aplicar patches às bibliotecas usadas por um processo em execução sem o interromper. As operações de aplicação de patches ativos são executadas usando a ferramenta ulp, que faz parte do libpulp.

O libpulp é uma estrutura que permite a aplicação de patches ativos no espaço do usuário. Ele consiste na biblioteca libpulp.so e em ferramentas que tornam possível aplicar patches ativos às bibliotecas (o binário ulp).

12.1.1 Pré-requisitos

Para que a ULP funcione, é necessário cumprir dois requisitos.

  • Para que possa receber patches ativos , uma biblioteca deve ser compilada com o flag -fpatchable-function-entry do GCC. Não é necessária nenhuma mudança no código-fonte da biblioteca.

  • Os processos devem pré-carregar a biblioteca libpulp.so.

12.1.2 Usando o libpulp

Para usar o libpulp com um aplicativo, você deve executar as seguintes etapas:

  1. Permita que uma biblioteca receba patches ativos.

  2. Ao iniciar o aplicativo, pré-carregue o libpulp usando o comando LD_PRELOAD=/usr/lib64/libpulp.so ./APLICATIVO.

12.1.2.1 Preparando uma biblioteca para receber patch ativos

Para que seja possível aplicar patches ativos a uma biblioteca, ela deve conter um prólogo NOP em todas as chamadas de função. O GCC versão 8 e posterior, bem como a versão do GCC que acompanha o SUSE Linux Enterprise Server, oferece a função -fpatchable-function-entry especificamente para essa finalidade. Portanto, na arquitetura AMD64/Intel 64, compilar uma biblioteca escrita em C com o flag -fpatchable-function-entry=16,14 é suficiente para permitir que ela receba patches ativos.

As bibliotecas glibc, libssl.so.1.1 e libcrypto.so.1.1 já podem receber patches ativos no SUSE Linux Enterprise 15 SP4.

12.1.2.2 Verificando se uma biblioteca pode receber patches ativos

Para verificar se uma biblioteca pode receber patches ativos, use o seguinte comando:

ulp livepatchable LIBRARY

12.1.2.3 Aplicando patches ativos

Os patches ativos são aplicados usando o comando ulp trigger, por exemplo:

ulp trigger -p PID LIVEPATCH.ulp

Neste exemplo, o PID é do processo em execução que usa a biblioteca que recebrá o patch, e LIVEPATCH.ulp é o arquivo de patch ativo específico.

A mensagem live patching succeeded indica que a operação de aplicação de patches ativos foi bem-sucedida.

12.1.2.4 Revertendo patches ativos

É possível usar o ulp trigger para reverter patches ativos. Há duas maneiras de reverter patches ativos. Você pode aplicar o patch .rev apropriado:

ulp trigger -p PID LIVEPATCH.rev

Se preferir, remova todos os patches associados a uma biblioteca específica. Por exemplo:

ulp trigger -p PID --revert-all=LIBRARY

No exemplo acima, LIBRARY refere-se à biblioteca específica, por exemplo: libcrypto.so.1.1.

A última abordagem pode ser útil quando o código-fonte do patch ativo original não está disponível ou para remover um determinado patch antigo e aplicar um novo, sem que o aplicativo de destino execute um código que talvez não seja seguro. Por exemplo:

ulp trigger -p PID  --revert-all=libcrypto.so.1.1 new_livepatch2.ulp

12.2 Mais informações

Há mais informações sobre o libpulp disponíveis no repositório Git do projeto.