ペパボ研究所 研究員の野村(@Komei5296)です。 2019年7月15日から5日間に渡って開催された、COMPSAC 2019: Data Driven Intelligence for a Smarter Worldの併設のワークショップであるNETSAP 2019: The 9th IEEE International Workshop on Network Technologies for Security, Administration and Protectionで発表を行いましたので紹介します。 その後、今回COMPSAC2019に参加した経緯と、実際に参加した感想を述べます。
Automatic Whitelist Generation for SQL Queries Using Web Application Tests
Webサービスでは、データベース上に保管された機密情報を保護することは重要です。 しかし、攻撃者はWebアプリケーションの脆弱性をはじめとして、様々な手段を用いて機密情報の窃取を試みます。 このような攻撃は、開発者の想定外のクエリ(不正クエリ)を発行することで実施されます。 そのため、不正クエリの発行を検知する仕組みが必要となります。
不正クエリへの対策として、Webアプリケーションが発行する正常なクエリを手動でホワイトリストに定義し、リストにないクエリを検知する方法があります。 しかし、大規模なWebアプリケーションでは、発行されるクエリ数が膨大となるため、全てのクエリをリストに定義することは難しくなります。 また、Webアプリケーションの改修によって発行クエリは変化するため、ホワイトリストは継続的に更新する必要があります。 このような運用者への負荷を低減するために、ホワイトリストを自動で作成する手法が2種類、提案されています。 1つ目は、Webサービスのユーザがサービスを利用する過程で発行されるクエリを用いてホワイトリストを作成します。 しかし、この手法はクエリを収集している間は検知を行えません。 2つ目は、WebアプリケーションのSQLを発行する処理の解析を行い、発行されるクエリのパターンを列挙しホワイトリストを作成します。 しかし、この手法は、Webサービスが複数の実装言語やフレームワークで構成されていた場合、それぞれのWebアプリケーションに対して手法を実装する必要があるため、実装の工数が多くなります。 これらの課題を解決するためには、Webアプリケーションが稼働する前に、Webアプリケーションの実装に依存せず、ホワイトリストを作成する必要があります。
そこで本論文では、Webアプリケーションのテスト実行中に発行されるクエリからホワイトリストを作成する手法を提案しています。 提案手法では、Webアプリケーション稼働前のテストの段階でホワイトリストを作成できるため、稼働後即座に不正クエリを検知できます。 また、データベースプロキシでテスト時の発行クエリを収集しホワイトリストを作成するため、Webアプリケーションの実装に依存せずホワイトリストを作成できます。
提案手法の検知精度を評価するために、実環境のクエリログを用いて実験を行いました。 実験から、提案手法では、正常なクエリを異常(False positive)、不正なクエリを正常(False negative)と判断する誤検知が発生することが分かりました。 False positiveは、テストケースの不足やテスト時のデータベースへのアクセス省略により発生することを確認しました。 False positiveへの対処としては、ホワイトリストによる検知を適用するテーブルを機密情報が保管されたテーブルに限定することが挙げられます。 適用するテーブルを限定することで、検知対象となるクエリ数を削減でき、結果的にFalse positiveを低減できると考えられます。 また、False negativeはテスト時のみ発行されるクエリによって発生することを確認しました。 テスト時のみ発行されるクエリには、機密情報の全件削除を行うようなクエリが含まれていました。 このクエリへの対処として、影響範囲が大きいクエリはブラックリストに予め定義しておき、ホワイトリストと併用することで多層的に検知できると考えられます。 今後は、これらの誤検知への対策を実施したときの評価に取り組んでいきます。
Proceeding
スライド
COMPSAC2019参加の経緯と参加した感想
今回のCOMPSAC2019は、ペパボ研究所に配属されて初めての国際学会への参加でした。 国際学会自体は大学院時代に一度ポスター発表で経験したことはありますが、やはり英語ができないことへの不安や英語論文の執筆をどう進めればいいかが分からないという不安があり、最初は投稿することさえ迷っていました。 しかし、ペパボ研究所のメンバーの方々の助言が後押しになり、そして何より、今やっている研究は僕がペパボ研究所に配属されてから新しく始め、ペパボ研究所のメンバーやIOT研究会の方々との議論を重ねて育ててきた研究なので、研究内容には自信を持って挑戦してみようと思いました。 その結果、投稿した論文は、残念ながらメインシンポジウムではなかったものの、併設のワークショップであるNETSAPに採択され発表することができました。
COMPSAC2019に参加するにあたって、英語で論文を書いて査読を通して、英語で発表や質疑をするという一連のプロセスは非常にいい経験となりました。 当日の発表では、セッション内で質問していただいた内容から、発表内容は正確に伝わったと感じました。 一方で、事前の発表練習の効果で発表時間はちょうど良かったのですが、重要なポイントを強調することが英語では上手くできていないという課題も残りました。 また、質疑では、異常系のテストで発行されるクエリに不正となるものが含まれることはないのかや、ブラックリストを併用して検知精度の向上させようとしているが、ブラックリストを自動で作成するアイディアはないかについて議論を行いました。 残念ながら僕の英語力では、質疑の時間に質問を解釈することができず上手く回答できなかったので、セッション終了後に質問いただいた方のところに行き、追加で議論をさせていただきました。 この経験から、英語ができないことで研究の議論が上手くできないというのは本末転倒なので、きちんと英語で議論できるようになりたいと思いました。
今回COMPSAC2019に参加して最も良かったことは、国際学会に参加することへの心理的なハードルを良い意味で下げることができたことだと思います。 英語への不安などがあり参加を迷っていたと述べたことからもわかるように、国際学会に参加することの心理的なハードルは高かったように思います。 しかし、実際にCOMPSAC2019で発表をしてみると、拙い英語であっても真摯に議論をしてくださったので、参加する前に感じていた不安は小さくなったように感じています。 また、英語が母国語でない方もたくさんいらっしゃって、そういう方も議論に積極的に参加している姿を見ました。 今回の英語での議論の経験や積極的に議論に参加している方々の姿から、僕もこの人達としっかり議論できるように英語の勉強をすることはもちろんですが、より研究領域の知識を深めていきたいと思いました。
【PR】パートナー積極採用中!
ペパボ研究所では、新しいパートナーを求めています。詳細については、当研究所のトップページをご覧ください。