COMPSAC2019で研究発表をしてきた

f:id:komei22:20190729175943j:plain

7/15日から5日間に渡って開催されたCOMPSAC2019@ミルウォーキーで研究発表をしてきました。 この発表は僕にとって最初の国際学会での口頭発表であり、学ぶことも多かったので、参加までやったことや参加しての感想を書き留めておこうと思います。

f:id:komei22:20190729180117j:plain

発表概要

発表内容に関しては以前投稿したエントリ第2回WSA研で「Webアプリケーションテストを用いたSQLクエリのホワイトリスト自動作成」について発表してきました - こーめいのメモ帳で書いた内容に実験を追加したり議論を再整理した内容となりますが、前回のエントリから変わっている部分も多いので、概要をまとめ直しておきます。

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はテスト時のみ発行されるクエリによって発生することを確認しました。 テスト時のみ発行されるクエリには、機密情報の全件削除を行うようなクエリが含まれていました。 このクエリへの対処として、影響範囲が大きいクエリはブラックリストに予め定義しておき、ホワイトリストと併用することで多層的に検知できると考えられます。

スライド

当日の発表

f:id:komei22:20190729182159j:plain
発表の様子

僕の発表は1日目の午後でまだ時差ボケが残っていましたが、かなり緊張していて直前まで発表資料や原稿を読み直していたりしたので全く眠くはなかったです。 実は発表直前に、接続チェックが上手くいかない、僕の前の発表者が来なくて発表順が繰り上がるなどのトラブルがありさらに目が覚めました。 また、発表中もミラーリング設定になっていて発表原稿が見れない!、マウスポインタがどっかに行って発表原稿がスクロールできない!などのトラブルがありましたが、なんとか発表を時間内に乗り切りることができました。発表練習たくさんしておいてよかった。 発表後にいただいた質問内容を見た感じ、発表の要点はしっかりと伝わっていて嬉しかったです。

一方で、質疑なのですが、僕の英語力は高くないので、質疑の時間で質問内容を解釈することができず的はずれな回答を返してしまったことが反省点です。 質問内容を曖昧な解釈のままにせずに、ちゃんと聞き返すことや「自分はここまで理解できました」、「質問の内容はこういうことでいいですか?」など相手とのコミュニケーションを取ることが重要だと思いました。 また、ネイティブの方の英語を聞き取るのが僕には難しかったので、英語のリスニング力を付ける必要があると感じました。

会場の様子

f:id:komei22:20190729182518j:plain
マーケット大学と僕

会場であるマーケット大学は緑がたくさんあってきれいなキャンパスでした。会場には常にコーヒーとクッキーが置かれていて、お昼になるとランチボックスが運ばれてきていました。 クッキーはホテルにチェックインしたときもカウンターで頂いたのですが、なにか特別な意味があったりするのかな?

セッションでは、様々な分野の発表が行われていたので、知見を広げたり、英語での発表や質疑のやり方に注力して参加しました。 また、一緒に参加した方とお話をして発表で聞き逃した内容の補足や議論をさせていただきました。 その議論の中で一番印象に残っているのが、Is a Smarter World a Better World? Key Questions at the Intersection of Technology, Intelligence, and EthicsというKeynoteで話された「Enhance decision-making capacity」という言葉です。 この言葉は日本語でいうと、「意思決定能力を強化する」という意味で、僕たちは技術を使ってこれを達成できているのか?という問いです。 この言葉を聞いて僕が一番に思い浮かべたのは最近読んだ推薦システムの論文でした。 その論文では課題感として、履歴などの行動の履歴をもとにした推薦は、ユーザに与える情報の領域を狭めていて(フィルターバブル)、ユーザに新しい発見や知識を与えることができないと述べられていました。 これはまさに「Enhance decision-making capacity」できていない例だと思い、すごく納得感がありました。 技術を使って自動化などが進んでいくと人間の操作が減り便利になっていく反面、人間側の意思決定の広がりが制限されてしまう場合も存在することが僕が新しく得た知見です。

おわりに

今回のCOMPSAC2019への参加によって、僕は国際学会への参加の心理的ハードルを下げることができたと思います。 僕の拙い英語であっても、真摯に発表を聞いて議論をしてくれることは大変ありがたかったです。 最後に、ミルウォーキー楽しかったです!

おまけ

国際学会のバンケットで行ったハーレーダビットソンミュージアムが楽しかったので僕が調子に乗ってる写真を載せておきます。 f:id:komei22:20190803105726j:plainf:id:komei22:20190803105734j:plainf:id:komei22:20190803105742j:plainf:id:komei22:20190803105756j:plain