SQLインジェクション攻撃とは?
SQLインジェクション(SQLI)攻撃がどのようなものか、どのように機能するかは知らないかもしれないが、被害者については間違いなく知っているだろう。Target、Yahoo、Zappos、Equifax、Epic Games、TalkTalk、LinkedIn、Sony Pictures-これらの企業はすべて、SQLインジェクションを使ってサイバー犯罪者にハッキングされた。
SQLIとは、サイバー犯罪者がウェブ・アプリケーションのソフトウェアの脆弱性を悪用し、データを盗んだり、削除したり、変更したり、影響を受けたアプリケーションを実行しているシステムの管理者権限を取得したりすることを目的とした攻撃の一種です。
サイバーセキュリティ研究者は、SQLIを最も巧妙で防御が容易なサイバー脅威の1つとみなしている。Malwarebytes Labs 、SQLIを「The Top 5 Dumbest Cyber Threats that Work Anyway(とにかく機能する最も愚かなサイバー脅威トップ5)」の3位にランク付けし、SQLIが既知の予測可能な攻撃であり、簡単に対策が実行できることを挙げている。
SQLI攻撃は非常に簡単で、実際、攻撃者はグーグル・ドーキングと呼ばれる高度なグーグル検索を使って脆弱なウェブサイトを見つけることができる。いったん適切な標的を見つけると、SQLI攻撃者は自動化されたプログラムを使って効率的に攻撃を実行することができる。攻撃者は標的サイトのURLを入力するだけで、盗まれたデータが転がり込んでくるのを見ることができる。
しかし、SQLI攻撃は日常茶飯事であり、毎日起きている。実際、もしあなたがウェブサイトやオンラインビジネスを持っているなら、サイバー犯罪者はすでにSQLIを使ってあなたのウェブサイトに侵入しようとしている可能性が高い。SQL Injection Threat & Recent Retail Breaches(SQLインジェクションの脅威と最近の小売業における侵害)に関するPonemon Instituteのある調査によると、調査対象となった企業の65%がSQLIベースの攻撃の被害者であった。
よく狙われるウェブアプリケーションには、ソーシャルメディアサイト、オンライン小売業者、大学などがあります。中小企業は特に脆弱で、サイバー犯罪者がSQLI攻撃で使用するテクニックに精通していないことが多く、同様にそのような攻撃に対する防御方法を知らないからです。
SQLインジェクションから身を守るための第一歩として、SQLインジェクションについての知識を深めましょう。SQLインジェクションについての入門書です。
「SQLIとは、サイバー犯罪者がウェブ・アプリケーションのソフトウェアの脆弱性を悪用し、データを盗んだり、削除したり、変更したり、影響を受けたアプリケーションを実行しているシステムの管理者権限を得たりすることを目的とした攻撃の一種である。
SQLインジェクションはどのように機能するのか?
70年代初頭に開発されたSQL(構造化クエリー言語の略)は、オンライン・データベースを管理するために現在も使われている最も古いプログラミング言語のひとつである。これらのデータベースには、オンラインショッピングサイトの価格や在庫レベルなどが格納されている。ユーザーがデータベースの情報にアクセスする必要がある場合、SQLはそのデータにアクセスし、ユーザーに提示するために使用されます。しかし、これらのデータベースには、ユーザー名やパスワード、クレジットカード情報、社会保障番号など、より機密性の高い貴重なデータが含まれていることもあります。そこでSQLインジェクションの出番となる。
簡単に言うと、SQLインジェクションとは、hackers 安全でないウェブサイトの検索フィールド、ログインフィールド、URLなどのウェブフォームに悪意のあるコマンドを入力し、機密性の高い貴重なデータに不正アクセスすることである。
例を挙げよう。お気に入りのオンライン衣料品サイトを想像してみてほしい。ソックスを買おうとしているあなたは、マウスをクリックするだけで、カラフルなソックスのテクニカラーの世界を見ることができる。テクノロジーの驚異だ!あなたが目にする靴下はすべて、どこかのサーバーのデータベースに存在している。気に入った靴下を見つけ、その靴下をクリックすると、靴下のデータベースにリクエストが送信され、ショッピングサイトはあなたがクリックした靴下の情報を返信する。さて、あなたのお気に入りのオンライン・ショッピング・サイトが、SQLの脆弱性を悪用できるような、ずさんな方法で構築されているとしよう。
サイバー犯罪者は、靴下に関する情報を要求すると、不運な顧客のクレジットカード番号が返されるように、データベースのクエリを操作することができる。このプロセスを何度も何度も繰り返すことで、サイバー犯罪者はデータベースの奥深くを探り、あなたを含む、お気に入りのオンライン衣料品サイトで買い物をしたすべての顧客の機密情報を盗むことができる。思考実験をさらに進めて、あなたがこの衣料品サイトのオーナーだとしよう。あなたは巨大なデータ流出事件を手にしている。
1回のSQLI攻撃で、サイバー犯罪者は何百万人もの消費者の個人情報、電子メール、ログイン情報、クレジットカード番号、社会保障番号を入手することができる。サイバー犯罪者はその後、一転してこの個人情報をダークウェブの最も陰鬱な片隅で販売し、あらゆる種類の違法な目的に使用することができる。
盗まれたメールは、フィッシングや マルスパム攻撃に使われる可能性がある。マルスパム攻撃は、ランサムウェア、アドウェア、クリプトジャッカー、トロイの木馬(Emotetなど)など、あらゆる種類の破壊的なマルウェアに被害者を感染させるために使用されます。盗まれた電話番号 AndroidやiOS モバイルデバイスは、ロボコールや テキストメッセージスパムの標的となる可能性があります。
ソーシャル・ネットワーキング・サイトから盗まれたログインは、メッセージスパムを送信したり、追加サイトのログインをさらに盗んだりするのに使われることさえある。 Malwarebytes Labsは以前、ハッキングされたLinkedIn アカウントが、Google Docsのログインページのように偽装された不正なURLを含むInMailメッセージで他のユーザーをスパムするために使用されていることを報告しました。
"サイバー犯罪者は、靴下に関する情報を要求すると、不幸な顧客のクレジットカード番号が返されるように、データベースのクエリを操作することができる"
SQLインジェクションの歴史とは?
SQLインジェクションの悪用は、1998年にサイバーセキュリティ研究者でハッカーの hackerジェフ・フォリスタル(Jeff Forristal)である。彼の発見は、長く続いているhacker ジン『Phrack』に掲載された。Rain Forest Puppyというニックネームで執筆したフォリスタルは、基本的なコーディング・スキルを持つ者が、正当なSQLコマンドに不正なSQLコマンドをピギーバックさせ、安全でないウェブサイトのデータベースから機密情報を引き出す方法を説明した。
フォリスタルがマイクロソフト社に、この脆弱性が同社の人気製品であるSQLサーバーにどのような影響を与えるかを通知したところ、マイクロソフト社は問題視しなかった。フォリスタルが言うように、"彼ら(マイクロソフト)によれば、あなたがこれから読むことは問題ではないので、それを止めるために何かをする心配はない"。
マイクロソフトの無頓着な対応がこれほど衝撃的なのは、小売、教育、医療、銀行、人事など、多くの業界や機関が(当時も現在も)同社のデータベース管理技術に真剣に依存して業務を維持していたからである。これが、SQLIの歴史のタイムラインにおける次の出来事、最初の大規模なSQLI攻撃につながる。
2007年、米国最大のコンビニエンス・ストア・チェーン、セブン-イレブンがSQLI攻撃の犠牲になった。ロシアのhackers SQLインジェクションを使ってセブン-イレブンのウェブサイトに侵入し、それを足がかりにコンビニエンスストアの顧客デビットカードデータベースに侵入した。これにより、hackers たちはロシアの本国で現金を引き出すことができた。ワイアード誌が報じたように、犯人は全部で200万ドルを持ち逃げした。
すべてのSQLI攻撃が貪欲な動機によるものではない。2007年の別の注目すべき例では、サイバー犯罪者がSQLIを使って米軍関連の2つのウェブサイトを管理制御し、訪問者を反米・反イスラエルのプロパガンダを掲載したウェブサイトにリダイレクトした。
2008年に発生したマイスペースのデータ流出事件は、消費者向けウェブサイトに対する攻撃としては最大級のものとなった。サイバー犯罪者は、約3億6,000万アカウントの電子メール、名前、パスワードの一部を盗んだ。そしてこれが、私たちがサイトごとにパスワードを再利用しない理由です。
最も悪質なセキュリティ欠如のタイトルはEquifaxだ。2017年のEquifaxデータ流出事件では、1億4300万人の消費者の極めて個人的な情報(氏名、社会保障番号、生年月日、住所など)が流出した。非居住者を除くアメリカ人全員の情報のゲートキーパーを務める組織としては、基本的なSQLI攻撃に対する予防策を講じていると思うだろう。データ流出が発生する前に、サイバーセキュリティの調査会社がEquifaxにSQLI攻撃の可能性があると警告していたが、信用情報機関は手遅れになるまで何の対策も取らなかった。
史上最も不気味なハッキングとしてランク付けされる、2015年の玩具メーカーVtechへのSQLI攻撃により、約500万人の親と20万人の子供のデータが流出した。オンライン・マルチメディア出版物であるマザーボードの取材に対し、犯人のhacker データの使用予定はなく、データはオンライン上のどこにも公開していないと主張した。逆に、このhacker 、データは非常に簡単に盗むことができ、他の誰かが先に手に入れることができたとも説明している。実に冷たい慰めである。
今日に至っても、SQLI攻撃はまだ続いている。オープン・ウェブ・アプリケーション・セキュリティ・プロジェクト(OWASP)は、3年ごとに「最も重大なウェブ・アプリケーション・セキュリティ・リスクのトップ10」を発表している。最新の2017年版では、SQLI攻撃が1位にランクインした。
SQLI攻撃の寿命が長いだけでなく、興味深いのは、SQLI攻撃は何ら変化も進化もしていないということだ。SQLI攻撃は、人々がサイバーセキュリティに対する考え方を変えるまで機能し、今後も機能し続けるだろう。その変化である。
SQLインジェクションに関するニュース
- ハニーポットとは?サイバーセキュリティでの使われ方
- バグ賞金稼ぎへのインタビューユセフ・サムムーダ
- 2020年に向けたゼロデイガイド:最近の攻撃と高度な予防技術
- 金融モバイルアプリの脆弱性が消費者と企業を危険にさらす
- コンテンツ管理システムのセキュリティ
- SQLインジェクションSQLインジェクション
- OWASPトップ10 - 儲かる退屈なセキュリティ
- とにかく機能する、最も間抜けなサイバー脅威トップ5
SQLインジェクションがビジネスに与える影響とは?
当社の「サイバー犯罪の手口とテクニック」レポートで報告されているように、2018年下半期に企業に対するサイバー攻撃(あらゆる種類の)が55%増加したのに対し、個人消費者に対する攻撃はわずか4%しか増加しなかった。この統計は驚くべきものではない。セキュリティが不十分な企業は犯罪者にとって格好の標的であり、数百万ドル相当の貴重なデータの宝庫である。
逆に、データ侵害の中心となった企業は、何百万ドルもの支払いが予想される。IBMの調査によると、是正措置と罰則を含むデータ漏洩の平均コストは386万ドルである。前述のLinkedIn データ流出では、法廷外の和解でビジネスネットワーキングサイトに125万ドルの損害が発生した。
データ流出後、ターゲットは複数の州による調査の和解金として史上最高額の1850万ドルの支払いを余儀なくされた。これは、消費者が起こした集団訴訟の和解金1000万ドルとは別に支払われたものである。
もちろん、これらは数百万人の消費者に影響を与える巨大なデータ漏洩である。しかし、中小規模の企業は、盗まれた消費者記録1件につき148ドルを支払うことになる。
この話の教訓は?セキュリティに真剣に取り組み、サイバー犯罪者の「標的」にならないようにしましょう。
SQLインジェクションを防ぐには?
この手の話はさておき、SQLインジェクションが深刻な脅威であることを知っているからこそ、あなたはここにいるのだ。さあ、何とかしましょう。SQLインジェクション攻撃からビジネスを守るためのヒントをいくつか紹介しよう。
データベース管理ソフトをアップデートしてください。あなたが使っているソフトウェアは、メーカーから提供されたものなので欠陥があります。これは事実です。バグのないソフトウェアなど存在しないのです。サイバー犯罪者はSQLIを使って、このようなソフトウェアの脆弱性(エクスプロイト)を利用することができます。データベース管理ソフトウェアにパッチを当て、アップデートするだけで、自分自身を守ることができます。
最小特権の原則(PoLP)を実施する。PoLPとは、各アカウントが仕事をするのに十分なアクセス権だけを持ち、それ以上のものは持たないということです。たとえば、あるデータベースへの読み取りアクセスだけが必要なウェブ・アカウントは、データの書き込み、編集、変更の能力を一切持つべきではない。
プリペアド・ステートメントまたはストアド・プロシージャを使用する。動的SQLとは対照的に、プリペアド・ステートメントは入力されるSQLコマンドの変数を制限します。こうすることで、サイバー犯罪者は正当なSQL文に悪意のあるSQLインジェクションをピギーバックさせることができなくなる。ストアドプロシージャも同様に、ユーザがウェブアプリケーションから実行する SQL 文をデータベースに保存することで、サイバー犯罪者ができることを制限します。
有能で経験豊富な開発者を雇うこと。SQLI攻撃は多くの場合、ずさんなコーディングに起因する。ソフトウェア開発者には、セキュリティに関してあなたが何を期待しているかを事前に伝えておきましょう。
データ侵害で個人情報が盗まれたら? データ漏洩チェックリストをご覧ください。SQLI攻撃によるデータ漏えいの影響を受けた後の後始末と安全確保について、すべて学ぶことができます。
OWASPをご覧ください。Open Web Application Security Project、略してOWASPは、ウェブアプリケーションに関する権威で、SQLインジェクションを防ぐ方法について、たくさんの追加情報があります。
また、SQLインジェクションだけでは物足りないという方は、Malwarebytes Labs ブログでサイバー脅威とサイバーセキュリティの世界の最新情報をご覧ください。