SQLインジェクションの透過的な防御手法
2
0
0
全文
(2) 情報処理学会第 82 回全国大会. た SQL 文はデータベース(DB)ドライバを通じ て DB サーバに送られて実行される.. SQL 実行関数を呼び出して,パラメータ をバインドした PS を実行する. SQL文 S (ESSオブジェクト). (a). (b) Web IF. U Web ブラウザ (クライアント). (c) SQL生成 ロジック. U. Web拡張. marks: [36,49], [65,70]. SQLF + U. [a,b] 外部入力 フック. SELECT * FROM user WHERE username='a' OR 1=1; --' AND password='dummy';. [a',b']. 外部入力 マーキング. S[36,49] a' OR 1=1; --. 無害化. マーク 伝搬. S[65,70] dummy. プリペアードステートメント PS SELECT * FROM user WHERE username=? AND password=?;. 拡張文字列システム(ESS). (d1) パラメータ化. (d) DB ドライバ U: 外部由来文字列. SQL文 フック. SQLF: SQL断片文字列 PS(U): プリペアードステートメント、 Uはバインドされた値. PS(U). 拡張文字列システム(ESS). DB サーバ. DB ドライバ. (d2) パラメータバインド DB拡張. (d3) 実行. SQLI 無害化. 図 3: SQLI 無害化手順. DB拡張. 図 2: SQLI 防御手順. 4. システム本来の処理に割り込むために,二つの 拡張を行う.Web 拡張は,Web IF を拡張して外部 入力をフックする.DB 拡張は,DB ドライバを拡 張して SQL 文の送信をフックする. 以下に SQLI 防御手順を示す(図 2 参照) . (a) 外部入力フック: Web IF は,外部入力を受 信したら,値をパースして文字列オブジェ クトを生成する.Web 拡張は,ESS の外部 入力マーキング機能を呼び出す. (b) 外部入力マーキング: ESS は各外部入力値 に対してマーキングを行い,ESS オブジェ クトを生成する. (c) マーク伝搬: 文字列の連結操作により新し い文字列が生成されるとき,ESS はマーク を統合して更新する. (d) SQLI 無害化(detoxification): DB 拡張は, SQL 文が DB ドライバに渡されるのをフッ クして,文字列がマークされているならば PS を生成してパラメータ値(外部入力値) をバインドし,SQL 文を実行する.SQL 文 の文字列がマークされていないならば,何 もせず元のアプリケーションコードに戻る. 以下に SQLI 無害化の手順を示す(図 3) . (d1) パラメータ化: 外部入力スライスをプレ ースホルダ("?")に置換した PS を作成 する. (d2) パラメータバインド: DB 拡張は,DB ドラ イバが提供する関数を呼び出して PS を DB サーバに送る.同様に各外部入力スラ イスを PS にバインドする. (d3) 実行: DB 拡張は,DB ドライバが提供する. 3-390. 実装と評価. Web アプリケーションの開発に広く利用されてい る Ruby,JavaScript,PHP で提案手法を実装し評 価した.Ruby ではメタプログラミング,JavaScript ではソースコード変換を用いた[2].PHP では拡張 モジュールを用いた[3]. SQLI 用ペネトレーションツール sqlmap を用い て,各実装が SQLI 攻撃を防止できることを確認 した.また,本手法の導入による性能負荷を計測 したところ,応答時間は十数%(絶対値で数 ms), メモリ使用量は数%(約 1KB)増加する.それぞ れ対話的なアプリケーションでは問題にならない.. 5. おわりに. 本論文では,情報漏洩等の深刻な損害をもたらす SQLI攻撃に対する防御策を示した.提案手法は,言 語処理系を拡張して外部入力を確実に追跡し,必要 に応じてSQL文の実行方法を変更することで,アプ リケーションコードがSQLI脆弱な場合であっても DBアクセスを安全に実行できる.. 参考文献 [1] Clarke-Salt, J.: SQL Injection Attacks and Defense (2nd ed.), Syngress, 2009. [2] Mukasa, Nakamura: Transparent SQL Injection Defense Method using Programming Language Constructs, IPSJ SIG Technical Report, Vol.2019-DBS-170 No.11, 2019. [3] 向佐, 中村: WordPress におけるプラグイン透過な SQL インジェクション防御策の提案, 情報処理学会 研究報告, Vol.2019-DPS-181 No.5, 2019.. Copyright 2020 Information Processing Society of Japan. All Rights Reserved..
(3)
関連したドキュメント
〜3.8%の溶液が涙液と等張であり,30%以上 では著しい高張のため,長時間接触していると
血管が空虚で拡張しているので,植皮片は着床部から
本体背面の拡張 スロッ トカバーを外してください。任意の拡張 スロット
I Samuel Fiorini, Serge Massar, Sebastian Pokutta, Hans Raj Tiwary, Ronald de Wolf: Exponential Lower Bounds for Polytopes in Combinatorial Optimization. Gerards: Compact systems for
荷役機器の増車やゲートオープン時間の延長(昼休みの対応を含む)、ヤードの拡張、ターミ
2011 Jiangsu Eastern Heavy Industry Arpeni Pratama Ocean Line JIANGSU EASTERN 115000 n.a.. 2012 Shanghai Jiangnan
新型コロナウイルス感染症(以下、
防災 “災害を未然に防⽌し、災害が発⽣した場合における 被害の拡⼤を防ぎ、及び災害の復旧を図ることをい う”