SSTによる安全なWebサイト運営のためのセキュリティ情報

SSTのこと
  • shareSNSでシェア
  • Facebookでシェアする
  • Xでシェアする
  • Pocketに投稿する
  • はてなブックマークに投稿する

「CODE BLUE 2017」参加レポート(坂本編)

こんにちは、研究開発部の坂本です。

11月9日, 10日と CODE BLUE 2017 に参加してきました。

詳細な内容は各種メディア・ブログ等で公開されています。
こちらでは坂本の中で特に印象に残った講演の感想や、全体を通じて感じたことなどを共有します。

講演の感想

Step-Oriented Programming による任意コード実行の可能性, 坂井 弘亮(TRACK2)

https://codeblue.jp/2017/contents/speakers.html#speaker-sakai

アセンブラやマイコンの勉強で坂井氏の著作にお世話になり、また組み込みシステムやアセンブラの世界への憧れもあった坂本としては、大変面白く勉強になる講演でした。実際のデモを動かす場面で、コンソール上でgdbコマンドや16進数ダンプが流れる様子を見るとテンションが上がるのを感じました。

考え方としてはROP(Return-Oriented Programming)と近く、すでにメモリ上に展開された実行コードから、使いたいコードを継ぎ接ぎしていく点が似ていると感じました。

また、組み込み技術者がセキュリティを考えるとどうなるか、という視点に特に共感しました。坂本自身、もともとWeb開発をしていましたが、より良いコードを書くためにセキュリティを勉強し始めた経緯があります。開発者の視点からセキュリティにアプローチすることで、思いもよらない新しい発見ができることを気付かせてくれる講演でした。

HTTP/2 クライアントのパッシブ・フィンガープリンティング, オリーシガール(TRACK2)

https://codeblue.jp/2017/contents/speakers.html#speaker-segal

講演ではAkamaiでのトラフィックの10%がHTTP/2と発表されましたが、「すでに10%も使われている」のか、「まだ10%しか使われてない」のか、どちらと捉えるか難しいと感じました。

しかしながら、Burpやスキャンツール、また主要HTTP通信ライブラリがHTTP/2に未対応の今だからこそ、セキュリティ面はもとより普通の開発・運用においてもHTTP/2はフロンティアであり、挑戦する価値のあるフィールドだと感じました。近年はQUICやTLS1.3も動きつつあるため、プロトコルレベルでの調査・検証はますます面白くなりそうです。

商用ホワイトボックス暗号方式に対する鍵回復攻撃, アン・サンファン(TRACK1)

https://codeblue.jp/2017/contents/speakers.html#speaker-ahn

この講演で「ホワイトボックス暗号」(WBC : White-Box Cryptography) を初めて知りました。デスクトップPCやスマートフォン、モバイル端末上など、攻撃者がソフトウェアの中身やメモリの中身を自由に読み書き・制御できる状態で、セキュアな暗号を保つ方式のようです(間違ってたらすみません)。
例としては、端末に保存するデータを暗号化したい場合に、暗号に使う鍵をハードコードすると、実行バイナリをリバースエンジニアリングすることで鍵が攻撃者に渡ってしまう恐れがあります。これを防ぐため、鍵をさらに暗号化するわけですが、ではそのための鍵はどうする?というジレンマが発生します。この解決策として、鍵情報を暗号アルゴリズムの中に分散させて埋め込むことで、攻撃者から鍵を見えなくするとともに、アルゴリズム実装を複雑にしてリバースエンジニアリングへの耐性を上げます。これがホワイトボックス暗号と呼ばれる手法だと理解しました。

オープンソースで公開されていたり、学術的に研究されているホワイトボックス暗号については、アルゴリズムの中から鍵を抽出する(鍵回復)攻撃成功事例が多数あるそうです。こちらの講演では恐らく今まで成功事例が無かっただろうと思われる、商用のホワイトボックス暗号について鍵回復攻撃を成功させた事例を紹介していました。

アン・サンファン氏は「1時間でこれを理解するのは難しいと思います」と話していましたがその通りで、暗号理論の専門的な話が超高速で展開され、半分も理解できなかったと思います。

