Webブラウザと拡張機能を組み合わせることで利便性が増す一方で、セキュリティホールを生む原因にもなり得る。
ウィスコンシン大学マディソン校の研究チームが2023年8月30日に発表した論文によれば、Amazon.comやgmail.comが入力されたパスワードを一時的に保持する方法に欠陥があり、あるWebブラウザの拡張機能を使うと、第三者がパスワードを読み取れる可能性があるという。これは現実的な危険なのだろうか。
結論から言えば現実的な危険だ。理由は2つある。理由の一つはトラフィックの多いWebサイトの一部にセキュリティ設計が甘いものがあること。もう一つの理由は、悪意のある拡張機能をWebブラウザの公式サイトが簡単に受け入れてしまうことだ。
この2つが合わさると何が起きるだろうか。ユーザーがWebサイトを訪れて、パスワードやクレジットカード番号を入力すると拡張機能がその情報を取得し、正当な権限として犯罪者の手に渡ってしまう恐れがある。研究チームが試したのは「Google Chrome」と「Chrome Web Store」の組み合わせだ。
第一の理由をもう少し詳しく言うと、Webサイトでパスワードを入力したとき、入力フィールド内に暗号化されていない平文のパスワードが入ってしまう。第二の理由はWebブラウザの権限モデルの設計が良くないことで生じる。セキュアなアプリケーションを開発する際には幾つかの原則がある。だが、Google Chromeは「最小権限」と「完全な仲介」という原則に違反していた。完全な仲介とは拡張機能とWebページの間にセキュリティ境界を設けることを意味する。
Google Chromeの欠陥が単に「理論上の可能性がある」というものなのか、ユーザーに「実害が生じる」というものなのかを調べるために、研究チームは実際に動作する「危険な」拡張機能を設計した。
この拡張機能には静的なコードインジェクション攻撃と動的なコードインジェクション攻撃のコードが含まれている。Webストアにこの拡張機能を登録したところ、審査を通過して実際に機能したことが分かった。悪意のあるコードが含まれておらず、拡張機能がアクセス可能な情報の種類にも違反していなかったためだ(機能確認後、即座に削除された)。
本当に危険なのか 研究チームが多数のWebサイトを検証
研究チームはWebサイトやドメインのランキング、統計情報を提供するTranco(tranco-list.eu)のリストから上位1万サイトを抜き出した。ログインパスワードを平文で表示していないかどうかを調べるためだ。
自動処理でログインページを特定した結果、8410のWebサイトが調査対象となった。このうち1100のWebサイトにパスワードを平文で表示する脆弱(ぜいじゃく)性があった。
続いて研究チームはログインパスワード以外の情報が漏えいする可能性のある幾つかのケーススタディを調べた。
まずは社会保障番号(SSN)だ。SSNは身元確認の他、収入の追跡や信用調査のために米国で個人に割り当てられている一意の識別子だ。日本でいうマイナンバーに当たるものだ。
SSNへ不正アクセスがあったり、漏えいしたりすると、不正なローンの被害に遭ったり、誤って犯罪の容疑がかかったりする可能性がある。米国司法省によると、毎年数百万人の米国人がID窃盗の被害に遭い、多額の金銭的損失を被っているという。
金融機関は確定申告や信用調査などのさまざまな取引のために、ユーザーにSSNの入力を要求する。つまりSSNの入力フィールドのセキュリティが甘いと多大な被害をもたらす。
研究チームはSSNを保護しているWebサイトとそうでないWebサイトを見つけ出した。
SSN入力フィールドを保護しているWebサイトの例は、チェース銀行やウェルズファーゴ銀行、バンクオブアメリカを含む幾つかの金融機関だった。SSNフィールドに入力された値を保護するために、JavaScriptベースの難読化などを使用していた。ユーザーがSSNを入力すると、入力フィールドには実際のSSNの代わりに難読化された文字(アスタリスクやドットなど)が表示される。Webブラウザの拡張機能からは難読化後の文字だけが見えるため、悪意のある拡張機能からある程度保護できる。
なぜ「ある程度」なのか。それは要素置換攻撃が使えるからだ。難読化されたSSNを含むHTML要素を置換することで、セキュリティ対策を回避し、ユーザーが入力した情報に拡張機能がアクセスできてしまう。
一方、米内国歳入庁(IRS)や大手金融機関のCapital One、USENIXセキュリティのようなWebサイトには、保護が実装されていなかった。SSNが拡張機能からは平文として見える。悪意のある拡張機能をユーザーがインストールしていた場合、ひとたまりもない。
日本の読者にとってはSSNよりもクレジットカード番号の保護の方が気に掛かるだろう。クレジットカード情報は二要素認証のような追加の認証なく使用されることが多いため、攻撃者にとって特に魅力的なターゲットだ。
クレジットカード情報を保護していたWebサイトの例はsilvercar.comだ。このWebサイトではクレジットカードの入力フィールドに「type=password」という属性を追加する。これにより、パスワードフィールドと同様に入力された情報が難読化されて、不正アクセスに対する保護レイヤーとして機能する。だが、この保護は比較的弱く、input要素の「.valueメソッド」を呼び出すことで、研究チームが入力情報にアクセスできたという。
その一方で、「Google Play」やamazon.comなどの主要なオンラインマーケットプレースには、クレジットカードの入力フィールドに対する保護が実装されていない。悪意のある拡張機能を使うと、セキュリティコードや郵便番号を含むクレジットカードの詳細情報をWebサイトで平文の形で取得できる。
Webサイトの設定が悪く すでに漏えいしている可能性あり
研究チームは今回実験のために開発した拡張機能と同じように悪用できる拡張機能がないかどうかを調べた。その結果、調査した拡張機能のうち、12.5%に当たる約1万7300個が今回の脆弱性を利用できる権限を持っていた。中でも190個はパスワードフィールドに直接アクセスできる。
これは非常にまずい状況だ。多数の著名なWebサイトが盗まれては困る情報を平文で表示する一方で、平文の情報を盗み出すことが機能の上では可能な拡張機能があふれているからだ。
今回の脆弱性に対してユーザーができることはあまりない。Webブラウザの拡張機能を全て諦めることは可能だが。
Webブラウザの開発元は拡張機能の審査プロセスを厳重化する必要があるだろう。Webサイトの開発者にできることは2つある。機密性の高い入力フィールドを保護できるようにするためのボルトオンJavaScriptパッケージを利用することが一つ。もう一つは拡張機能が機密性の高い入力フィールドにアクセスしたときにユーザーに警告を発するWebブラウザレベルの機能だ。
からの記事と詳細 ( 「Google Chrome」でパスワードがダダ漏れに そのカラクリとは? - キーマンズネット )
https://ift.tt/UJVx7Kq
No comments:
Post a Comment