Capítulo 17. El proyecto Annobin
El proyecto Annobin es una implementación del proyecto de especificación Watermark. El proyecto de especificación Watermark pretende añadir marcadores a los objetos de formato ejecutable y enlazable (ELF) para determinar sus propiedades. El proyecto Annobin consiste en el plugin annobin
y el programa annockeck
.
El plugin annobin
analiza la línea de comandos de la Colección de Compiladores de GNU (GCC), el estado de compilación y el proceso de compilación, y genera las notas ELF. Las notas ELF registran cómo se construyó el binario y proporcionan información para que el programa annocheck
realice comprobaciones de seguridad.
El comprobador de seguridad forma parte del programa annocheck
y está activado por defecto. Comprueba los archivos binarios para determinar si el programa se construyó con las opciones de endurecimiento de seguridad necesarias y se compiló correctamente. annocheck
es capaz de escanear recursivamente directorios, archivos y paquetes RPM en busca de archivos objeto ELF.
Los archivos deben estar en formato ELF. annocheck
no maneja ningún otro tipo de archivo binario.
La siguiente sección describe cómo:
-
Utilice el plugin
annobin
-
Utilice el programa
annocheck
-
Eliminar las notas redundantes de
annobin
17.1. Uso del plugin annobin
La siguiente sección describe cómo:
-
Activar el plugin
annobin
-
Pasar opciones al plugin
annobin
17.1.1. Activación del plugin annobin
La siguiente sección describe cómo activar el plugin annobin
a través de gcc
y a través de clang
.
Procedimiento
Para activar el plugin
annobin
congcc
, utilice:$ gcc -fplugin=annobin
Si
gcc
no encuentra el pluginannobin
, utilice:$ gcc -iplugindir=/path/to/directory/containing/annobin/
Sustituya /path/to/directory/containing/annobin/ por la ruta absoluta del directorio que contiene
annobin
.Para encontrar el directorio que contiene el plugin
annobin
, utilice:$ gcc --print-file-name=plugin
Para activar el plugin
annobin
conclang
, utilice:$ clang -fplugin=/path/to/directory/containing/annobin/
Sustituya /path/to/directory/containing/annobin/ por la ruta absoluta del directorio que contiene
annobin
.
17.1.2. Pasar opciones al plugin annobin
La siguiente sección describe cómo pasar opciones al plugin annobin
a través de gcc
y a través de clang
.
Procedimiento
Para pasar opciones al plugin
annobin
congcc
, utilice:$ gcc -fplugin=annobin -fplugin-arg-annobin-option file-name
Sustituya option por los argumentos de la línea de comandos
annobin
y sustituya file-name por el nombre del archivo.Ejemplo
Para mostrar detalles adicionales sobre lo que
annobin
está haciendo, utilice:$ gcc -fplugin=annobin -fplugin-arg-annobin-verbose file-name
Sustituya file-name por el nombre del archivo.
Para pasar opciones al plugin
annobin
conclang
, utilice:$ clang -fplugin=/path/to/directory/containing/annobin/ -Xclang -plugin-arg-annobin -Xclang option file-name
Sustituya option por los argumentos de la línea de comandos
annobin
y sustituya /path/to/directory/containing/annobin/ por la ruta absoluta del directorio que contieneannobin
.Ejemplo
Para mostrar detalles adicionales sobre lo que
annobin
está haciendo, utilice:$ clang -fplugin=/usr/lib64/clang/10/lib/annobin.so -Xclang -plugin-arg-annobin -Xclang verbose file-name
Sustituya file-name por el nombre del archivo.