Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 17. O projeto Annobin

O projeto Annobin é uma implementação do projeto de especificação da marca d'água. O projeto de especificação da marca d'água pretende adicionar marcadores a objetos de formato executável e vinculável (ELF) para determinar suas propriedades. O projeto Annobin consiste no plugin annobin e no programa annockeck.

O plugin annobin escaneia a linha de comando da Coleção Compiladora GNU (GCC), o estado de compilação e o processo de compilação, e gera as notas ELF. As notas ELF registram como o binário foi construído e fornecem informações para o programa annocheck para realizar verificações de endurecimento de segurança.

O verificador de endurecimento de segurança faz parte do programa annocheck e é ativado por padrão. Ele verifica os arquivos binários para determinar se o programa foi construído com as opções necessárias de endurecimento de segurança e compilado corretamente. annocheck é capaz de verificar recursivamente diretórios, arquivos e pacotes RPM para arquivos objetos ELF.

Nota

Os arquivos devem estar no formato ELF. annocheck não lida com nenhum outro tipo de arquivo binário.

A seção seguinte descreve como fazê-lo:

  • Use o plugin annobin
  • Use o programa annocheck
  • Remover notas redundantes annobin

17.1. Usando o plugin annobin

A seção seguinte descreve como fazê-lo:

  • Habilite o plugin annobin
  • Passe as opções para o plugin annobin

17.1.1. Habilitando o plugin do anobin

A seção seguinte descreve como habilitar o plug-in annobin via gcc e via clang.

Procedimento

  • Para habilitar o plugin annobin com gcc, use:

    $ gcc -fplugin=annobin
    • Se gcc não encontrar o plugin annobin, use:

      $ gcc -iplugindir=/path/to/directory/containing/annobin/

      Substitua /path/to/directory/containing/annobin/ pelo caminho absoluto para o diretório que contém annobin.

    • Para encontrar o diretório que contém o plugin annobin, use:

      $ gcc --print-file-name=plugin
  • Para habilitar o plugin annobin com clang, use:

    $ clang -fplugin=/path/to/directory/containing/annobin/

    Substitua /path/to/directory/containing/annobin/ pelo caminho absoluto para o diretório que contém annobin.

17.1.2. Passando opções para o plugin do anobin

A seção seguinte descreve como passar opções para o plugin annobin via gcc e via clang.

Procedimento

  • Para passar opções para o plugin annobin com gcc, use:

    $ gcc -fplugin=annobin -fplugin-arg-annobin-option file-name

    Substituir option pelos argumentos da linha de comando annobin e substituir file-name pelo nome do arquivo.

    Exemplo

    • Para exibir detalhes adicionais sobre o que está fazendo annobin, use:

      $ gcc -fplugin=annobin -fplugin-arg-annobin-verbose file-name

      Substituir file-name pelo nome do arquivo.

  • Para passar opções para o plugin annobin com clang, use:

    $ clang -fplugin=/path/to/directory/containing/annobin/ -Xclang -plugin-arg-annobin -Xclang option file-name

    Substituir option pelos argumentos da linha de comando annobin e substituir /path/to/directory/containing/annobin/ pelo caminho absoluto para o diretório que contém annobin.

    Exemplo

    • Para exibir detalhes adicionais sobre o que está fazendo annobin, use:

      $ clang -fplugin=/usr/lib64/clang/10/lib/annobin.so -Xclang -plugin-arg-annobin -Xclang verbose file-name

      Substituir file-name pelo nome do arquivo.