当てはまる条件が多いほどSQLインジェクションのリスクが高いといえるでしょう。
- <人的なリスク>
- システム担当者の一人当たりの負荷が大きい
- システム担当者のセキュリティ対策の経験値が浅い
- システム担当者のSQLの知識が浅い
- <システムそのもののリスク>
- 自前の環境でシステムを構築している(オンプレミス型)
- システムで使っているソフトウェアのバージョン管理ができていない
- SQLインジェクションを想定した運用テストが行われていない
SQLインジェクションの予防策
ここからはSQLインジェクションを回避するための、4つの予防策について説明します。
中にはコストがかかる対策もありますが、情報漏洩などで発生する被害を考えると必要は投資です。
以下の4つの予防策をチェックして検討してみましょう。
プリペアドステートメントの導入
プリペアドステートメントは日本語で準備された構文を意味します。
データベースに指示を出すSQLの作成に際し、一定のひな型を作ることで悪意のあるSQLが混じるのを防ぐ仕組みです。
これによって攻撃者は好き勝手なSQLによる指示が出せないので、データベースへの侵入を防ぐことができます。
ただし、導入に際してはSQLのスキルを持ったSEに依頼する必要があります。
WAFの導入
WAFはWeb Application Firewallの略です。WEBサーバやネットワークに設置し、システムへの指示を解析することができます。
WAFによってSQLインジェクションも検出して防御することができるのです。
また、WAFを使えばセキュリティ対策のためにシステムそのものに手を入れる必要がありません。
少ない体制でシステムを運用せざるを得ない場合に強い味方となるでしょう。
WEBアプリケーションを最新に保つ
SQLインジェクションに限らず、最も基本的なセキュリティ対策です。
例えばブログサイトなどで使われるWordPressは最新版への更新を怠ると、脆弱性が一気に露出します。
また、システムが動作するOSの更新も要注意項目です。
OSやウィルスソフトを含め、バージョンを一括で可視化できるソフトもありますので導入を検討してみましょう。
テストの実施
実際にSQLインジェクションが発生した場合を想定したテストを行うことも重要です。
わざと悪意のあるSQLを作成して、対象のシステムに指示を出すことで脆弱性を診断することができます。
自社で行うことが難しい場合は、テストを代行してくれる企業がありますので、費用をかけてでも依頼することをおすすめします。
SQLインジェクションの被害にあってしまったら
どれほど対策を講じていたとしても、SQLインジェクションにあう可能性はゼロにはできません。
もし被害にあってしまったら、どうすればよいのでしょうか。
企業のシステム担当者としてSQLインジェクションを発見した場合は、いち早く経営層に報告を上げる必要があります。
なぜなら機密情報流出の可能性がある以上、すぐにシステムへのアクセス停止やユーザーへの周知などの動きが求められるからです。
システム担当者はSQLインジェクションを単なるバグやエラーと一緒にせず、会社の経営に直結する問題と考えるべきでしょう。
まとめ
今回はセキュリティ攻撃の一つであるSQLインジェクションについて説明しました。
数あるセキュリティ攻撃の中でも頻繁に発生し、情報漏洩につながりやすいのが特色です。
被害を防ぐため、まず自社のシステムがセキュリティの脆弱性を生みやすい状態になっていないかを確認しましょう。
そのうえで、SQLインジェクションがもたらす被害を理解した上で正しい対策を検討する必要があります。
また、場合によってはコストがかかる場合もありますが、情報漏洩の被害を考えれば必要な投資です。
経営層自らがセキュリティ対策を経営課題の一つとして認識し、先回りで対策を講じていくことが求められるでしょう。
万が一被害が発生した場合は、経営層の迅速な対応が求められます。
この記事がSQLインジェクションの被害からシステムを守るきっかけになれば幸いです。
- 1
- 2