攻撃手法

記事数:(1)

セキュリティ

危険なSQLインジェクション:仕組みと対策

情報を蓄積し、活用する大切な仕組みであるデータベースを扱う多くの応用ソフトは、常に様々な脅威にさらされています。中でも、問合わせ言語を悪用した「構造化問合わせ言語投入」という攻撃は、情報の漏えいや改ざん、破壊といった深刻な被害をもたらす可能性があり、開発者や運用管理者にとって大きな課題となっています。 この攻撃は、応用ソフトの脆さを突いて、本来想定されていない命令をデータベースに直接送り込むことで実行されます。例えば、利用者が入力欄に特定の文字列を巧みに挿入することで、データベース内の情報を不正に引き出したり、書き換えたりすることができてしまうのです。本稿では、数ある「構造化問合わせ言語投入」攻撃の中でも、特に直接命令文を送り込むタイプの攻撃、「直接構造化問合わせ言語命令投入」に焦点を当て、その仕組みと対策を詳しく解説します。 まず、この攻撃が成立する仕組みですが、応用ソフトが利用者からの入力を適切に検査せずにデータベース問合わせ文に組み込んでしまうことが原因です。攻撃者は、この隙を突き、入力欄にデータベースへの命令を紛れ込ませます。すると、応用ソフトは悪意のある命令を含んだ問合わせ文をデータベースに送信し、意図しない操作が実行されてしまうのです。 このような攻撃を防ぐためには、利用者からの入力データを厳密に検査することが不可欠です。具体的には、入力データに含まれる特殊文字を無害化する「エスケープ処理」や、あらかじめ許可された値のみを受け付ける「ホワイトリスト方式」といった対策が有効です。また、データベースへの接続に利用する権限を必要最小限に制限することも重要です。過剰な権限を与えないことで、万が一攻撃が成功した場合でも被害を最小限に抑えることができます。 近年、攻撃の手口はますます巧妙化しており、開発者や運用管理者は常に最新の情報を収集し、適切な対策を講じる必要があります。本稿で解説した内容を参考に、安全な仕組み作りに取り組んでいきましょう。