企業をサイバーセキュリティのリスクから守る『OODAセキュリティ』 » 脆弱性診断で浮き彫りになるサイバー攻撃のリスク » SQLインジェクション

SQLインジェクション

ここではサイバー攻撃の一つであるSQLインジェクションについてリサーチ。攻撃を受けるとどうなるのか、その症状や被害を受けた企業の事例などについてご紹介します。

目次

SQLインジェクションとは

イメージ
イメージ
攻撃者がデータベースに対して
悪意のある命令を実行できる

SQLインジェクションでは、攻撃者がデータベースに対して悪意のある命令を実行することができます。この命令により、通常はアクセスできない機密性の高いデータが漏えいする恐れがあります。
そのほかにも、SQLインジェクションによるデータの改ざん、認証の回避、任意コード実行など、多大な影響を及ぼす恐れがあります。

SQLインジェクションとは、データベースと連携するWebアプリケーションの脆弱性を悪用するタイプのサイバー攻撃です。本来の意図とは異なるSQL文が作成され、データベースを不正に操作されるサイバー攻撃のことを言います。インジェクションとは“注入”という意味ですが、攻撃者は特殊な文字列を入力することであり得ない動作をさせてしまいます。

SQLインジェクションの攻撃でどうなる?

SQLインジェクション攻撃によりデータベース操作が可能になると、適切な処理が行えなくなり情報漏えいやデータ改ざんなどの被害につながります。具体的にはデータベース内の非公開情報の閲覧、認証回避による不正ログイン、他のシステムへの攻撃の踏み台利用など、攻撃者にデータベースを乗っ取られたような状態になります。

情報の漏えいが起こる

SQLインジェクションの被害として多いのは、情報漏えいです。一般公開していない企業内部の機密情報を盗み出されると、経営に大きなダメージを受けかねません。たとえば開発中の新商品の情報が流出してしまえば、他社に真似をされ、利益を構築する機会を損失します。また、ユーザーの個人情報が盗み出されてしまうと、情報漏えい事故として責任がかかります。流出した情報がクレジットカードだった場合、その情報を悪用され二次被害が発生するかもしれません。

Webサイトが改ざんされる

SQLインジェクションの被害として増えているのがWebサイトの改ざんです。攻撃者によってWebサイトの内容が書き換えられたり削除されたりしています。Webサイトを改ざんされると、誤った情報を掲載してしまったり、不適切な内容が掲載されてしまったりして、信用を失いかねません。また、Webサイトにコンピュータウイルスが埋め込まれ、閲覧者がコンピュータウイルスに感染するという被害も増加しています。閲覧者にまで被害を拡大させてしまうことが怖い手口です。

アカウントが不正に利用される

データベースに登録されたアカウントのIDやパスワードを盗まれることもあります。ID・パスワードが盗まれると、アカウントが不正に利用される可能性が高いです。不正利用されると被害が拡大します。企業内の高い権限までコントロールされてしまうケースでは、企業が保有しているメールアカウントが不正に操作され、メールアドレス宛にマルウェアを拡散されるかもしれません。ユーザーのアカウントが不正利用されると、金銭的な被害が発生する可能性もあります。

システムやサーバーが乗っ取られる

SQLインジェクションの攻撃を受けると、システムやサーバーが乗っ取られる可能性もあります。サーバーが乗っ取られると、別のサーバーを攻撃するための踏み台にさせられるケースも少なくありません。システムを乗っ取られることで、データベースをすべて消去したり破壊したりといったこともできてしまいます。蓄積してきた財産を一気に失いかねません。提供しているサービスを停止するような事態にまで陥る可能性があります。

SQLインジェクションの代表的な被害事例

脆弱性診断ツール悪用により個人情報が流出

ケーブルテレビなどで番組配信する「釣りビジョン」は2019年1月に第三者による不正アクセスがあり個人情報が流出した可能性があることを発表。通常では考えられない大量アクセスを確認したため、保守管理を委託する会社と調査した結果、脆弱性診断ツールを悪用したSQLインジェクション攻撃によるサーバー侵入が確認されました。

