CODE BLUE 2024参加レポート~前編~
目次
・はじめに
・CodeBlueとは?&今年の会場の雰囲気
・今年の講演の傾向と所感~新しいアタックサーフェイスが増えても変わらず粛々とやるべきこと~
・Piloting Edge Copilot /小勝 純
・PlayStation 5のネットワーク暗号化を突破する /Aapo Oksman
・オマケ:高田馬場の美味しいもの
はじめに
こんにちは。GMOイエラエの高度診断部クラウドセキュリティ課所属、診断員Aと申します。
先日の11/14(木)~11/15(金)の2日間にかけて、ベルサール高田馬場にて開催されたCODE BLUE 2024に現地参加して参りました。
本記事前編では、DAY1に聴講者として参加した際の会場の空気感、今年の講演の傾向、特に好きだった講演についていくつかピックアップしてその所感を記しております。今年会場に行きたかったのに行けなかった方、来年こそ参加したいなと考えていらっしゃる方々に、少しでも会場の雰囲気をお届けできましたら幸いです。
明日以降更新する後編の記事では、普段クラウド診断に従事する診断員として個人的に共感の嵐が止まらず聴講中生きた赤べこと化していた講演があったので、その講演について、普段のクラウド診断業務の中で見かけた事例なども交えつつレポートする予定です。(※予定です)
また、今回私がオフライン参加できたのは、サイバー犯罪対策センターの福森さんがCODE BLUE開催直前に参加チケットを譲ってくださったおかげでした。福森さん並びに、急にも関わらずイベント参加の許可をくださった上長にこの場をお借りして改めて御礼を申し上げます。貴重な機会をくださってありがとうございました!
CODE BLUEとは?&今年の会場の雰囲気
CODE BLUEは2013年から日本発で始まった、情報セキュリティに関する専門家たちが世界中から集まる国際的カンファレンスです。世界中のトップクラスの技術者たちの最先端の発表を通訳付きで聴講できる機会なので、Hardening Projectやサイバー犯罪に関する白浜シンポジウム、情報セキュリティワークショップ in 越後湯沢や、OWASP Japan の勉強会など、別のメジャーなセキュリティイベントでもお見掛けしたことがある気がする…というセキュリティに興味関心のある人々がたくさん参加しています。
以前はCODE BLUEに参加する度にセキュリティ同窓会のようだなと感じていたのですが、今年はカンファレンス期間中、昔からの知り合いをあまりお見かけしませんでした。私自身が年を取ったという話もありますが、セキュリティ業界の人材も少しづつ世代交代が進んでいるところなのかもしれません。セキュリティに興味を持つ仲間が新たにどんどん増えていくのは業界としても健全で、素晴らしいことだなと思います。
しばらくオンライン&オンラインとオフラインのハイブリッドで開催されていた名残か、オフラインの参加人数はCOVID-19流行前に比べると少し少ないような気がしつつ、メイン会場はほぼ常時座席が埋まっており、別会場(全部で3場ありました)でも立ち見で人が溢れかえっていた講演もあって大盛況でした。
このイベントの現地の運営はボランティアの学生スタッフの皆さまが主体となって受付や翻訳トランシーバーの貸し出しなどの実務を務めてくださっているのですが、毎回数百人単位の来場者をてきぱきと捌いてくださるので大変頼もしく、いつも有難いなと感謝しております。
少し余談ですが、私がCODE BLUEに初参加したのは開催3回目の2015年で、約10年前のことです。
その2015年から新設されたUnder25(25歳以下の若手研究者による発表)の講演カテゴリで、Stack Smashing Protection(エクスプロイトからの防御機構)のバイパス手法について16歳の高校生が発表しているのを聴き、学生とは思えぬ発表内容に舌を巻いた覚えがあったのですが、その時の高校生が今は同じ会社で働いており、それだけではなく会社の執行役員という立場になっていることに本記事を執筆中にふと思い当たりました。とても感慨深いのと同時に、時の流れのあまりの早さに慄いております。
CODE BLUEは開催目的として、最先端の講演や各国との交流の場を提供することに加え、次世代で活躍するセキュリティ人材の育成を掲げていますが、まさに現在進行形でその育成の結果を目の当たりにし、その恩恵をリアルに享受しております…もしかしたら今年のU25の発表者の中にも、早晩そう遠くない未来に、貴方の上司になっている方がいらっしゃるかもれませんね。
CODE BLUEは講演のほかにも、ハンズオンのトレーニング、CTFなど、コンテンツやワークショップが充実しています。また、CODE BLUEスポンサーの企業ブースを見て回るのもこのイベントでの楽しみの1つです。
かくいう私はCyCraft社さまのブースで、ずっと気になっていた「情報セキュリティ人生物語」というボードゲームを手に入れることができて大変満足しております。サイバー攻撃やインシデントに遭いながら、最終的にどれだけの資金を守り抜けるかで勝敗が決まるルールとのこと。これからたくさん遊んでみたいと思います。
そして、実は弊社もスポンサーとして企業ブースに出展し、スキミングのリスクを実感できるデモ体験の場を設けておりました。各講演の合間などにブースにお立ち寄りくださったみなさま、誠にありがとうございました!
今年の講演の傾向と所感
新しいアタックサーフェイスが増えても変わらず粛々とやるべきこと
さて、今年の初日の講演の傾向としては、中国で選挙を標的とした生成AIを利用した工作活動についての講演や、AI/LLM への攻撃、難読化マルウェアの解析にLLMを応用した新手法の提案、AIエージェントを活用したサイバー脅威インテリジェンスの生成、AIを活用した自動化とリスク・活用にあたってのルール作り…など、攻撃・守りの両方の側面での「AI」がキーワードになったセッションが多い印象でした。
基調講演でも、ARIA (英国高等研究発明局)でAIの安全基準について研究するDavid A. Dalrymple氏によって、Safeguarded AIに関する洞察や、サイバーセキュリティ分野におけるAIの安全性の最新見解、今後の展望について語られました。詳細は割愛しますが、一般的に考えられるAIのセキュリティと言うと、最近普及してきたGPTなどのLLMを使った対話型のアプリケーションに対して、質問を投げかけて本来開示されてはいけないような機密情報を引き出そうとするなどの敵対的プロンプトを用いた攻撃や、攻撃者が攻撃を効率化・自動化するために生成AIを悪用する…など、人が主体の攻撃が想起されますよね。
今回Dalrymple氏はそれに加えて、人間ではなくAIそれ自体が悪意も持ち人間に反旗を翻した際にどうやって人間をAIから守るかという、ターミネーターを彷彿とさせられるような観点でのAIセキュリティについて講演されており、現実がやっとSFに追い付きつつあるなぁと気持ちが高揚させられました。
ただ、今回初日の講演をいくつか拝聴したところ、AIを利用した攻撃手法やアタックサーフェイスは増えているものの、それ以前にそもそもの基本的な部分が対策されていなくて攻撃者の侵害を受ける例も結構あるよね、というお話もいくつかの講演で散見され、個人的にはその点がとても興味深かったです。
その講演の内容について2本、簡単に紹介したいと思います。
■Piloting Edge Copilot /小勝 純
小勝 純氏の「Piloting Edge Copilot」という講演では、まずはじめに、比較的セキュアに設計されているEdgeのセキュリティ実装について解説があり、次に小勝氏自身も年に10数件のXSSを報告していたというBingの脆弱性について触れたあと、この2つのシステムが統合された結果どんな脆弱性が見つかったのかについて発表がありました。小勝氏にはWebブラウザに物凄く詳しい方というイメージを持っていたのですが、イメージ通りの大変面白い内容でした。
Copilot
CatGPTのようなチャットインターフェース型のAIアプリケーションをCopilotと言いますが、その中でもMicrosoft EdgeのWebブラウザに搭載されているものをEdge Copilotと呼びます。色んな特殊なAPIがアクセスできるようになっていてブラウザで色んなことを便利にするための機能なので、Edgeブラウザで開いているページの要約をCopilotにさせる際などに、そのコンテンツ内容をCopilotに渡すためのAPIのアクセスなどがあります。構成としてはedge://discover-chatという Edgeスキームのブラウザ内部ページと、edgeservice.bing.comのiframeによって構成されていて、PostMessageでやり取りをしています。
権限のある特殊なAPIについてはEdgeのdiscover-chatというブラウザ内部ページからのみアクセスできるようになっていて、ユーザーが見るUI自体はiframe内のUIで構成されています。例えばiframeの中に実際のチャットのUIがあってチャット自体もあるのですが、そのUIでユーザーがWebページの要約をしてくださいなどと指示を出した場合は、そのようやく対象のコンテンツが欲しいのでPostMessageで権限のあるedge://discover-chatが、そのためのAPIを呼んでWebページのコンテンツを引っ張ってくるというやり取りをします。
edge://discover-chatとedgeservice.bing.com
edge://discover-chatはEdgeスキームのページの総称でWebUIと呼ばれていてかなり高権限を持つブラウザの内部ページです。すべてのWebUIで、カメラとマイクへのアクセスがデフォルトでできるように設定されています。また、それとは別に、このページ独自の権限が色々とあり、Chrome拡張用のさまざまなAPIにアクセスできるようになっています。edgeservice.bing.comはedge://discover-chatの中のiframeで、Strict CSPというnonceベースとstrict-dynamicで構成されているCSPが設定されています。
Edgeについては、以下の理由からかなりセキュアに設計されているということが紹介されていました。
・強力なTrusted Typesの設定
edge://discover-chatと、edgeservice.bing.comの両方にCSP(Content-Security-Policy)とtrusted-types 'none‘が設定されていて、XSSはできないようにされていました。Trusted TypesはWebプラットフォームのセキュリティ機能であり、通常は文字列をHTMLや、スクリプトに変換しようとする時に利用します。createPolicyというメソッドを用いて、文字列をHTMLに変換するルールを設定できるため、サニタイズやバリデーションを行うことが可能です。しかし、trusted-types 'none'が設定されている場合は、そもそも文字列をHTMLに変えない&変換作業自体を拒否するという意図となるため、安全なAPIしか使えないようになっていてDOMベースのXSSが実質的に不可能な状態になっています。
・CSP Embedded Enforcementの利用
CSP Embedded Enforcementとは、iframeで読み込むページに対して、最低限設定すべきCSPを強制できる機能です。これがすべてのiframeに強制されているため、普通のサイトからはほぼ攻撃経路が見つかりません。edge://discover-chat自体が普通のサイトからは開けられない内部ページなので、そもそも新しいタブで開いてPostMessegeで攻撃することなども不可能です。
・ダブルキーキャッシュの存在
最近はChromiumにダブルキーキャッシュというものがあり、edgeservice.bing.comのサービスを普通のタブで開いてそこでXSSがあった場合でも、キャッシュが共有されないようになっています。この仕組みにおいては、edgeservice.bing.comのiframeがこのWebUIの中にある場合、トップレベルでのページとリソースのページで2つのキーがあり、普通のタブにレンダリングされたときとはキーが異なると判定されるため、キャッシュ経由での攻撃はできません。
そこで小勝氏は代わりにwww.bing.comの脆弱性を探すことにしたそうですが、その結果、以下の問題点が見つかったとのこと。
・AIチャット機能におけるXSS
昔はBingの中のwww.bing.com/chat というところにBingのChat Copilotがあり、そこでチャットができるという設定になっていました。そこにはPostMessegeを受け取るリスナーがいて、受け取ったメッセージ(以下のコードにおけるO)のデータをiframeのURLにアサインするという実装になっており、javascriptURLをPostMessegeしてみるとXSSができてしまうことが分かりました。
handleLoadFullScreenIframeEvent(O) { var B; this.config.features.enableFullScreenIframe && (this.fullScreenIframeUrl = O.url, null === (B = this.fullScreenIframeDialogRef) || void 0 === B || B.showModal()); }
・Chrome拡張APIの悪用
また、Bingからなにができるかを検証した際に、実はBingからChromeの拡張用の特殊なAPIに直接アクセスできるような設計になっていることが分かりました。そのAPIの中でもchrome.edgeSplitTabsPrivateは、1個のタブに2つのサイトを表示する機能であり、このAPIのOpenURLというメソッドを用いると、ポップアップブロッカーのバイパスができてしまうそうです。
具体的には、SplitTabsで開いた後にSplitTabsモードをクローズすると、同じタブで開いていたものが新しいタブで開かれるので、BingのXSSにあたりポップアップブロッカーがバイパスできるようになっていたとのこと。凄くさらっと紹介されていたので流しそうになりましたが、「良くその活用方法を思いつけたな???」と脱帽しました。
もう1つのAPIのchrome.edgeMarketingPagePrivateは、マーケティング関連のAPIで、このAPIのSendNtpQuery(NtpはNew tab pageの略)メソッドを使うと、任意のプロンプトをCopilotに送ることが可能になっていたそうです。
ここまでの問題点を組み合わせると、以下のようになり、「任意のサイトのコンテンツが盗めそう!」となります。
- BingにXSSがある
- Bingから新しいタブも開くことができる
- 新しいタブを開いた後にEdgeのCopilotになんでも聞くことができる
- EdgeのCopilot自体は、新しく開いたタブのデータにアクセスできる設計になっている
Copilotにページのコンテンツを要約してくれという指示を出すとチャットの履歴がBingと共有されるので、その後に、Bing上のXSSを使って履歴を読みに行くということができないかという仮説を立てて検証されたそうです。
講演内でデモ動画を見せていただきましたが、Copilotのプライバシー機能をバイパスするという工夫が少し必要だったものの、iframeでXSSを使ってポップアップブロッカーをバイパスし、もう1つのchrome.edgeMarketingPagePrivateというAPIを使って任意のプロンプトを送ることでこの中のコンテンツがBingにシェアされるため、攻撃者のページにアクセスすると、どのページのコンテンツでもユーザーの関与無しに読み取りできていました。
また、もう1つ、Copilotの新機能で見つかった脆弱性についての解説がありました。
ある日小勝氏がEdgeを使っていたら、開いているWebページのドキュメントのタイトルがCopilot内に挿入されて表示されているという不思議現象が起きたとのこと。これは開いているWebページのことについてChatしたいか、サイトのことについて聞きたいかをセレクトボタンで表示してくれるCopilotの新機能で、Webページの場合はそのドキュメントタイトルが表示される仕様になっていたとのことでした。
ドキュメントのタイトルについてはその変更有無をEdge側がBingのiframeにPostMessegeで伝える仕組みになっているのですが、その際Bingのiframe側がHTMLとして代入してしまうようになっていました。Trusted Typesの設定はあったものの、該当箇所の実装のコードは何故かサニタイズをしないといけない場所でサニタイズを全くせずに、文字列をそのままHTMLとして返していたのでインジェクションできたそうです。ただこの時点ではXSSではなくHTMLインジェクションであり、scriptCSPが原因でスクリプトの実行までには至っていませんでした。
これで何かできないかとソースを眺めていたところ、Allow属性でマイクやカメラがBingのiframeに付与されていることに気付いたそう。これはPermission DelegationというiframeのAllow属性を使ってトップフレームにある権限を別のサイトに付与できる機能です。EdgeのWebUIはユーザーの確認なしにマイクやカメラに常時アクセスできる状態になっています。HTMLインジェクションでiframeもインジェクションできるので、「iframeにAllow属性を付けたフレームをインジェクトしたら、カメラやマイクの権限を攻撃者のサイトに渡せるのでは?」と仮説を立てました。
ただ実現にあたっては、CSPのframe-srcがあったので攻撃者のサイトを埋め込むということができないという問題がありました。どのiframeを入れてもframe-srcで許可されているサイトしか埋め込めないことに加え、そのサイトのすべてがCSPを実装していたのでXSSがあってもスクリプトが実行できない状態でした。iframe自体は埋め込めるものの、許可されているサイトしかでスクリプトが実行できないのでカメラのAPIを呼べない状態です。この制約下で、BingのサイトのXSSは既に可能で、Bingのエンドポイントもいくつか許可されていたことから考えられた攻撃が以下です。カメラのハックのデモを見せていただきましたが、一瞬の出来事でした。
- まず、タイトルにHTMLを設定します。
- HTMLインジェクションを使って、Allow属性がついたiframeのbing.comの許可されているエンドポイントと、リンクをインジェクトします。
- その後ユーザーがリンクをクリックすると、新しいページが開き、ターゲットを設定すると、オープナー経由でEdgeCopilotに入っているiframeが参照できるようになります。
- 攻撃者のページでbing.comを埋め込んで、XSSを発火させます。そうすると、edgeservice.bing.comの方はCSPで制限されていますが、www.bing.comの方は制限がないのでwww.bing.comで発火します。
- そのXSS経由でオープナーを開いてオープナーの中のBingのiframeの中にスクリプト経由でアクセスすると、CSPはブロックされているものの既にスクリプトの実行はできているので、カメラやマイクのAPIをフレームの中で呼び出します。
安全なシステムと安全ではないシステムを統合すると理論上はうまくは行くかもしれないものの、システム統合の間にもどんどん新機能が追加されていくので、何か2つのシステムを統合するときには両方セキュアでないと結局セキュリティの担保はできないというお話と、AI独自のリスクも重要なものの基本的なセキュリティの緩和策というのもかなり重要で、そもそもXSSが既にアプリケーションにあった場合は何の情報でも窃取できるので特にAIの機能を使うまでもない…というお話には虚をつかれると共に、深く共感しました。
■PlayStation 5のネットワーク暗号化を突破する /Aapo Oksman
もう1つ、Aapo Oksman氏の講演「PlayStation 5のネットワーク暗号化を突破する」では、SONYが全PlayStationコンソールに対して全世界で去年8月に強制アップデートを実施したことでも話題になっていたPlayStation5の暗号化に関する脆弱性について発表されていましたが、これはPS4とPS5のlibhttpライブラリがTLS接続時にCA=true のbasicConstraintをチェックしていないという、証明書の基本的な検証が行われていないことに起因するものでした。
Oksman氏は昔からDEFCONの過去の発表のアーカイブを見るのが好きで、11年前にMoxie Marlinspike氏がSSL/TLSへの攻撃手法について発表した動画を見たことをきっかけに、「certmitm」というTLS接続の証明書検証の脆弱性を自動でチェックするためのツールを開発したそうです。このツールには10~20年前に発見された脆弱性についても検出することができるそうですが、バグバウンティで試したところ、Android、iOS、Windows、Mac、IoT上のアプリケーションにおいて200を超える脆弱性を発見し、20万ドル以上のバグ報奨金を得たとのこと。このバグバウンティ時に見つかった脆弱性のほとんどは、開発者が証明書の検証の無効にしているか、TLSライブラリのAPIを誤使用しているという実装上の問題が原因だったとのことでした。
今回の講演のメインテーマのPlayStation5の脆弱性については、去年のDEFCON開催1週間前にDEFCON用のデモ動画撮影のために友人からPlayStation5を借りてcertmitmを試行していた時に見つけたそうです。一部SONYの証明書でないと受付されないものもあったものの、基本的な証明書の検証が正常に行われていなかったためPS4、PS5の両方で通信が復号可能であり、パスワードやアカウントトークンなどの機微情報、ゲームデータ、OSのデータ情報が解読でき、アカウントの乗っ取り、チート行為、リモートでのjailbreakが可能だということが分かったそうです。その後HackeroneのPlayStation部門のバグバウンティで報告した結果、HackerOneの報奨金クラスの中でも最高額の5万ドルを獲得したとのこと。
つい、その報奨金の金額に目を奪われてしまいますが、10年、20年以上前から発見されていて疾うの昔に枯れているはずの脆弱性が最近まで塞がれずに生き残り続けていたこと、またその数の多さに驚かされました。
全体を通しての所感として、確かに昨今新たに普及しつつあるAI/LLMを活用した新しい攻撃手法や、新たなアタックサーフェイスに備えたり、新たな緩和策を検討したりすることは重要ですが、引き続き既知の脆弱性やサービス設計に起因した脆弱性についてもその重要度が下がる訳ではないので変わらず粛々と対策していくことに変わりはないな、と改めて気が引き締められました。
オマケ:高田馬場の美味しいもの
各講演の合間にお昼休憩ということで90分ほど空き時間があったので、インド大使館の斜め前辺りにあるスリランカ料理Apsara(アプサラ)さんのバナナの葉包みのスリランカカレーをランチで頂いて参りました。
高田馬場の駅周辺は多国籍で色んな国の美味しいお店があって良いですよね。休憩時間が11時半からだったのでランチ時で混み始める前に無事店内に滑り込むことができました。
折りたたまれたバナナの葉の中に約40種類ほどのスパイスを使った大変手の込んだチキンカレーとパパダン(ひよこ豆の揚げ物)が入っていて、こちらをバスマティライスと混ぜ混ぜしてから頂きます。
少しボリューミーでしたが、ほんのり甘いバナナやココナッツの香りと、大変食欲がそそられるスパイスの香りに釣られてペロリと完食しました。
ところで、美味しいカレーといえば、那覇市のヤマナカリー別邸さんのスパイスチキンカレーも本当に美味しくて、沖縄に帰る度に立ち寄っております。
ただ、チキンカレーは本当に絶品ですぐに売り切れてしまうので午前中早めに行くのが吉です。もしHardeningなど沖縄でのイベントに参加の機会がございましたら、ぜひ寄ってみてくださいませ。
後編の記事が無事書きあがりましたら、お手すきの際にそちらも読んでみていただけると大変嬉しいです…!