Extracting Database Access-Control Policies From Web Applications
本論文では、Ruby on Railsウェブアプリケーションからアクセス制御ポリシーを自動的に抽出および要約するためにコンコリック実行を利用するツールであるOteを紹介し、暗黙的かつアドホックなセキュリティ実装の誤りやすい性質に対処し、ポリシーエラーの検出を可能にするものである。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
デジタルジャングルの秘密の地図
インターネットを、あらゆるウェブサイトが部屋やファイル、そして秘密を詰め込んだ建物である、巨大で賑やかな都市だと想像してみてください。この都市において、データベースは、成績やプライベートなメッセージ、医療記録といった重要なデータが保管されている巨大な金庫です。これらの金庫を守るために、すべての建物には、誰がどの部屋に入ることができ、何を見ることが許されているかを決定するセキュリティガード(アクセス制御ポリシー)が必要です。
通常、これらのセキュリティガードは人間の開発者によって書かれます。彼らは建物の設計図(コード)の中に、ルールを乱雑に、あちこちに隠してしまいます。あるドアには「立ち入り禁止」の看板を置き、ある窓には「関係者以外」のメモを貼り、廊下の壁には複雑な謎解きを設置するかもしれません。これは**暗黙的なポリシー(implicit policy)**と呼ばれます。問題は、これらの散らばった手がかりは見落としやすく、間違いやすく、他の人が理解することもほぼ不可能だということです。もし開発者がチームを離れてしまったら、誰も正確なルールを知ることができなくなります。それは、ルールブックを一度も見ることなく、ただ人々がゲームをプレイしている様子を見るだけで、そのゲームのルールを理解しようとするようなものです。この論文は、その隠されたルールブックを見つけ出し、整理し、コンピュータが実際に何をすることを許可されているのかを全員が明確に把握できるように書き出すという、困難な仕事に取り組んでいます。
コードの心を読み取る探偵ボット
ここで、これらの隠されたセキュリティルールの謎を解くために設計された、新しいデジタル探偵、Oteが登場します。Oteの開発者であるUCバークレーとNYUの研究チームは、古いウェブアプリケーションの乱雑なコードを読んでルールを探そうとすることは、目隠しをしたまま干し草の中から針を探すようなものだと気づきました。Oteは、コードを一行ずつ読む代わりに、**「ゲームをプレイする」**ことに決めました。
Oteは、**コンコリック実行(concolic execution)**と呼ばれる手法を使用します。これは、単にゲームを一度プレイするだけでなく、あらゆる入力の組み合わせを試すために、何百万回もゲームをプレイするスーパーパワーを持ったビデオゲームボットのようなものです。それは、建物の中を歩き回り、あらゆるドアを試し、あらゆる窓をチェックし、特定のボタンを押したときに何が起こるかを正確にメモしていく探偵のようなものです。もしボットがボタンAを押して秘密のファイルが開いたら、「ボタンAを押すとファイルBが開く」と書き留めます。もしボタンAを押しても何も起きなければ、それもメモします。
しかし、ここからが厄介なところです。実際のウェブサイトは巨大です。もしOteがあらゆるパスをチェックしようとすれば、永遠に時間がかかるでしょう。数年かかるかもしれません!これを解決するために、チームはこれらのウェブサイトの仕組みについて興味深いことに気づきました。実際にデータを取得するかどうかを決定しているコードの部分は、通常、「もし〜ならば、〜する」という短いリストのような、非常にシンプルなものであることが分かりました。残りのコードは、単なる派手な装飾(ページを綺麗に見せるためのものなど)に過ぎません。そこで、Oteは装飾を無視し、単純なロジックだけに集中することにしました。
さらに優れたことに、Oteには、関連性を判断する「判定役」として機能するスマートアシスタント(AI言語モデル)が備わっています。ボットがコード内の奇妙な分岐に遭遇したとき、アシスタントは「これはセキュリティに関係しますか?」と問いかけます。もしその分岐がフォントの色を変えたり、「非公式」というラベルを表示したりすることに関するものであれば、アシスタントは「それは無視してください!」と答えます。これにより、Oteは行き止まりに時間を浪費することなくなり、数日かかるはずのタスクをわずか数時間に短縮することができます。
Oteが見つけたもの: 「アハ体験」の瞬間
チームは、diaspora(ソーシャルネットワーク)、Autolab(学校の課題用ツール)、The Odin Project(コーディングスクール)という3つの実世界のアプリケーションでOteをテストしました。彼らは単にOteが機能するかどうかを見たかったのではなく、人間が見落としていた間違いを見つけられるかどうかを確認したかったのです。
結果は驚くべきものでした。チームがOteによって抽出されたルールを、数年前に手書きで作成したルールと比較したところ、Oteはいくつかの**不具合(グリッチ)**を発見しました。
- 過剰に寛容なガード: Autolabシステムにおいて、人間が書いたルールは、本来「無効化」されているはずのコースの機密データに対して、「コース・アシスタント」がアクセスできてしまうミスがありました。本来、そのデータを見ることができるのはインストラクターだけであるべきでした。Oteはこの漏洩を即座に特定しました。
- 失われた鍵: diasporaソーシャルネットワークでは、人間が書いたルールは、アプリの動作に実際に必要となる特定の通知やプロフィールの詳細へのアクセスを許可することを忘れていました。もし古いルールを強制していたら、アプリは実際のユーザーにとって壊れた状態になっていたでしょう。
- 静かなバグ: 最もエキサイティングな発見は、Autolabのコード自体にあった微妙なバグでした。数年前、ある開発者がセキュリティチェックを設定する際に、誤ってカラム名を打ち間違えてしまいました。コード上は学生が試験を見ることを許可しているように見えましたが、タイポ(打ち間違い)のせいで、そのチェックは実質的に何も行っていませんでした。Oteが抽出したポリシーは、チェックが全く行われていないことを示しており、これによってチームはタイポを見つけ出し、修正することができました。
結論: ルールブックを書くためのより良い方法
Oteは、完璧なセキュリティを保証する魔法の杖ではありません。非常に稀なパスを見逃したり、単純なルールに従わない極めて複雑なコードに苦戦したりする可能性があることを認めています。しかし、実験の結果、実世界のアプリケーションにおいて、Oteは非常に有用であることが示されました。Oteは、SQLと呼ばれる言語で書かれた、明確で読みやすいセキュリティルールのリストを5時間足らずで抽出できます。
この論文は、Oтеを使うことは、決して疲れることのない「第二の目」を持つようなものだと示唆しています。それは、開発者が自分のコードが「どうなっていると考えているか」ではなく、「実際に何をしているか」を理解する助けとなります。乱雑で隠されたロジックを、クリーンで明示的なルールブックへと変えることで、Oteはチームがセキュリティホールが惨事になる前にキャッチすることを可能にします。それは人間の開発者に取って代わるものではなく、デジタルの金庫がしっかりとロックされていることを確認するための強力なツールを提供するのです。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。