Menu Close

4.2. Annobin プロジェクト

Annobin プロジェクトは、Watermark 仕様プロジェクトの実装です。Watermark 仕様プロジェクトでは、プロパティーを判別するためにマーカーを Executable and linkable Format (ELF) オブジェクトに追加することを目的としています。Annobin プロジェクトは、annobin プラグインと annockeck プログラムで構成されます。

annobin プラグインは、GNU コンパイラーコレクション (GCC) コマンドライン、コンパイル状態、およびコンパイルプロセスをスキャンし、ELF ノートを生成します。ELF ノートでは、バイナリーの構築方法を記録し、セキュリティー強化チェックを実行する annocheck プログラムの情報を得ることができます。

セキュリティー強化チェッカーは、annocheck プログラムの一部で、デフォルトで有効になっています。バイナリーファイルをチェックして、必要なセキュリティー強化オプションでプログラムがビルドされたかどうかを判断し、適切にコンパイルします。annocheck は、ELF オブジェクトファイルのディレクトリー、アーカイブ、および RPM パッケージを再帰的にスキャンできます。

注記

ファイルは ELF 形式でなければなりません。annocheck は、他のバイナリーファイルタイプを処理しません。

次のセクションでは、以下を行う方法を説明します。

  • annobin プラグインを使用する
  • annocheck プログラムを使用する
  • 冗長な annobin メモを削除する

4.2.1. annobin プラグインの使用

次のセクションでは、以下を行う方法を説明します。

  • annobin プラグインを有効にする
  • オプションを annobin プラグインに渡す

4.2.1.1. annobin プラグインの有効化

次のセクションでは、gcc および clangannobin プラグインを有効にする方法を説明します。

手順

  • gccannobin プラグインを有効にするには、以下を使用します。

    $ gcc -fplugin=annobin
    • gccannobin プラグインを見つけない場合は、以下を使用します。

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

      /path/to/directory/containing/annobin/ を、annobin を含むディレクトリーへの絶対パスに置き換えます。

    • annobin プラグインを含むディレクトリーを検索するには、以下を使用します。

      $ gcc --print-file-name=plugin
  • clangannobin プラグインを有効にするには、以下を使用します。

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

    /path/to/directory/containing/annobin/ を、annobin を含むディレクトリーへの絶対パスに置き換えます。

4.2.1.2. オプションを annobin プラグインに渡す

次のセクションでは、gcc を介して、および clang を介して、オプションを annobin プラグインに渡す方法を説明します。

手順

  • gccannobin プラグインにオプションを渡すには、以下のコマンドを使用します。

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

    optionannobin コマンドライン引数に置き換え、file-name をファイルの名前に置き換えます。

    • annobin の動作に関する詳細を表示するには、次のコマンドを使用します。

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

      file-name は、ファイルの名前に置き換えます。

  • clang でオプションを annobin プラグインに渡すには、以下を使用します。

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

    option を、annobin コマンドライン引数に置き換え、/path/to/directory/containing/annobin/ を、annobin を含むディレクトリーへの絶対パスに置き換えます。

    • annobin の動作に関する詳細を表示するには、次のコマンドを使用します。

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

      file-name は、ファイルの名前に置き換えます。