ベルギーのeID認証システムに欠陥、市民アカウントがRCEの標的に

ベルギーの国民IDカードシステムの中核を担うブラウザ拡張機能が、まるでスイスチーズのように穴だらけの状態で構築されていたことが分かりました。ある研究者の警告によれば、この欠陥を悪用すればハッカーは被害者の身元情報や決済情報を盗み出せるだけでなく、被害者のパソコン上でコード実行を行うことすら可能だったといいます。

この「Connective」署名拡張機能は、ベルギー国民が電子IDカード(eID)を使ってオンラインで政府サービスや銀行サービスに認証を行うためのものです。開発元であるNitro Software Belgiumは2021年、同社の拡張機能がベルギー国内の60を超える政府機関・部局、国内大手銀行10行のうち8行、さらに1,000を超える企業で利用されていると胸を張っていました。Chromeウェブストアのページによれば、現在の個人ユーザー数は200万人を超えています。

とはいえ、その人気に惑わされてはいけません。ユーザーレビューを見る限り、動作は決して褒められたものではないようです。Chromeウェブストアでの現在の平均評価は5点満点中1.7点で、542件のレビューでは「史上最悪の拡張機能」と評され、「こんなクソを作っている担当者は今すぐクビにすべきだ」といった声まで寄せられています。しかし、これらのレビュアーたちも、事の深刻さの半分すら把握していなかったと言えるでしょう。

先週開催されたDEF CON 34で、Bay Area Labsの創業者James Arnott氏は、Connective署名システムに存在する重大な脆弱性を公表しました。これらの脆弱性が悪用されれば、ハッカーは比較的容易にベルギー国民の身元情報を盗み、決済カードを乗っ取り、さらには被害者のコンピューター上でリモートコード実行(RCE)を行うことも可能だったといいます。この問題は7月22日に修正されるまで放置されていました。

Nitro社はDark Readingのコメント要請に対し、即座には返答しませんでした。

ベルギーのeIDログインの仕組み

あなたがベルギー人で、政府ポータルや銀行ポータルにログインしたいとします。オンラインでの安全性を確保するため、脆弱なユーザー名とパスワードや悪用されやすい多要素認証(MFA)フローを求める代わりに、そのウェブサイトはeIDを使ったログインを求めてくる場合があります。

ベルギーのeIDでログインする手順は、少々手間がかかります。必要なのは以下の4つです。

  • eID情報がエンコードされた物理的なスマートカード

  • カードを挿入する物理的なカードリーダー(USB経由でパソコンに接続)

  • パソコンにインストールされたネイティブホストソフトウェア

  • eIDアプリと閲覧中のウェブページを橋渡しするブラウザ拡張機能(標準的なブラウザのサンドボックス機能により、これがなければ両者は通信できません)

この4つが揃っていれば、カードリーダーにカードを挿入し、ポップアップウィンドウでPINコードを入力するだけで、最も機密性の高いアカウントにログインできます。この仕組みは本来、物理的なIDカードを所持している本人だけが機密性の高いオンラインアカウントにログインできることを保証するものです。しかし、Arnott氏とその同僚たちが発見したのは、この一連の流れの後半部分——ブラウザ拡張機能とホストソフトウェア——が、その前提を複数の点で崩してしまっていたという事実でした。

Connective署名拡張機能の脆弱性

研究者たちが最初に発見した問題は、Connectiveのブラウザ拡張機能が、自身がどのウェブサイトに接続しているかをネイティブホストソフトウェアに伝えていなかった点です。その代わりに、ユーザーが正規の信頼できるサイトとやり取りしていることを確認する手段として、汎用的な「アクティベーション」トークンを使用していました。

研究者たちは、Connectiveと連携する他のサイト——実験ではベルギーのデジタル行政プラットフォームを使用——からこのトークンを一つ入手するだけで、それを容易に再利用できることを突き止めました。このトークンはConnectiveアプリケーションロジック上のあらゆる操作を可能にするため、研究者たちは悪意あるウェブサイトを立ち上げ、他サイトのアクティベーショントークンを拝借することで、被害者のeID認証システムと完全にやり取りできてしまいました。ここから、より悪意ある攻撃者であれば、被害者のIDカードデータやそれに紐づく個人識別情報(PII)を盗み出したり、Mastercard Maestroブランドの決済カードに対して同様の攻撃を行ったりすることも可能だったとみられます。

被害者のPINコードを盗み出すことも、同様にたやすいものでした。PINコードは受信側のウェブサイトへ送られる際に暗号化されていたものの、復号鍵も一緒に送られていたため、容易に読み取り可能な状態になっていました。さらに指摘すべきは、このPINコード入力用のポップアップボックスに表示されるテキストが、Connectiveのソフトウェアではなくウェブページ側によって定義されていた点です。つまり、正規のベルギーのサービスを装う偽サイトであれば、ブランドの成りすましをポップアップウィンドウ内にまで拡張できてしまう構造でした。