しかしながら、クライアントアプリケーション中に秘密情報を埋め込む際に、クライアントアプリケーションを完全に制御できる攻撃者から如何にそれを守るか、という防御策としてホワイトボックス暗号の存在と現状について知ることができたのは大変有益でした。

一見Webの世界とは無関係に思えますが、近年はJavaScriptを用いたブラウザ側の処理が非常に発展しており、そうした中でやはり同様の問題が出てきた場合に、ホワイトボックス暗号のアプローチが参考になるのではないかと感じました。例えばWebAssemblyやJavaScriptでこうしたWBCを実装してみるのも面白いかもしれません。

最後に、ホワイトボックス暗号では復号した秘密情報がメモリ上に展開されます。ここにもうひとつ、使い終わった秘密情報をメモリから消去する必要が生じます。これを忘れるとメモリ上に長期間、秘密情報が平文で残ることになり、メモリダンプの解析などにより攻撃者が見つけてしまう可能性が高まります。そこで同じく二日目の講演にあった Androsia を組み合わせれば、そうした問題にも対処できるのではないかと思いました。更に同じく二日目の講演、Trueeseeingにこれらの機能を統合するなど、可能性が感じられます。

国産IT資産管理ソフトウェアの(イン)セキュリティ, 西村 宗晃(TRACK1)

https://codeblue.jp/2017/contents/speakers.html#speaker-nishimura

リバースエンジニアリング(実行バイナリの逆解析)を行わず、保存されているファイルと通信内容から脆弱性を探していく様子が、ドキュメンタリーを観ているようで非常に刺激的な講演でした。

ただ、網羅的にセキュリティの品質をチェックする検査というよりは、リバースエンジニアリングを行わない範囲でのペネトレーションテストに近いと感じました。実際、検証で見つかっていない脆弱性も潜んでいる可能性について言及されていました。

個人的には、本来はネイティブアプリケーションに対する網羅的な検査、つまり脆弱性診断が必要であるにも関わらず、中々そうしたサービスが増えないことに昔から疑問を感じています。この点がクリアにならないと抜本的な解決策には到達できないのではないか、恐らく最大の問題は検査に必要な人的コストではないか、と思っています。これについて、マルウェア解析におけるコード解析技術を脆弱性検査に転用できないか、既存ツール・製品や研究を調べるのも面白いと感じました。

全体的な感想

ハードウェア / ネットワーク / 暗号技術 / Web / 法律 / 政治 / 軍事 と、非常に広範囲に渡るセキュリティ分野の情報・現状を広く、かつ深く触れることができた、大変有意義な二日間でした。個人的な印象として、海外ではハードウェアを使ったハック・セキュリティ研究が盛り上がっている印象を受けました。電子回路などのハード技術、暗号技術、Web技術、リバースエンジニアリング技術の4分野で素養を鍛えることで、エンジニアとしてさまざまな領域で活躍できる可能性を大いに感じることができました。

またいくつかの講演では、攻撃視点というよりは、開発の視点から合法的に入手できる / 使える製品や技術要素を組み合わせることでセキュリティ問題に突き当たるという印象を受けました。個人的にはそのような、「斜め下」の技術要素(平均的な開発者なら見向きもしないようなローレベルな技術)を組み合わせることでセキュリティ領域の問題解決、あるいは問題提起につながる研究に大きな魅力を感じます。複数分野のローレベル技術の組み合わせで新しいことをしたいですね。

来年・再来年には CODE BLUE に応募できるような研究 / 調査 / 開発成果を作っていきたいと奮起させられる二日間でした。しかし、1時間話すのはやはりそれなりのボリュームが必要なので、日々の研究開発を積み重ねていきたいと思います。

  • shareSNSでシェア
  • Facebookでシェアする
  • Xでシェアする
  • Pocketに投稿する
  • はてなブックマークに投稿する

この記事の筆者

筆者

坂本昌彦

SSTでWeb脆弱性診断用のツール(スキャンツール)開発をしています。
Twitter: https://twitter.com/msakamoto_sf
GitHub: https://github.com/msakamoto-sf/