参照元:サイバーセキュリティ.com(https://cybersecurity-jp.com/news/29506

情報漏洩の被害企業に対しての行政処分

クレジットカード決済代行会社である株式会社メタップスペイメントは、2022年2月に不正アクセスで最大約46万件のクレジットカード情報を漏洩させた可能性があると発表。これを受けて、経済産業省は同社に対しての割賦販売法に基づく改善命令を出しています。サイバー攻撃の被害者である企業に対して行政処分を下すのは異例の措置です。直接の原因はセキュリティー対策の不備ですが、第三者委員会の調査によりシステムの脆弱性診断の結果を改ざんして監査機関に提出していたことが発覚。社会的信頼を大きく落とすことになりました。

参照元:日経クロステック(https://xtech.nikkei.com/atcl/nxt/column/18/00989/083100096/

脆弱性が突かれクレジットカード情報が流出

ヨシハラシステムズが運営するオンラインクリーニングサービス「せんたく便」が不正アクセスによる個人情報流出を2021年4月5日に報告。58813件のクレジットカード情報が流出した可能性があることが判明しました。第三者機関を通じて調査を実施したところ、脆弱性を利用しSQLインジェンクションが仕掛けられたことがわかりました。

参照元:サイバーセキュリティ.com(https://cybersecurity-jp.com/news/51080

SQLインジェクションによる被害が出た原因

SQLインジェクションはWebアプリケーションの脆弱性を突く攻撃によるもので、エスケープ処理などの対策を行い、攻撃者が不正なSQLを送り込んできても無効化するように設定しておくことで防止することが可能です。

被害を受けてしまうのは、サーバー管理上の脆弱性診断を怠っていた、あるいは脆弱性を知りながら対策できていなかったことが原因です。メタップスペイメントの例では他の不正アクセスの事実も確認されており、対応の重要性が明らかになりました。

株式会社アルファネット所属の
ホワイトハッカーからのアドバイス

POINT
SQLクエリを壊さずに命令を追加する方法を探る
イメージ

Webアプリケーションからデータベースへの問合せを行う機能では、利用者の入力した値がSQLクエリとして利用される場合があります。脆弱性診断では、このSQLクエリを壊さずに命令を追加する方法を探ります。この方法はWebアプリケーションの実装によって様々な方法があるため、脆弱性診断員は専門的な技術を駆使して診断します。

SQLインジェクションの脆弱性が発生する原因は、攻撃者の入力した値がSQLクエリとして特別な意味をもってしまうことにあります。この問題を根本から解決するためには、プレースホルダ機能を利用した実装に変更することが推奨されます。この実装により、入力値は事前に制御された命令の範囲を超えることができなくなります。

SQLインジェクションの診断・対策について
アルファネットへ相談をする

電話で問い合わせる

SQLインジェクションの対策

入力値の制限

Webフォームで入力値を制限することは、SQLインジェクション対策として有効です。不正なSQL文で使われる特殊文字が入力されても受け付けないようにします。検索ボックスやWebフォームに入力可能な文字列を英数字のみに制限するといった方法です。この際、入力された文字列が仕様に沿ったものかをWebアプリケーション側で判定する「バリデーション処理」を実装するといいでしょう。規定外の文字列が入力されると再入力を促す処理を実装すれば、予期しないスクリプトの実行を防げます。

エスケープ処理、サニタイジングを行う

エスケープ処理は、不正なSQL文に悪用される特殊な文字を無害な文字へ書き換える処理のことです。攻撃者が特殊な文字を利用してSQL文をWebサイトへ注入しようとしても、その攻撃を無効にできます。エスケープ処理は、SQLインジェクション対策としては、基本的な方法と言えるでしょう。たとえば、シングルクォート「'」をダブルクオート「''」に置き換えるといった処理が可能です。言語によっては、エスケープ処理用の関数が用意されています。

動作環境を最新状態に保つ

SQLインジェクション対策に限らず、セキュリティ対策の基本として、動作環境を最新の状態に保つことは常に重要です。OSやアプリケーションは、脆弱性を改善するアップデートが行われています。たとえば、WordPressでは、SQLインジェクションに脆弱性があるプラグインが過去に報告されたことがあります。こうした脆弱性は攻撃の標的にされてしまうため、脆弱性を克服した最新バージョンで動作することが大切なのです。OSやアプリケーションはアップデートすることで、攻撃に対抗できる可能性があります。

プレースホルダを利用する

プログラミングにおいて外部から指定された要素を格納しておく場所のことをプレースホルダと言います。プレースホルダを利用することもSQLインジェクション対策になります。攻撃者がWebサイトへ注入しようとした不正なSQL文を「値」として判断するため、SQL文の実行を防止することが可能です。

WAFを導入する

Webサイトをアプリケーションレベルで防御するファイアウォールであるWAFの導入も検討しましょう。一般的なファイアウォールは、ネットワークレベルであれば不正なアクセスを防御できます。しかし、ネットワークとしては正常なアクセスと判断されるSQLインジェクションに対して、一般的なファイアウォールでは役に立ちません。アプリケーションレベルでの不正な動作を検知して防御できるWAFなら、SQLインジェクションに対処できます。クラウド型のサービスなら、常に最新のセキュリティを維持することも可能。WAFは手軽で効果が高い方法と言えます。

セキュリティの脆弱性診断をする

システムがどのくらいのリスクを抱えているのか、現状を知ることは対策をする上で重要です。そんな脆弱性を洗い出せるのが、セキュリティの脆弱性診断です。システムやネットワークの構築者側の目線ではなく、攻撃者側の目線で攻撃できる隙がどこにあるかを調査するのが脆弱性診断サービスの特徴。対策を検討する前に利用してみるといいでしょう。

脆弱性診断(セキュリティ診断)とは?
目的や必要性について詳しく見る

本サイトの監修者であるアルファネットでは今回解説したSQLインジェクションを含め、外部からの不正アクセスや内部情報漏えいを引き起こすサイバー攻撃対策アドバイスや社員のセキュリティ向上のための教育を行っています。自社のセキュリティ対策に不安を感じる場合は、相談してみることをおすすめします。

取材協力
株式会社アルファネット
多種多様な企業の状況に合わせ
セキュリティ対策を根本から支える

当ページの監修協力であるホワイトハッカーが所属する株式会社アルファネット。事務機器用品を中心とするカタログ通販サービス「たのめーる」が有名な大塚商会のグループ企業です。

大塚商会はコンピュータ・ネットワーク関連のシステムインテグレーション事業や、コンピュータ機器の保守、アウトソーシングのサービスも中核にしており、その中でアルファネットはサイバーセキュリティ対策の専門グループ企業として活躍しています。

巨大なデータベース・ネットワークを日々守り続けているのは、ホワイトハッカーの主導による正確な診断と、ツールによる包括的な診断によるもの。大塚商会のグループ企業や顧客を中心に、そのサービスを提供してきました。
またメール訓練など、社員育成の提供にも力を入れています。

提供するサイバー
セキュリティサービス

ペネトレーションテスト(Webアプリケーション侵入試験)/標的型メール訓練サービス/情報セキュリティ教育/CSIRT構築/クラウド型WAFサービス/セキュリティ診断サービス/ランサムウェア対策調査サービス

アルファネットの公式HPから
サイバーセキュリティリスクの対策について相談する

電話で問い合わせる