Red Hat Training

A Red Hat training course is available for RHEL 8

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.

Nota

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 con gcc, utilice:

    $ gcc -fplugin=annobin
    • Si gcc no encuentra el plugin annobin, 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 con clang, 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 con gcc, 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 con clang, 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 contiene annobin.

    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.