| |

ソフトウェア・デザイン館 Sage Plaisir 21 へようこそ!
隔週月曜更新 : 毎週1つのニュースまたはプログラミング技術を取り上げ、解説します。
東日本大震災 まとめページ
IT ニュース&コラムは 毎月第2月曜の配信となります。
URL が新しくなりました。 https://www.tzneko.com/
週刊 IT ニュース&コラム 2025/12/8
SVGクリックジャッキング:従来の手法を超えた新しい攻撃とその対策
2025年12月、セキュリティ研究者のRebane氏が「SVGクリックジャッキング」と名付けた
新たな攻撃手法を公開しました。この攻撃はGoogleドキュメントとGeminiを悪用したデモで実証され、
Googleから脆弱性報奨金として約48万円が支払われています。
本記事では、この攻撃手法の仕組みと、従来のクリックジャッキングとの違い、そして対策について解説します。
## 従来のクリックジャッキングとは
従来のクリックジャッキングは、透明なiframeをページ上に重ねることで、
ユーザーに意図しないクリックをさせる攻撃です。
たとえば、「無料ダウンロード」というボタンの上に、透明化したSNSの「いいね!」
ボタンを重ねておきます。ユーザーがダウンロードボタンをクリックしたつもりでも、
実際には透明ないいねボタンを押してしまう、という仕組みです。
この手法には限界があります。奪えるのは基本的に「クリック1回」だけであり、
テキスト入力など複雑な操作を誘導することは困難でした。
## SVGクリックジャッキングの新しさ
SVGクリックジャッキングは、iframeを「透明にする」のではなく、
「見た目を完全に書き換える」という点で従来と大きく異なります。
SVGフィルターを使えば、iframe内の表示を別のUIに偽装できます。
ユーザーには「CAPTCHAの入力画面」が見えていても、実際には裏でまったく
別のアプリケーションを操作させられている、ということが可能になります。
これにより、単発のクリックだけでなく、テキスト入力や複数ステップに
わたる操作も誘導できるようになりました。
## 攻撃の実例:Googleドキュメントからの情報漏洩
Rebane氏が公開したデモでは、以下のような攻撃シナリオが実証されました。
### 前提条件
- ユーザーはGoogleアカウントにログイン済み
- ユーザーのGoogleドライブに「Sales 2025 Q2」という機密文書がある
- 攻撃者は自分のGoogleドキュメントを用意している
### 攻撃の流れ
ユーザーが攻撃サイトにアクセスすると、「AIジェネレーターを無料で試そう」
という画面が表示されます。しかし実際には、その下に攻撃者のGoogleドキュメントが
iframeで埋め込まれており、SVGフィルターで見た目が偽装されています。
ユーザーが「Get Started」をクリックすると、実際にはGoogleドキュメント上の
「Generate Document」ボタンをクリックしたことになり、Geminiが起動します。
次に、CAPTCHA認証に見せかけた画面で「4a@SaLe」という文字列を入力させます。
この文字列は実際にはGeminiへの入力となり、「Sale」を含むためユーザーの
ドライブから「Sales 2025 Q2」が検索候補として表示されます。
続く「Submit」ボタンのクリックは、画面位置がずらされているため、実際には
その候補ファイルを選択する操作になります。
最後に「Continue」をクリックすると、Geminiがユーザーのファイル内容を参照し、
攻撃者のGoogleドキュメント上に出力します。
ユーザーは「CAPTCHAを入力しただけ」と思っていますが、機密データは攻撃者の手に渡っています。
## なぜ情報が漏洩するのか
ここで重要なのは、Geminiは「ユーザーの権限でドライブを参照できる」だけでなく、
「参照した内容を現在開いているドキュメントに出力する」という機能を持っている点です。
そして「現在開いているドキュメント」とは、攻撃者のGoogleドキュメントです。
つまり、読み取りはユーザー権限で行い、書き込みは攻撃者のドキュメントに行われる。
このギャップを突いた攻撃です。
## これは誰の脆弱性か
Gemini単体で見れば、設計通りに動作しています。ユーザーの指示に従い、
ユーザーの権限でドライブを参照し、結果を出力する。これ自体は正常な機能です。
問題は複合的です。
- SVGフィルターがiframeの見た目を完全に偽装できること
- Googleドキュメントがiframeへの埋め込みを許可していたこと
- Geminiが「ユーザーの意図しない操作」への保護を持っていなかったこと
Googleが報奨金を支払ったということは、サービス全体としてクリックジャッキング対策が
不十分だったと認めたことを意味します。
## Googleが対策すれば解決するのか
Googleの対応によって、Googleドキュメント+Geminiを使ったこの特定の攻撃は防げるでしょう。
しかし、SVGクリックジャッキングという手法自体はブラウザの標準機能を利用しています。
iframeへの埋め込みを許可している他のサービスがあれば、同様の攻撃は可能です。
つまり、各Webサービスが個別に対策を講じる必要があります。
## 対策方法
Webサービス側での対策は主に2つあります。
### X-Frame-Options ヘッダー
HTTPレスポンスヘッダーで、iframeへの埋め込みを制御します。
```
X-Frame-Options: DENY # 一切の埋め込みを禁止
X-Frame-Options: SAMEORIGIN # 同一オリジンのみ許可
```
### Content-Security-Policy(CSP)
より柔軟な設定が可能な、現在推奨されている方法です。
```
Content-Security-Policy: frame-ancestors 'none' # 一切禁止
Content-Security-Policy: frame-ancestors 'self' # 同一オリジンのみ
Content-Security-Policy: frame-ancestors example.com # 特定ドメインのみ許可
```
### 現実的な課題
埋め込みが不要なサービスであれば、単純に禁止すれば済みます。
しかし、正当な理由で埋め込みを許可する必要があるサービスは、別の対策が必要です。
たとえば、重要な操作の前に確認ダイアログを表示する、などの方法が考えられます。
## まとめ
SVGクリックジャッキングは、従来のクリックジャッキングを発展させた攻撃手法です。
iframeの透明化ではなく、SVGフィルターによる視覚的な偽装を用いることで、
より複雑な操作をユーザーに気づかれずに実行させることができます。
この攻撃手法の公開により、各Webサービスは自サイトがiframeに埋め込まれた際の
リスクを改めて評価し、適切な対策を講じる必要が出てきました。
特に、ユーザーの権限で重要な操作を行う機能を持つサービスは、クリックジャッキング対策の
見直しが求められます。
Generated by Claude Opus 4.5
プロンプト:
- 下記のページの攻撃方法はリンクの横取りですか?
ウェブサイト上でユーザーをだましてデータを盗み出す新たな攻撃手法「SVGクリックジャッキング」が登場。
https://gigazine.net/news/20251205-svg-clickjacking/
- シークレットを表示するページが偽装する対象ですか
- クリックジャッキングとの違いは
- Sales 2025 Q2という文書が漏洩した仕組みを詳しく
- Geminiはユーザーのドライブにアクセスできるだけだと思いますが、なぜ漏洩するのでしょうか
- Geminiの脆弱性ですか
- Googleの脆弱性が防がれたら、SVGクリックジャッキングができなくなりますか
- 各Webサービスがiframeへの埋め込みを禁止するには
- 以上を踏まえて、ブログの記事になるような文章を書いてください
|
|
Sage Plaisir 21 のブログやツイッターを読もう!
Sage Plaisir 21 では、ここのホームページのほかにブログとツイッター
も行っています。
ブログは、こちら。
ツイッターは、こちら。
|
|
Sage Plaisir 21 メールマガジンを読もう!
『週刊 IT ニュース&コラム』には、
このページに掲載している
コラムの他に、注目ニュースを集めたリンク集も、掲載しています。
日々多く集まる IT 情報から、注目すべき話題をコラム形式で取り上げますので、
ぜひチェックしておきましょう。
(サンプル、および登録)
|
Sage Plaisir 21 Contents
[ English | 日本語 ]
自動化ツールのダウンロード
(2017-01-04) update!
急速な IT 革命により開発スピードの向上が課題になっています。
その鍵になるのがツールの活用または開発です。
一般的なものから専門的なものまで使えるツールを公開しています。
技術資料&オープンソース
(2012-03-19)
扱う技術が多くなってくるにつれ、
技術はマスターするものではなく調べるものになり、
どれだけ実践に即した資料を集められるかどうかが、
勝負になります。標準的な技術の資料だけでなく、
プログラムソースやライセンスフリーのライブラリも公開しています。
オブジェクト指向プログラミング設計
(2000-04-01)
Visual Basic 7 にもついに本格的なオブジェクト指向の
機能が追加され、ソフトウェア技術者には必須の知識に
なりつつあります。長年の研究の成果から、最新の応用方法まで
様々なメモを公開しています。
ソフトウェア・デザイン館より(技術エッセイ)
(2000-11-01)
プロの経験を通じて習得したソフトウェア全般に関する
技術を解説しています。
ソフトウェアとは何かといった根本的なことを通じて、
デザインに関するポイントをわかりやすく説明しています。
| |
|
ソフトウェア デザイン館 Sage Plaisir 21
Simple and Visual
|
週刊 IT ニュース&コラム
12/8 SVGクリックジャッキング:従来の手法を超えた新しい攻撃とその対策
11/10 プログラミング言語としての シェルスクリプト チュートリアル (3) 〜 条件分岐編
10/13 ChatGPT の新ペアレンタルコントロールは、子どものプライバシーを守る
9/8 コードを読むために必要なプロンプトはこれだ! 〜 シェルスクリプト チュートリアル (番外編)
8/11 クレジットカード会社による間接的検閲の現実 ~ゲーム業界から見えてきた深刻な問題~
7/14 【15分ルール】意外と難しい「質問ができる文化」を作る方法を網羅的に考えてみた
6/9 Claude.ai Pro プランでも使えるようになった MCP の Integrations
5/12 詳細解説 TypeScript の真のグローバル変数の書き方
4/14 AI が自動的にタスクを細分化して、実現可能性を高める Magic ToDo
3/10 逆参照を避けてデータ定義をリーダブルにする getter(TypeScript版)
2/10 開発者が速攻でプロジェクトを片付けるのに重要なポイント、認知負荷とは?
1/13 今日は何するんだっけ?思考をリードするチケット管理の書き方 〜 構造化ドキュメンテーション (4)
12/9 デジタル時代の証拠保全と企業コミュニケーション - Googleの事例から考える
11/11 (改訂版)三項演算子は本当に読みにくいのか。TypeScript で分かった 後置 else if メソッド の効果
10/14 陰謀論を信じる人たちを説得するのは人間より AI が得意
9/9 三項演算子は本当に読みにくいのか。TypeScript で分かった三項演算式クラスの効果
8/12 ニコニコ動画とKADOKAWAへの大規模サイバー攻撃:その影響と復旧への道のり
7/8 プログラミング言語としての シェルスクリプト チュートリアル (2) 〜 データ編
6/10 早まってDRY原則を適用しないことが重要:Googleの推奨
5/13 プログラミング言語としての シェルスクリプト チュートリアル (1)
4/8 オープンソースを狙う攻撃者 - XZ Utilsメンテナーが仕掛けた罠
3/11 大規模プログラムの理解を助ける図を VSCode で素早く書く方法 ~ 構造化ドキュメンテーション (3)
2/12 巨大IT企業の脅威から身を守る方法
1/8 アジャイルに手順書を書くための 13のルール 〜 構造化ドキュメンテーション (2)
12/11 Microsoftが革新的な「Azure AI Studio」をIgnite 2023で発表!
11/13 (過去記事更新)
10/9 DALL・E 3 - 新次元の画像生成AIが登場
9/11 アジャイルなノートの書き方入門 〜 構造化ドキュメンテーション
8/14 日本のX(旧ツイッター)に新機能「コミュニティノート」が登場!
7/10 E2E テストの決定版! テスト開発の効率が爆上がりする Playwright (TypeScript版)
6/12 アップルがARの未来を切り開く Apple Vision Proの登場
5/8 cypress を使って自動テストを簡単に導入する方法(2023年版)
4/10 衝撃の AI ChatGPT、ホワイトカラーの作業を一瞬でこなす
3/13 自動テストの内容が分からなくなる 6つの原因とそれを解決する diff patch-o ツール
2/13 テスラの自動運転はやらせであるとエンジニアが証言
1/9 ガントチャート自動作成エクセルを使って90%シンドロームを予防する(無料)
12/12 高品質なイラストを生成できる AI が登場し、イラストレーターが危機に
11/14 Bash シェルスクリプトのデバッグや入力補完ができる Visual Studio Code 拡張機能(WSL2,mac,Linux対応)
10/10 トヨタの委託先が個人情報のアクセスキーを GitHub に公開してしまう事故
9/12 【pytest】フィクスチャーの定義へジャンプするスクリプト
8/8 VISA と Mastercard がポルノサイトの取引を一時停止
7/18 Swift のようなシンプルな書き方で Go の既存の interface を extension する
6/13 イーロン・マスクによる Twitter 買収、これまでのまとめ
5/9 mac の zsh と Linux/Windows の bash で互換性があるシェルスクリプトの連想配列
4/11 ロシアがウクライナに軍事侵攻。ネット空間でのサイバー戦争から悪に染まる人々
3/14 【最終完全版】 bash/zsh 用オプション解析テンプレート (getopts→shift)
2/14 ゲームで睡眠習慣を改善するアプリ、よひつじの森
1/10 aws S3 互換ストレージ MinIO 入門 ~ mc.exe を試しに動かしてみる
12/13 過剰設計は多くの製品を殺す
11/22 そのファイル、実はシンボリックリンクで共有されています…を正しく調べる方法
11/1 Photoshop で人物などを自動選択する新機能と Web 版の提供を発表
10/11 1台でもマルチディスプレイ ~ マウスの中ボタンだけで切り替えられる快適な仮想デスクトップ環境
9/20 Apple vs Epic 手数料訴訟は独占禁止法違反ではないという判決、控訴へ
8/30 インストールを自動化する Ansible 自体をインストールする
8/9 転売を擁護するホビージャパンの編集者と池田信夫の部分的な正しさと大きな悪
7/19 区切り記号を操作ステップに合わせて入れると探しやすい - 構造化文書 (2)
6/28 Windows 11 を発表
6/6 メニュー項目の場所を上下左右で示すこと - 手順メモ (1)
5/16 GitHub のアカウント認証からパスワード認証が廃止へ
4/26 Jest の watch モードで Visual Studio Code のデバッガーを一瞬で再起動させる方法
4/5 LINE のトーク内容が中国企業で閲覧可能だった問題
3/15 cypress で期待通りに自動テストが動かなかったときの対策集
2/22 新型 コロナ ウィルス 感染経路特定アプリ COCOA の不具合放置問題
2/1 cypress を使って自動テストを簡単に導入する方法
1/11 ソフトウェアエンジニア40年のキャリアから学んだ 6つのアイデア
12/21 リセット状態の Windows から Jest + TypeScript + React + Visual Studio Code を確実に構築する手順
11/30 Apple Silicon がインテルや ARM の性能を大幅に超える結果に
11/9 チュートリアルや手順書を手軽にするプレースホルダーの書式
10/19 ドコモ口座から不正な引き出し、スマホ決済会社はセキュリティを軽視
9/28 したくない作業でもするようになる 5分スイッチ テクニック (4)
9/7 30%の手数料を支払っていないとしてアップルが Epic Games の Fortnite を削除
8/17 したくない作業でもするようになる 5分スイッチ テクニック (3)
7/27 Linux と Apple が人種差別的な用語を包括的な用語に置き換えると発表
7/6 したくない作業でもするようになる 5分スイッチ テクニック (2)
6/15 GitHub と MySQL を組み合わせたサーバー DoltHub
5/25 したくない作業でもするようになる 5分スイッチ テクニック (1)
5/4 Apple と Google が新型コロナウイルス感染者を追跡するシステムを発表
4/13 手続き型プログラミング言語で宣言型プログラミングをする(2)
3/23 新型コロナウィルスの影響でリモートワークの仮導入が進む
3/2 手続き型プログラミング言語で宣言型プログラミングをする
2/10 飲食店や病院などの予約システムをクラウドで簡単に作れる SELECTTYPE
1/20 コメントを書かずに概要を説明する方法 - リーダブル コード(61)
12/30 書くスペースを半自動的に作ってメモをしやすくする SpaceInk
12/16 手続き型プログラミングと宣言型プログラミングを使い分ける
12/2 ヤフーとLINEが経営統合して、あらゆる決済ができるスーパーアプリを提供へ
11/18 Linuxによくある謎の記号による処理を説明変数で読みやすくする方法
11/4 アップルが HKmap.live を香港デモを支援するアプリと判断し配信停止
10/21 エラーが発生したときに例外を投げずに返り値としてエラーを返したときの問題
10/7 暗号化PDFを開こうとパスワードを入力すると流出する脆弱性
9/23 Go 言語でよく defer される Close 関数のエラーを捕まえる
9/9 多くの Web サービスのインフラを提供している aws に障害発生
8/26 POSIX の ls コマンドで表示される一覧の区切りの空白は2文字
8/12 Google が Chrome のシークレットモードで有料記事を無料で読める機能を強化
7/29 プログラムとしての定数と仕様としての定数を明確に分けること
7/15 電子決済サービス開始で再び不正利用。7pay の対応の問題とは
7/1 インストール手順にバグがある原因は、スクリプトを作っていないから
6/17 音楽権利情報処理にAWSのブロックチェーン技術が採用される
6/3 インストーラーでインストールする対象のバージョンは、最新版より特定版
5/20 PC上での共同作業をインテリジェンスにする Fluid Framework
5/6 Windows で Python スクリプトを Python の仮想環境の中で起動する方法
4/22 Windows で USB デバイスの安全な取り外しの操作が不要に
4/7 ブール型の説明変数の名前は文にする - リーダブル コード(60)
3/25 グーグルがゲーム ストリーミング サービスに参入、STADIA を発表
3/11 ソースコードが早く読めるようになる、シンプルコメント2 - リーダブル コード(59)
2/25 無料で使えるように改変した iOS アプリを何者かが配布
2/11 ソースコードが早く読めるようになる、シンプルコメント2 - リーダブル コード(58)
1/28 5月1日から変更される新元号の名前の発表が 4月1日に決定
→ もっと前の記事
自動化ツールのダウンロード
Snap Note 3 mini - サクサク使える自由ノート
new!
Plastic Window 1.20 - ウィンドウを半透明に
new!
Shortcut Director 1.00 - ショートカットのリンク切れ修正
Archives Folderizer SV 1.10 - 圧縮解凍
デジタルスクラップブックSVG Cats 2
→ その他のツール
オブジェクト指向プログラミング設計
技術資料
|