SQLインジェクション:それはまだ脅威ですか? どうすればそれを避けることができますか?
公開: 2020-03-07データ漏えいは非常に一般的であるため、もはや驚くことではありません。 悪意のある攻撃者は、可能な限り多くのデータを収集することを目指しています。 それらは、ログイン資格情報、クレジットカード情報、または企業秘密の後にあります。 そのようなデータを入手したら、ダークウェブで販売します。
彼らがこれまでにどれだけのデータを盗んだか、そしてどれだけダークウェブにダンプしたかを把握できない場合は、ここに心配な数字があります。 昨年、犯罪者はハッキングされた16のWebサイトだけで6億2000万のアカウントを盗んで販売しました。 はい、16のWebサイトをハッキングすると、多大な損害をもたらす可能性があります。 しかし、あなたは何が悪いのか知っていますか? 何千もの新しいサイトが毎日ハッキングされています!
サイバー犯罪者は毎日新しいハッキング方法を考え出します。 しかし、SQLインジェクションなどの古い手法を忘れているわけではありません。 これらは、実行が簡単で実りある結果をもたらす最も一般的な攻撃ベクトルの1つです。
- SQLインジェクションとは何ですか?なぜそれが危険なのですか?
- SQLインジェクションはどのように機能しますか?
- インバンドSQLインジェクション
- ブラインドSQLインジェクション
- 帯域外SQLインジェクション
- この脅威はまだ関連していますか?
- 予防のためのセキュリティのヒント
- 最後の言葉
SQLインジェクションとは何ですか?なぜそれが危険なのですか?

SQLインジェクションはSQLiとも呼ばれ、ハッカーがSQLステートメントを実行できるようにするインジェクション攻撃の一種です。 インジェクション攻撃は、さまざまな攻撃ベクトルの幅広いカテゴリです。 しかし、それらはすべて、悪意のある攻撃者が危険な入力を実行することを許可します。 これらはシステムコマンドとして機能し、実行されます。
SQLステートメントは、さまざまなデータベースからデータを追加または取得するために最も一般的に使用されます。 Microsoft SQL Server、Access、Oracleなどの有名な管理システムの多くがこれらのステートメントを使用しています。
広く使用されているデータベース管理システムの多くはSQLステートメントを使用しているため、ハッカーはSQLインジェクションを通じてこれらのシステムを悪用する可能性があります。 これは、犯罪者がデータベースに保存されている機密データにアクセスして盗むことができることを意味します。 次のものを含めることができます。
- 知的財産。
- クレジットカード情報。
- 顧客情報。
- アドレス。
- 会社の秘密。
おすすめ: ChromeとFirefox:パフォーマンス、セキュリティ、プライバシーの比較!
SQLインジェクションはどのように機能しますか?

SQLインジェクション攻撃を実行するには、ハッカーはWebサイトまたは企業の内部アプリケーション内で脆弱なユーザー入力を見つける必要があります。
たとえば、被害者は自分のWebサイトにWordPressを使用しています。 コードにはSQLの脆弱性があり、サニタイズせずにユーザー入力をデータベースに直接送信する可能性があります。 ハッカーがその脆弱性を見つけた場合、問題のデータベースにコマンドを送信できます。 次に、データベース出力はブラウザに戻り、ハッカーがさまざまなコマンドを実行できるようにします。 このようにして、データベース全体をダウンロードしたり、新しいコマンドを設定したり、ユーザーアカウントを変更したり、新しいアカウントを作成したりできます。
SQLインジェクション攻撃には、主に3つの形式があります。
- インバンドSQLインジェクション:
- エラーベースのSQLインジェクション。
- ユニオンベースのSQLインジェクション。
- ブラインドSQLインジェクション:
- ブール値。
- 時間ベース。
- 帯域外SQLインジェクション。
インバンドSQLインジェクション
インバンドSQLインジェクションは、シンプルで効率的であるため、最も一般的なタイプの1つです。 ここでは、攻撃者は同じ通信チャネルを使用して攻撃を実行し、結果を収集します。 エラーベースとユニオンベースのSQLインジェクションの2つのサブバリエーションがあります。
- エラーベースのSQLインジェクションにより、ハッカーはデータベースにエラーメッセージを生成させることができます。 次に、これらのエラーメッセージを使用して、データベース自体に関する情報を収集できます。
- ユニオンベースのSQLインジェクションにより、犯人はUNIONSQL演算子を利用できます。 データベースによって提供されるさまざまなステートメントを組み合わせて、1つのHTTP応答を取得します。 このような応答には、ハッカーが悪用できるデータが含まれていることがよくあります。
ブラインドSQLインジェクション
ブラインドSQLインジェクションは、サーバーの動作パターンに依存しています。 それらは実行がはるかに遅いです。 ハッカーはデータペイロードを送信し、サーバーの応答を検査してその構造を分析します。 データがハッカーに直接送信されないため、これを「ブラインド」と呼びます。 したがって、インバンドでのエクスプロイトに関する情報を確認することはできません。 ブール値と時間ベースの2つのバリエーションがあります。