攻撃者は、Connectiveのこうした情報漏えいと破綻した信頼ロジックを組み合わせることで、被害者の身元を壊滅的な形で乗っ取ることが可能でした。例えば、攻撃者が被害者の銀行口座にアクセスしたいとします。まずeIDログインフローを開始し、銀行サイトからチャレンジを受け取ります。それを、全く無関係な別のウェブサイト上のiframeや悪意ある広告を通じて被害者に渡し、被害者の有効なeID署名を取得したうえで、それを銀行サイトに返送すればよいのです。

より巧妙で持続的な攻撃シナリオとしては、物理的なカードリーダーの代替として広く普及している「itsme」を利用するケースが考えられます。これはベルギー国民がスマートフォンを使って機密性の高いアカウントにログインできるサービスです。被害者のeID署名を一度盗むだけで、攻撃者は被害者のitsmeアカウントをリセットし、自分自身の電話番号で再登録することができ、それによって被害者に紐づく政府・銀行・商業アカウントのほぼすべてに継続的にアクセスできる状態になってしまうのです。

ブラウザ拡張機能は本質的に危険

ブラウザ拡張機能は、その性質上そもそも安全ではありません」と、Reboraのセキュリティ研究者Gal Weizman氏は指摘します。「拡張機能はブラウザから付与された強力な権限を利用しており、通常のウェブサイトに対してそれらとやり取りする手段を追加します。この二つの組み合わせにより、ウェブサイト側がこうしたやり取りの層を悪用し、その権限を利用してホストやブラウザを攻撃するために権限昇格を行うことが可能になってしまいます」

Weizman氏は自身の研究の中で、拡張機能に起因するクロスページ型のエクスプロイトが「憂慮すべき数」に上っていると述べています。「これはRCEよりもさらに深刻な場合すらあります。被害者のブラウザ内で認証済みのセッションをすべて侵害できてしまうからです。攻撃経路は大抵同じで、ページ自体から送られてくるメッセージを適切にフィルタリングできていないコンテンツスクリプトのメッセージリスナーが原因です。これにより、悪意あるウェブサイトが拡張機能に指示を出し、被害者に代わってクロスサイトの操作を実行させることが可能になります」

こうした種類のエクスプロイトを防ぐには、「拡張機能は、ウェブページ自体が自社の所有するものでない限り、そのウェブページから送られてくるメッセージを一切信頼しないようコンテンツスクリプトを設計すべきです」と同氏は語ります。

幸い、こうした欠陥だらけのブラウザ拡張機能に頼らざるを得ない組織にとっても、手間はかかるものの実践的な回避策があります。「拡張機能の設定画面から、ユーザーが利用したいサイトをホワイトリストに登録することで、他の全サイトでの拡張機能の動作を防ぐことが可能です」とArnott氏はDark Readingに語っています。「ユーザー体験(UX)としては悪くなるため、実践している人は多くありませんが、これによって攻撃対象領域を縮小できます」

おまけ:完全なRCEエクスプロイトチェーン

身元情報の窃取だけでも十分深刻ですが、Bay Area Labsの研究者たちはさらに、ネイティブホストアプリケーションにRCEの脆弱性を発見しました。判明したところによれば、任意のウェブページがこのプログラムに対し、ホストマシン上の任意の動的リンクライブラリ(DLL)ファイルを読み込ませるよう指示できてしまう状態だったのです。つまり、ハッカーが被害者に悪意あるDLLをダウンロードさせることができれば——例えば、リンクをクリックさせるだけでファイルが自動的にパソコンにダウンロードされるようなフィッシング手口を使えば——このプログラムは疑うことなくそのDLLを読み込み、実行してしまうことになります。

このRCE攻撃は、被害者がログインページの近くにすらいなくても成立するものでした。Arnott氏は、これを自身の発見の中で最も影響が大きいものだと位置づけつつも、この開発元に限った話ではないと指摘しています。

「このようなドライブバイ型のRCEを許してしまう拡張機能は、他にも数多く存在します」と同氏は、自身が最近発見したという現存のゼロデイに言及しながら語ります。「決して小規模な開発元に限った話ではありません。軍、司法機関、銀行、病院など、あらゆる組織が現在この種の脆弱性にさらされています。実際、これは氷山の一角に過ぎないのです」

翻訳元: https://www.darkreading.com/application-security/belgium-eid-authentication-citizen-accounts-rce

ソース: darkreading.com