7.1. 安全なライブラリ・ルーチンだけを呼び出すこと

セキュリティと抽象化(情報隠蔽)の開発方針及びその再利用が相容れない場合 があります。 問題は、高レベルのライブラリルーチンが安全に実装されているかいないか、わか らない点です。仕様書を読んでもわかりません。 ある特定の実装が安全であったとしても、ルーチンの他のバージョンが確実に 安全であるとは言えませんし、同じインタフェースが他のプラットフォームで も安全であるとは言えません。

結局のところ、アプリケーションを安全にしなければならないなら、時には 自分自身でライブラリ・ルーチンのバージョンを再実装するはめになります。 ライブラリ・ルーチンが必要とするセキュリティ要求に答えることを確認でき なければ、根本的に解決するのにルーチンを再実装せざるを得ないでしょう。 お気づきになったと思いますが、場合によってはライブラリの実装を修正する 必要があります。しかし、セキュリティ上の弱点を持ったライブラリ・ルーチン を選択した結果、被害を被るのはユーザです。 再実装しなければいけない場合には、高レベルのインタフェースを使うように してください。そうすれば、そのインタフェースが安全に使えるシステムでは、 高レベルのインタフェースに切り替えられます。

可能なら、ルーチンが安全かそうでないかのテストをしてください。そして安全 ならば使用するようにしてください。完璧を期すなら、このテストをコンパイルや インストール時に実行したらどうでしょうか(たとえば、「autoconf」スクリプト の一部として)。 ある条件下では、この種の実行時テストは現実的ではありません。しかし別の 条件下では問題の多くを解消してくれます。 ライブラリの再実装に悩みたくたくなければ、少なくともライブラリが安全であること を確認し、そうでなかった場合にはインストールを中断してください。 そうすれば、ユーザがうっかり安全でないプログラムをインストールする恐れがなく なり、問題が何であるかを理解できます。