- ブール値のバリエーションにより、ハッカーはSQLクエリを送信できます。これにより、データベースに情報を返すように求められます。 HTTP応答内の情報は、前の結果に応じて変化します。
- 時間ベースのバリエーションにより、悪意のあるアクターはSQLクエリをデータベースに直接送信できます。これにより、データベースは反応する前に待機します。 攻撃者は、データベースが応答するのに必要な時間に注意し、クエリがtrueかfalseかを判断します。 結果に基づいて、HTTP応答は即時または遅延されます。
帯域外SQLインジェクション
帯域外SQLインジェクションでは、データベースサーバーで特定の機能が有効になっている場合にのみ、ハッカーがデータベースを攻撃できます。 これは最も人気のないSQLインジェクション方式です。 多くのハッカーは、エラーベースおよびブラインドSQLインジェクションの代わりにこれを使用します。
この特定の攻撃は、ハッカーが同じ媒体を使用して攻撃を実行し、情報を収集できない場合のオプションです。 または、サーバーが不安定で、他の2つのインジェクションタイプの実行が遅い場合に、このインジェクションを使用できます。 この手法は、盗まれたデータを転送するためのDNSおよびHTTP要求を作成します。
あなたが好きかもしれません:中小企業のためのサイバーセキュリティリスク評価と管理のヒント。
この脅威はまだ関連していますか?

SQLインジェクションは、攻撃的なサイバー攻撃の最も古い形式の1つです。 それでも、それはまだ非常に関連性があります。 Open Web Application Security Projectは、2年前にSQLインジェクションを最大の脅威として挙げました。 クラウドサービスプロバイダーのAkamaiは、SQLインジェクションが2017年から2019年までのすべてのWebベースの攻撃の65%に関与していることを明らかにした、インターネットの状態レポートを作成しました。したがって、SQLインジェクションは依然としてWeb攻撃の3分の2に現れると言えます。近年では。
2017年の第1四半期には、これらのベクトルがアプリケーション層の攻撃の44%を占めていました。 さらに悪いことに、SQLインジェクションほど速く成長するアプリケーション攻撃ベクトルは他にありません。 2018年11月には、もう1つの大きな急上昇がありました。 これは、3500万を超えるSQLインジェクション攻撃の試みがあったことを示しています。 専門家は、この急増の主な原因はホリデーシーズンであると考えています。 これは、すべてのWebサイト所有者が知っておくべきことです。特に、小売業界にいる場合はそうです。 しかし、ホリデーシーズンが終わった後でも、SQLインジェクションはあなたが知っておく必要のある脅威のままです。
米国は、アプリケーション層攻撃の最大の標的です。 わずか17か月で約30億件の攻撃に直面しています。 他の人気のある犠牲者には、英国、ドイツ、ブラジル、インド、日本、カナダ、オーストラリア、イタリア、オランダが含まれます。 したがって、それは依然として大きな脅威であり、すべての企業が広範な予防措置を講じる必要があると考えるのが安全です。
予防のためのセキュリティのヒント

開発者にとって最善の行動は、攻撃が発生しないように予防策を導入することです。 これらは最も効果的な予防策です。
- 入力検証:入力検証は、特定のユーザー入力が許可されているかどうかを検証します。 つまり、形式、長さ、およびタイプをまとめて受け入れる必要があります。 これは、入力文字列内のハッカーの植物と戦うコマンドに役立ちます。
- パラメータ化されたクエリ:パラメータ化されたクエリは、さまざまなSQLステートメントをプリコンパイルする方法です。 次に、ステートメントを実行できるようにパラメーターをストックします。 これにより、データベースはコードを認識し、通常の入力データと区別することができます。
- ストアドプロシージャ:開発者は、1つまたは複数のSQLステートメントを論理ユニットにクラスター化する必要があります。 これは、名前が示すように保存して、後で使用できるように保存できるコードの形式です。
- エスケープ:開発者は、文字エスケープ機能を使用して、DBMSがユーザー入力とSQLステートメントを混同しないようにする必要があります。
- Webアプリケーションファイアウォール: SQLインジェクション攻撃を防ぐための最も安全な方法の1つです。 ファイアウォールは、サーバーとの間で循環するトラフィックを監視します。 どのリクエストが潜在的に有害で、どのリクエストがそうでないかを識別します。 このソリューションは、他の多くのエクスプロイトには十分であるため、常に適切です。
- 管理者権限の回避:開発者は、rootアクセス権を持つアカウントを介してアプリをデータベースに接続しないでください。 そうしないと、ハッカーがシステム全体にアクセスして、修復不可能な損害を与える可能性があります。 さらに、開発者は、すべてのデータベースに、制限付きの独自の資格情報のセットがあることを確認する必要があります。
あなたも好きかもしれません:トップ10ベストセラーインターネットセキュリティソフトウェア(アンチウイルス&セキュリティ)。
最後の言葉

SQLインジェクションを心配している人は、他の考えられる攻撃も忘れてはなりません。 通常のサイバーセキュリティ慣行が適用されます。堅牢なパスワードの使用、脅威の認識方法の習得、Webサイトやデータベースに接続するたびにVPNをオンにするなどです。 VPNとは何ですか?それは何をしますか? それはあなたがオンラインになるときはいつでもあなたのオンライントラフィックを暗号化します。 したがって、SQL要求をデータベースに送信する場合、DBのみがそれを復号化できます。 誰かが問題のデータパケットを傍受した場合、彼らはそれらを理解しません。 あなたやあなたの会社があらゆる種類の脅威に対して準備ができているほど、より良いものになります。
包括的な予防策の導入のみが、SQLインジェクションまたは攻撃が成功しないことを保証します。 さまざまなエクスプロイトと戦うための適切なツールを確実に入手するために、多くの時間、労力、およびお金を投資する準備をしてください。
