444 Views
July 24, 24
スライド概要
SQLインジェクションに関する問題や発生する脅威、被害の実例、および防止策について詳しく解説します。SQLインジェクションとは、脆弱なウェブアプリケーションが攻撃者によって不正利用される可能性がある問題です。主な脅威は非公開情報の閲覧や情報の改ざん、個人情報の漏洩などがあり、過去には企業にて大規模なデータ流出が発生しました。被害後の展開としては、事業継続への影響や社会的信用の低下が挙げられます。防止策としては、SQL文の組み立てにプレースホルダを使用することや、脆弱性検出のためのテスト観点を設けることが重要です。
WEB システムを作っています。
SQL インジェクションを 起こさないためには Tomohiro K 1
自己紹介 Tomohiro K IPA 安全確保支援士 に合格しました! 2
今日いいたいこと 開発者たるもの SQL インジェクションを起こしてはいけません 3
目次 1. 2. 発生する問題 ○ SQL インジェクションとは ○ 発生しうる脅威 ○ 被害の実例 ○ 被害発生後の展開 防止策 4
SQL インジェクションとは SQL文の組み立て方に問題があり、攻撃によって DB の不正利用をまねく 可能性がある問題のこと ① SQL 文含む 入力値送信 消 去 ② SQL 文送信 改 ざ ん 攻撃者 漏洩 SQL インジェクション 脆弱性のある Web アプリ DB 安全なウェブサイトの作り方 - 1.1 SQLインジェクション | 情報セキュリティ | IPA 独立行政法人 情報処理推進機構 5
発生しうる脅威 大きく 4つの脅威がある 非公開情報の閲覧 情報の改ざん、消去 個人情報の漏えい など Web ページの改ざん、パスワード変更、 システム停止 など 認証回避による不正ログイン OSコマンドの実行 ログインした利用者に許可されている 全ての操作を不正に行われる システムの乗っ取り、他への攻撃の 踏み台としての悪用 など 安全なウェブサイトの作り方 - 1.1 SQLインジェクション | 情報セキュリティ | IPA 独立行政法人 情報処理推進機構 6
被害の実例 近年でも大きな被害が出ている メタップスペイメント サンリオエンターテイメント 最大46万件のデータ流出(2022/02/28) 4万6000件のデータ流出(2021/06/05) ● ● ● クレジットカード番号 有効期限 セキュリティコード など ● メールアドレス キティちゃんの企業 クレジットカード決済基盤を提供する企業 メタップス、不正アクセスやられ放題 最大 46万件のカード番号やセキュリティコード流出か バックドアや SQLインジェクションの痕跡見つかる - ITmedia NEWS サンリオ子会社に不正アクセス、メアド 4万6000件流出か SQLインジェクション攻撃で ITmedia NEWS 7
被害発生後の展開 事業継続に大きなダメージを受ける 事故対応費用の発生 顧客の減少 損害賠償など 社会的信用の低下 8
防止策 (1/2)
SQL 文の組み立てにプレースホルダを利用する
$query
= "SELECT first_name, last_name FROM users WHERE user_id = '$id' LIMIT 1;";
$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>Something went wrong.</pre>'
);
$data = $db->prepare( 'SELECT first_name, last_name FROM users WHERE user_id = (:id) LIMIT 1;' );
$data->bindParam( ':id', $id, PDO::PARAM_INT );
$data->execute();
$row = $data->fetch();
PHP でプレースホルダを利用するよう修正する例
digininja/DVWA: Damn Vulnerable Web Application (DVWA)
9
防止策 (2/2) テスト観点に脆弱性の検出パターンを入力値に含める No 検出パターン 脆弱性有無の判定基準 備考 (脆弱性有無の判定基準詳細、その他) エラーになる レスポンスに DBMS 等が出力するエラーメッセージ(例 :SQLException、Query failed 等)が表示された場合にエ ラーが発生したと判定します 2 「検索キー」と、 「検索キー 'and'a'='a」 の比較 検索キーのみと同じ結果になる HTTPステータスコードが一致し、かつレスポンスのdiff(差分) が全体の 6% 未満の場合、同一の結果と判定します。検査対 象が検索機能の場合は、検索結果件数が同一の場合にも、 同一の結果と判定します。 3 「検索キー (数値)」と、 「検索キー and 1=1」 の比較 検索キーのみと同じ結果になる 同上(この検出パターンは検索キーが数値の場合のみ検査し ます。数値の場合は全ての検出パターンを検査し、数値以外 の場合は検出パターン 1、2 のみ検査します) 1 「'」 (シングルクォート 1 つ) 安全なウェブサイトの作り方 | 情報セキュリティ | IPA 独立行政法人 情報処理推進機構 | 別冊:「ウェブ健康診断仕様」 10
シングルクォートでエラーになる例 digininja/DVWA: Damn Vulnerable Web Application (DVWA) 11
ご清聴 ありがとうございました 12