第6章 フェイルセーフ
セキュアなデフォルト
デフォルト
パラメータ値の初期値や省略時解釈の選び方によっては、そのことが情報システムのセキュリティを損なう要因となるおそれがある。
ソフトウェアが利用される場面では、接続先サーバアドレス、データを保管するディレクトリ、画面の色など、さまざまなパラメータ値がユーザから与えられ、それらにもとづいてプログラムが動作する。
通常パラメータは多岐にわたり、それらをユーザに毎回指定させることは現実的でない。多くの場合、パラメータには何らかの初期値が明示的に与えられているか、パラメータが定義されていないときにはある値が与えられているものと解釈せよというルールが設けられる。
このように、ユーザが明示的に指定しなくてもパラメータに何らかの値を、初期値として、あるいは省略時解釈ルールによって与える方式のことを、ここでは「デフォルト」と呼ぶ。
危ないデフォルトの例
例えば、次のようなデフォルトがあるとき、その状態のまま使い続けると情報機器や情報システムが侵害され得る。
(1)管理者認証の危ないデフォルト
特定の人物以外には操作を許すべきでないネットワーク機器やサーバ製品が、インストール直後には誰でも容易に管理者として当該システムにアクセスできるようになっているケース。(例: 出荷時に管理者パスワードが存在しない、非常に単純な綴りになっている等)
(2)アクセス認可の危ないデフォルト
システムの中の各種リソースのアクセス許可設定が、初期値において「誰でもアクセス可」となっているケース。
(3)セキュリティ機能スイッチの危ないデフォルト
「接続先リストを暗号化してパスワードで保護する」等のセキュリティ保護機能をオン/オフするスイッチが初期状態でオフになっているケース。
(4)識別子のユニーク性の危ないデフォルト
アプリケーションの中でユーザやコンピュータノードを識別するための値が用いられる場面で、初期値としていつも同じ値が与えられて製品の複数実体が出荷されるケース。この場合には、識別子の衝突によるサービス不能状態や、通信の混乱が起こり得る。
設定がデフォルトに戻ってしまう事故
機器やシステムを初期値のまま使い続けなかったとしても、次のような事故によって設定が出荷状態(デフォルト)に戻ってしまうというということがあり得る。
- パラメータが記録された設定ファイルがシステムクラッシュ等で破損し、自動復旧策としてすべてのパラメータを出荷状態に戻すことが行われた場合
- ユーザが誤って設定を初期化した場合
パラメータ(複数)を収容した設定ファイルが破損することは、設定ファイルへ書き込んでいる途中でプログラムが中断された場合に起こり得る問題である。原因として主に次のものが考えられる。
- 動作不良でプログラム自らファイルを壊す(バグ)
- オペレーティングシステムのクラッシュ/フリーズ
- ハードウェアの故障
- 停電
- 外部からの攻撃
- 手動による設定ファイル記述時の不備

デフォルトにかかわる問題への対策
デフォルトが引き起こすセキュリティ問題への対策として次が考えられる。
(1) 未定義状態の回避
管理者認証パラメータ、ネットワークアドレス等、デフォルトを設けることが得策でないパラメータについては、それらが未定義であることをプログラムが自動判別し、有効な値を設定するようユーザに促すようにする。
有効な値が設定されるまではネットワークに接続しない、等の保護措置をはたらかせる。
(2) 破損の検知
設定ファイルが破損しているか否かを判定するロジックをもつ。また、当該システムを起動した時点、および要所要所で、設定ファイルの破損を自動検査する。
(3) バックアップとロールバック
更新作業途中の設定ファイルの破損に備えて、設定ファイルへの書き込み前にバックアップコピーを作り、事故時にはそこからロールバックするロジックをもつ。
(4) ユーザインタフェースの工夫
ユーザが誤ってパラメータを初期化することが起こりにくいよう、分かりやすい警告を出す等、ユーザインタフェース上に歯止め措置を施す。
(5) 情報漏えいへの対策
設定ファイルが、ネットワーク接続パスワード等の部外者が悪用しうる項目を含んでいる場合は、部外者の読み出しに対して厳しい制限をかける。
この項目はデフォルトに関するものではないが、パラメータの保護措置も併せて行う必要のある場合が考えられる。
パラメータの部分的消去
設置箇所が無人であることが想定されるネットワーク機器のソフトウェアの場合、ネットワーク経由の運用・保守作業を行うことが多い。その場合、認証の仕組みが不可欠であり、機器に設定されている認証パラメータがデフォルトに戻ってしまっては具合が悪い。
ユーザが手動で指示するかプログラムが自動でリセットするかを問わず、パラメータを初期状態に戻す際は一部のパラメータを消さずに残すことを考慮する必要がある。例えば、次のようなパターンが考えられる。
- ネットワークアドレスと管理者認証パラメータを維持し、他のパラメータを全て消去する
──機器やシステムをリモートで保守する場合で、ネットワーク接続を手動で行う場合 - 管理者認証パラメータを維持し、他のパラメータは全て消去する
──機器あるいはシステムをリモート保守する場合で、ネットワーク接続はソフトウェアによって自動復旧できる場合 - 全てのパラメータを消去する
──機器あるいはシステムを設置場所においてローカルに設定変更できる場合
ここで重要なことは、システムのパラメータ設定が不完全な状態に陥った際も、権限をもつ人物が、かつその人物だけが状態を復旧できるような仕組みにしておくということである。
また、認証等の制限を緩め過ぎれば悪意の人物にシステムに干渉されるおそれがある一方で、制限を厳しくし過ぎるとシステムがサービス不能状態に陥るおそれがあることにも注意しておきたい。
まとめ
パラメータの初期値や省略時解釈がセキュリティ事故の要因となることがある。初期値のままシステムが運用されたり、クラッシュによってシステム設定パラメータが初期値に戻ってしまう等の状況では部外者による不正アクセスが起こりかねない。注意すべきパラメータには、認証、アクセス認可、セキュリティ機能のスイッチ、ネットワークアドレス等がある。部外者の干渉を遮断する一方で、サービス不能に陥らない方策も必要である。