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.
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
comgcc
, use:$ gcc -fplugin=annobin
Se
gcc
não encontrar o pluginannobin
, 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
comclang
, 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
comgcc
, 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
comclang
, 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émannobin
.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.