SQL インジェクション: それは依然として脅威ですか? どうすればそれを回避できるでしょうか?
公開: 2020-03-07データ侵害は非常に一般的であるため、もはや驚くべきことではありません。 悪意のある攻撃者は、できるだけ多くのデータを収集することを目的としています。 これらは、ログイン認証情報、クレジット カード情報、または企業秘密に続きます。 彼らはそのようなデータを入手すると、それをダークウェブで販売します。
彼らがこれまでにどれだけのデータを盗み、どれだけのデータをダークウェブに捨てたかを把握できない場合、ここに憂慮すべき数字があります。 昨年、犯罪者はハッキングされた 16 の Web サイトだけでも 6 億 2,000 万件のアカウントを盗み、販売しました。 確かに、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 インジェクションにより、犯人は UNION SQL 演算子を利用できるようになります。 データベースによって提供されるさまざまなステートメントを組み合わせて、1 つの HTTP 応答を取得します。 このような応答には、ハッカーが悪用できるデータが含まれていることがよくあります。
ブラインド SQL インジェクション
ブラインド SQL インジェクションは、サーバーの動作パターンに依存します。 実行ははるかに遅くなります。 ハッカーはデータ ペイロードを発行し、サーバーの応答を検査してその構造を分析します。 データがハッカーに直接渡されないため、彼らはこれを「ブラインド」と呼んでいます。 したがって、帯域内エクスプロイトに関する情報を確認することはできません。 これには、ブール型と時間ベースの 2 つのバリエーションがあります。

- ブール値のバリエーションを使用すると、ハッカーは SQL クエリを送信して、データベースに情報を返すよう要求できます。 HTTP 応答内の情報は、前の結果に応じて変化します。
- 時間ベースの変動により、悪意のある攻撃者は SQL クエリをデータベースに直接送信することができ、データベースは反応するまで待機する必要があります。 攻撃者はデータベースが応答するまでに必要な時間に注目し、クエリが真か偽かを判断します。 結果に基づいて、HTTP 応答は即時または遅延されます。
アウトオブバンド SQL インジェクション
アウトオブバンド SQL インジェクションにより、ハッカーはデータベース サーバーで特定の機能が有効になっている場合にのみデータベースを攻撃できます。 これは、最も普及していない SQL インジェクション方法です。 多くのハッカーは、エラーベースおよびブラインド SQL インジェクションの代替としてこれを使用しています。
この特定の攻撃は、ハッカーが攻撃の実行と情報の収集に同じ媒体を使用できない場合のオプションです。 または、サーバーが不安定で他の 2 つの注入タイプの実行が遅い場合に、この注入を使用できます。 この手法では、盗まれたデータを転送するための DNS リクエストと HTTP リクエストが作成されます。
あなたは好きかもしれません:中小企業のためのサイバーセキュリティのリスク評価と管理のヒント。
この脅威はまだ関連性がありますか?
SQL インジェクションは、攻撃的なサイバー攻撃の最も古い形態の 1 つです。 しかし、それは依然として非常に関連性があります。 Open Web Application Security Project は、2 年前に SQL インジェクションを最大の脅威として挙げました。 クラウド サービス プロバイダーである Akamai が作成した Internet of the Internet Report では、2017 年から 2019 年までのすべての Web ベースの攻撃の 65% が SQL インジェクションによるものであることがわかりました。つまり、SQL インジェクションは依然として Web 攻撃の 3 分の 2 に出現していると言えます。近年では。
2017 年の第 1 四半期には、これらのベクトルがアプリケーション層攻撃の 44% の原因となっていました。 さらに悪いことに、SQL インジェクションほど急速に成長するアプリケーション攻撃ベクトルは他にありません。 2018 年 11 月には、さらに大きな急増がありました。 3,500 万件を超える SQL インジェクション攻撃が試行されたことが判明しました。 専門家らは、この急増の主な原因はホリデーシーズンだったと考えている。 これは、すべての Web サイト所有者、特に小売業界の場合は認識しておく必要があります。 しかし、ホリデー シーズンが終わった後も、SQL インジェクションは依然として注意が必要な脅威です。
米国はアプリケーション層攻撃の最大の標的となっています。 わずか 17 か月で約 30 億件の攻撃に直面しました。 他の一般的な被害者には、英国、ドイツ、ブラジル、インド、日本、カナダ、オーストラリア、イタリア、オランダが含まれます。 したがって、これは依然として大きな脅威であり、すべての企業が広範な予防措置を講じる必要があると考えて間違いありません。
予防のためのセキュリティのヒント
開発者にとっての最善の行動は、攻撃が発生しないように予防措置を導入することです。 最も効果的な予防策は次のとおりです。
- 入力検証:入力検証では、特定のユーザー入力が許可されているかどうかを検証します。 つまり、形式、長さ、タイプをまとめて受け入れる必要があります。 これは、ハッカーが入力文字列に埋め込むコマンドと戦うのに役立ちます。
- パラメータ化されたクエリ:パラメータ化されたクエリは、さまざまな SQL ステートメントをプリコンパイルする方法です。 次に、ステートメントを実行できるようにパラメーターを保存します。 これにより、データベースがコードを認識し、通常の入力データと区別できるようになります。
- ストアド プロシージャ:開発者は、1 つまたは複数の SQL ステートメントを 1 つの論理ユニットにクラスタリングする必要があります。 これは、名前が示すように、保存して後で使用できるコードの形式です。
- エスケープ:開発者は文字エスケープ機能を使用して、DBMS がユーザー入力を SQL ステートメントと混同しないようにする必要があります。
- Web アプリケーション ファイアウォール: SQL インジェクション攻撃を防ぐ最も安全な方法の 1 つです。 ファイアウォールは、サーバーとの間で循環するトラフィックを監視します。 どのリクエストが潜在的に有害であり、どのリクエストが有害ではないかを識別します。 このソリューションは他の多くのエクスプロイトには十分であるため、常に適切です。
- 管理者権限の回避:開発者は、root アクセス権を持つアカウントを介してアプリをデータベースに接続しないでください。 そうしないと、ハッカーがシステム全体にアクセスし、回復不能な損害を引き起こす可能性があります。 さらに、開発者は、すべてのデータベースに制限付きの独自の資格情報セットがあることを確認する必要があります。
こちらもお勧めです:インターネット セキュリティ ソフトウェアのベストセラー トップ 10 (ウイルス対策とセキュリティ)。
最後の言葉
SQL インジェクションを懸念している人は、他の攻撃の可能性も忘れてはなりません。 通常のサイバーセキュリティ慣行が適用されます。つまり、強力なパスワードを使用し、脅威を認識する方法を学び、Web サイトやデータベースに接続するときは常に VPN を有効にするなどです。 VPN とは何ですか?また、何をするものですか? オンラインに接続するときはいつでもオンライン トラフィックを暗号化します。 したがって、SQL リクエストをデータベースに送信すると、DB だけがそれを復号化できます。 誰かが問題のデータパケットを傍受しても、意味が分からなくなります。 あなたまたはあなたの会社があらゆる種類の脅威に対して備えるほど、より良い結果が得られます。
SQL インジェクションや攻撃が決して成功しないようにするには、包括的な予防策を導入する必要があります。 さまざまなエクスプロイトと戦うための適切なツールを確実に入手できるように、多大な時間、労力、資金を投資する準備をしてください。