問題 53★★★

顧客管理のWebアプリケーションは、顧客テーブルの参照と登録しか行わないが、データベースへの 接続には全テーブルの削除まで行える管理者用アカウントを使っている。アプリケーションの脆弱性を 突かれたときの被害を小さくする見直しとして、最も適切なものはどれか。

正解:ウ

各選択肢の解説

  1. アデータベース暗号化を導入し、顧客テーブルの内容を暗号化して保存する。

    誤り。データベース暗号化は、データファイルやバックアップを持ち出されたときに読ませない対策です。 アプリケーション経由の問合せには復号した値を返すので、アプリを乗っ取られれば 顧客情報も平文で取られ、削除される範囲も変わりません。

  2. イ管理者用アカウントのパスワードを、長く複雑なものに変更する。

    誤り。パスワードを強くすると、外から推測してログインされにくくなります。 しかし脆弱性を突く攻撃者は、アプリケーションがすでに張っている接続をそのまま使うので パスワードを知る必要がなく、管理者の権限で何でもできる状態は変わりません。

  3. ウアプリケーション専用のアカウントを作り、顧客テーブルの参照と登録だけを許可する。

    正解。最小特権の考え方です。アプリケーションが乗っ取られても、攻撃者ができるのは そのアカウントに許された操作だけなので、他のテーブルの削除などには及びません。

  4. エデータベースのアクセスログを毎月確認し、不審な操作があれば管理者に知らせる。

    誤り。ログの確認は、起きたことを後から見つける対策です。不正な操作に気づくきっかけには なりますが、そのときにはテーブルの削除や持ち出しが済んでいて、被害の大きさ自体は小さくなりません。

理解を深めるために

乗っ取られたときの被害は「持たせた権限」で決まる

Webアプリケーションに脆弱性があると、攻撃者はアプリになりすましてデータベースに命令を送れます。 そのとき攻撃者が使えるのは、アプリが接続に使っているアカウントの権限そのものです。 管理者用アカウントで接続していれば、顧客情報を読み出すだけでなく、全テーブルの削除まで できてしまいます。

最小特権は、利用者やプログラムに、仕事に必要な権限だけを与える考え方です。 このアプリが行うのは顧客テーブルの参照と登録だけなので、専用のアカウントにはその2つだけを 許可します。乗っ取られても、他のテーブルを消したり、構造を変えたりすることはできません。

見直しで押さえる点

  • アプリケーションごとに専用のアカウントを作り、管理者用アカウントを共用しない
  • 許可は「どのテーブルに」「どの操作を」まで絞る(参照だけで足りる画面なら参照だけ)
  • 管理者用アカウントは、保守作業のときだけ使う

最小特権は、侵入を防ぐ対策ではなく、侵入されたときに被害が広がる範囲を限る対策です。 脆弱性の修正やWAFなど、侵入を防ぐ対策と組み合わせて使います。

混同しやすい対策との違い

対策 効く場面
最小特権(専用アカウントの権限を絞る) 乗っ取られた後にできる操作を限る
データベース暗号化 データファイルやバックアップの持ち出し
パスワードの強化 外からの推測によるログイン
アクセスログの定期確認 起きた不正を後から見つける

「被害を小さくする」と問われたら、攻撃者が手に入れる権限をどう狭めるかで考えます。

前の問題へ次の問題へ