監査の実施

このページではパッケージ監査の実施にあたって必要な手順の概観を提示します。

第一段階は調査するパッケージを実際に選択することで、 セキュリティがより重要であるものを取り上げるべきです。

決断方法についての提案ですが監査にあたって私たちが最も重要だと考えるパッケージ一覧を見てみてください。

一つはっきりさせておくべきことは、私たちは、 以前にパッケージの監査が確実に行われたことを示したいのではないということです。 多くの人が同一パッケージの調査を選択するとしたらそれは良いことで、 そのパッケージはセキュリティに細心の注意を払うべきだ、 と多くの人が考えていることを実証することになります。

パッケージを本質的に無作為に選んでもらうことで、私たちは調整作業を簡略化できます。 さらに「X さんがよい仕事をすることをどうすれば確信できるのか ?」という問題も解決することができます (遅かれ早かれ誰か他の人が同一プログラムを選んで検査することになるのでその必要はありません)。

監査の開始

パッケージを選択したら今度は実際に監査を始める必要があります。

どんな種類の問題を探せばよいのかよくわからなかったらまず、 安全なソフトウェアの開発方法に関する本を読むことから始めてください。

Secure Programming for Linux and Unix HOWTO によい情報が多くあり役立つでしょう。 Mark G. Graff と Kenneth R. van Wyk による Secure Coding: Principles & Practices も素晴らしい本です。

ツールは不完全ではありますが、脆弱性らしきものを見つけるにあたっては非常に役に立ちます。 一部の利用可能な監査ツールやその使われ方についてのさらなる情報は、 監査ツールのページを見てください。

コード自体を見るのと同様に、そのパッケージの付属文書を読んでみる、 インストールを試してみる、使ってみるというのもよい案です。

こういったことにより、 標準的な操作でそのプログラムの機能を損なわせる方法を考え出せるかもしれません。

問題の報告

調査しているパッケージに問題を見つけた場合、それを報告するべきです。 セキュリティバグを報告する際、パッチの提供も考えてみてください。 それにより開発者は直ちに修正できます。 攻撃例を提供する必要はありません (exploit概念実証 とよく呼ばれます)。 これはパッチがそれ自体でそういったことを提示してしまう類のものなので、 バグを悪用した攻撃の成功につながるため、 通常は正式なパッチを提供するための時間的猶予を与えることが最善となります。

これは Debian でセキュリティバグを見つけた時に推奨される手順一覧です:

  1. バグのパッチを作るか十分な情報を収集するようにしてください。 それによって他の人がバグの存在を確定できます。 理想的なのはそれぞれの報告に発見した問題の修正方法が含まれることで、 その修正方法は試験の上、問題を実際に終息させることが確認されているものとなります。

    修正方法がわからない場合は、問題の適用範囲や相対的な影響の大きさ、 それに次善策があるとなお良いでしょう。

  2. まず、そのセキュリティバグが安定版 Debian リリースに存在するのか、 他のディストリビューションや上流のメンテナにより提供されたバージョンに存在するのかを調べ直します。
  3. 上で調べ直した結果を踏まえて、問題を報告してください:
    • 上流のメンテナ宛にセキュリティ連絡用の当該 e-mail 経由で、分析とパッチを添えて。
    • そのバグが Debian のリリース済みのバージョンに存在する場合 Debian セキュリティチーム宛に。Debian セキュリティチームは通常、CVE 名を脆弱性に割り当てます。 セキュリティチームは、必要に応じて他の Linux ディストリビューションとの調整やパッケージメンテナへの連絡を行います。 そのメールの複製をパッケージメンテナにも送ることはできますが、 それは危険性の低い脆弱性 (以下参照) を扱う場合だけにしてください。
    • そのバグが Debian のリリース済みのバージョンに存在せず、そのアプリケーションが 他のディストリビューションやオペレーティングシステムに存在する可能性がある場合は、oss-security (開示されたセキュリティバグの報告および議論に使われる公開メーリングリスト) にメールを送ってください。バグを Debian セキュリティチーム宛に既に送っていれば、 チームの方でこのリストにも転送するのでこれは必要ありません。
    • そのバグが Debian のリリース済みのどのバージョンにも存在せず、 そのアプリケーションが他のどのディストリビューションやオペレーティングシステムにも含まれない ことが絶対に確実であればバグ追跡システム経由で報告してください。
  4. 脆弱性が公開 (つまり Debian セキュリティチームや他のベンダーが勧告を発表) されたら、バグとその関連情報を全て Debian バグ追跡システムに提出し、 Debian のまだリリースされていないバージョン (つまり sidtesting) のセキュリティ問題を追跡出来るようにすべきです。 これは通常セキュリティチーム自身が行いますが、 見逃していることに気付いた場合やセキュリティチームに報告していない場合は 自分で報告することも可能です。 バグに適切なタグ (security タグを使ってください) を付けたか、 適切な優先度 (通常 grave かそれ以上) がセットされているか確認してください。 当該 CVE 名が既に割り当てられている場合はそれをバグの題名に確実に含めるようにしてください。 これでセキュリティバグを追跡する道筋が出来、Debian のリリース済み、未リリース双方のバージョンで修正されることになります。
  5. 望むなら、問題が公開されればこの情報を full-disclosureBugtraq 等の完全公開されている公開メーリングリストに転送することもできます。

ここに挙げた手順は見つかった脆弱性に関わる危険性によることに注意してください。 危険性を評価する際の基準となるのは:

取るべき手順は、 例えば認証済みユーザによってのみ使用可能なローカルのシンボリックリンク攻撃で、 システムに損害を与える手段を提供するだけのものを報告するのと、 普及しているソフトウェアに管理者特権を提供するリモートのバッファオーバフローが存在するのを報告するのとでは異なります。

ほとんどの場合セキュリティバグ修正されるまで公開されるべきではないので、 標準となっている Debian バグ追跡システム 経由での報告はせず、まずはセキュリティチーム 宛に直接問題を報告してください。セキュリティチームが更新パッケージのリリースを担当し、 問題を修正したら BTS に報告します。