Trick users and bypass warnings – Modern SVG Clickjacking attacks

2025/12/05 9:03

Trick users and bypass warnings – Modern SVG Clickjacking attacks

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Summary

本論文は、すべてのSVG

<fe*>
フィルタプリミティブをチェーン化することでチューリング完全なツールセットを構築できることを示し、高度なクリックジャッキングやクロスオリジンデータ外部流出攻撃を可能にします。

  • 著者はまず、
    feColorMatrix
    feDisplacementMap
    を用いて CSS/SVG で Apple の Liquid Glass 効果を再現し、クロスオリジン iframe 上でも動作することを証明しました。
  • プリミティブ(切り取り・タイル化・算術合成・カラー行列変換・ガウシアンぼかし)を組み合わせて、外国オリジンから画像データを読み取るピクセル読取回路を構築しました。
  • feBlend
    feComposite
    を用いて NOT, AND, OR, XOR, NAND, NOR, XNOR の論理ゲートを実装し、SVG フィルタ内で任意のブール演算が可能になりました。
  • これらのゲートを利用して、ダイアログ表示状態・読み込み状態・チェックボックス状態・赤文字検出に応じて画像を条件付きで表示するマルチステップクリックジャッキングシナリオ(「Securify」)を構築しました。
  • この手法は Google Docs に適用され、攻撃者が「Generate Document」→ CAPTCHA 入力 → 提案選択 → ボタン押下 → 読み込み画面という一連の操作を SVG フィルタ内で自動化します。
  • SVG フィルタ内(
    feDisplacementMap
    と Reed–Solomon エラー訂正表を使用)に QR コードジェネレータを構築し、生成されたコードは外部流出データをエンコードしており、ユーザーにスキャンさせて攻撃者のサーバへ送信されます。
    クリックハイジャックや SVG フィルタタイミング攻撃に関する既存研究では、マルチステップロジックとクロスオリジンデータ読取を組み合わせたものはなく、本論文は新規かつ自動化された攻撃ベクターを提示しています。

調査結果は、攻撃者が他のウェブサービスに対して同様のシーケンスを自動化し、マルウェアやフィッシングキャンペーンに埋め込む可能性があることを示唆しています。ユーザーは意図しないクリックとデータ漏洩のリスクにさらされ、サードパーティ iframe を組み込む企業は侵害リスクが高まります。本研究は、ウェブエコシステム全体で SVG フィルタ使用時のオリジン境界保護を強化する必要性を訴えています。

本文

クリックジャッキングは、別サイトの iframe を覆い隠してユーザーに意図せず操作させる古典的な攻撃手法です。
単純なアクション(例:ボタンを押す)にはうまく機能しますが、より複雑なインタラクションになると現実離れします。

そこで私は「SVG クリックジャッキング」という新しい技術に出会いました。この手法は従来のクリックジャッキングを逆転させ、複雑で対話的な攻撃や複数形態のデータ外部化を可能にします。


Liquid SVG

Apple が新しい Liquid Glass デザインを発表したとき、Web ではその効果について多数の記事が流れました。
私は Canvas やシェーダーを使わずに同じエフェクトを Web 上で再現できないか試してみました。1 時間で CSS/SVG だけの再現版を作り、十分に正確に見えるようになりました。

デモでは右下の円形コントロール(Chrome/Firefox デスクトップと Chrome モバイル)でエフェクトをドラッグできます。Safari では動きません。

このデモは注目され、あるニュース記事にも「サムスンや他社は彼女に追いつけない」という驚くべき引用付きで掲載されました。

そこで私は SVG エフェクトが iframe 上に適用できるか尋ねてみました。意外と可能でした。
Liquid Glass 効果は

feColorMatrix
feDisplacementMap
を使っており、クロスオリジンのドキュメントでも動作します。

これをきっかけに、iframe 上で機能する他のフィルタも探求し、多彩な可能性を発見しました。


基本構成要素

<fe*>
要素は 1 つまたは複数の入力画像を受け取り操作を行い、新しい画像を出力します。
単一 SVG フィルタ内でチェーンさせ、前段階の出力を次のステップに参照できます。

便利な基本要素は以下です:

  • <feImage>
    – 外部画像ファイルを読み込む
  • <feFlood>
    – 単色矩形を描画
  • <feOffset>
    – ピクセルをシフト
  • <feDisplacementMap>
    – マップに従ってピクセルを移動
  • <feGaussianBlur>
    – ぼかし
  • <feTile>
    – タイルまたはクロップ
  • <feMorphology>
    – 消失/膨張
  • <feBlend>
    – モードで二入力をブレンド
  • <feComposite>
    – 合成、算術演算
  • <feColorMatrix>
    – 色行列(チャンネル操作、アルファ/ルミナンス変換)

これらは多くのグラフィックタスクの基礎ブロックであり、強力なプリミティブへ組み合わせることができます。


攻撃例

1. フェイク CAPTCHA

feDisplacementMap
を使うとテキストを歪めて CAPTCHA のように見せ、ユーザーに機密情報を再入力させることが可能です。

<iframe src="..." style="filter:url(#captchaFilter)"></iframe>

<svg width="768" height="768" viewBox="0 0 768 768">
  <filter id="captchaFilter">
    <feTurbulence type="turbulence"
                  baseFrequency="0.03"
                  numOctaves="4"
                  result="turbulence"/>
    <feDisplacementMap in="SourceGraphic"
                       in2="turbulence"
                       scale="6"
                       xChannelSelector="R"
                       yChannelSelector="G"/>
  </filter>
</svg>

2. グレー文字の隠蔽

ユーザーが入力を確認できるようにしつつ、プレースホルダーやエラーテキストを隠すには

feComposite
,
feTile
,
feMorphology
,
feFlood
,
feBlend
,
feColorMatrix
を組み合わせます。

簡易例(省略):

<filter>
  <feComposite operator="arithmetic" k1="0" k2="4"/>
  <feTile x="20" y="56" width="184" height="22"/>
  <feMorphology operator="erode" radius="3" result="thick"/>
  <feFlood flood-color="#FFF" result="white"/>
  <feBlend mode="difference" in="thick" in2="white"/>
  <feComposite operator="arithmetic" k2="100"/>
  <feColorMatrix type="matrix"
                 values="0 0 0 0 0
                         0 0 0 0 0
                         0 0 0 0 0
                         0 0 1 0 0"/>
  <feComposite in="SourceGraphic" operator="in"/>
  <feBlend in2="white"/>
</filter>

3. ピクセルの読み取り

JavaScript にピクセルデータを渡すことはできませんが、フィルタチェーン内でピクセルを読んでマスクやトリガーに利用できます。

単純な黒ピクセル検出例:

<feTile x="50" y="50" width="4" height="4"/>
<feTile x="0"  y="0"  width="100%" height="100%"/>

<feComposite operator="arithmetic" k2="100"/>

<feColorMatrix type="matrix"
               values="0 0 0 0 0
                       0 0 0 0 0
                       0 0 0 0 0
                       0 0 1 0 0"/>

4. 論理ゲート

feBlend
(difference)と
feComposite
(arithmetic)を使えば、真偽演算子を実装できます。

ゲートSVG スニペット
NOT
<feBlend mode="difference" in2="white"/>
AND
<feComposite operator="arithmetic" k1="1"/>
OR
<feComposite operator="arithmetic" k2="1" k3="1"/>
XOR
<feBlend mode="difference" in="a" in2="b"/>

これらを組み合わせれば、SVG フィルタだけで任意の論理回路(例:フルアダー)を構築できます。


実用攻撃:「Securify」

対象は「ユーザーがハッキングされたとマークするまで複数ステップ」を必要とするページです。

  1. ダイアログ表示検出 (
    D
    ) – ピクセルを切り取り比較
  2. ダイアログ読み込み確認 (
    L
    ) – ボタンの有無
  3. チェックボックス状態確認 (
    C
    ) – 色比較
  4. 赤文字検出 (
    R
    ) – 形態学+ピクセルチェック

論理ツリー:

¬D ∧ ¬R → show button1
 D ∧ ¬L → show loading
 D ∧ L ∧ ¬C → show checkbox
 D ∧ L ∧  C → show button2
¬D ∧ R  → show end screen

これらの条件を SVG フィルタでエンコードし、ターゲット iframe 上に適切な攻撃画像を重ねることで、説得力あるマルチステップクリックジャッキング体験を実現します。


高度な応用

  • QR コード生成
    feDisplacementMap
    でビット列を配置し、事前計算した誤り訂正データを加えることで SVG フィルタだけでスキャン可能な QR コードを描画できます。
  • ブラウザ内リアルタイムロジック – ピクセル読み取り・条件判定・ビジュアル更新を JavaScript や CSP を回避して実行。

結論

SVG フィルタは単なる視覚効果だけではありません。レンダリングエンジン内で動作する、実質的にチューリング完全な言語です。この機能を悪用すれば:

  • マルチステップクリックジャッキング
  • UI 要素の隠蔽
  • クロスオリジン iframe からピクセル読み取り
  • QR コードの即時生成

などが可能になり、Web ページの攻撃面を大幅に拡張します。見た目は無害な SVG フィルタですが、その裏側で行われる操作は非常に強力かつ危険です。

同じ日のほかのニュース

一覧に戻る →

2025/12/05 10:05

BMW PHEV: Safety fuse replacement is extremely expensive

## Japanese Translation: --- ## 要約 BMW の高電圧バッテリー安全ヒューズ(1件あたり約 €5 000)は、iBMUCP モジュール全体(約 €1 100+税)を交換する必要があります。iBMUCP は溶接で閉じられ、暗号的にロックされており、サービス前後に車両全体のフラッシュが必須です。ISTA で承認された手順を試みると、盗難防止ロックを作動させてモジュールを消去し、新しいバッテリーパック(約 €6 000+VAT)が必要になるリスクがあります。 BMW は公式 ISTA 診断へのアクセスをブロックし、オーストリアでのワークショップ認定要求を却下しているため、独立した修理はさらに困難です。対照的に、テスラのプロファイザー/ BMS リセットは €11–€50 だけです。 21F2A8 や 21F35B といったエラーコードは高電圧安全問題を示しています。OEM サービスは €4 000+税と見積もられ、iBMUCP の交換作業には通常 24–50 時間がかかり、ツール費用は €25 000 を超えます(ICOM、IMIB、AOS)。 著者のチームは iBMUCP 内にある Infineon TC375 MCU 上の JTAG/DAP 保護を突破する計画です。成功すれば回復が簡素化され、作業時間とツール費用が削減され、不必要なバッテリー交換が減り、自動車修理における CO₂ 排出量も低減します。 この作業を提供しているサービスセンターは、ザグレブ、ベルリン、スロベニア、およびセルビア(EV CLINIC)に所在しています。

2025/12/05 10:15

NeurIPS 2025 Best Paper Awards

## Japanese Translation: > **概要:** > 本会議の論文賞授与式では、プログラムチェアとデータベース&ベンチマークトラックチェアが指名した委員会により選ばれた優秀な7件の論文が表彰されました。最終承認は総合チェア、新世代チェア、およびアクセシビリティチェアから行われました。賞には、Datasets & Benchmarkトラックから1件を含む4件のベストペーパーと3件のレナーアップが含まれます。 > > *ベストペーパー*: > 1. **「Artificial Hivemind: The Open‑Ended Homogeneity of Language Models」** – Infinity‑Chat(26 Kクエリ、31 K人間アノテーション)とオープンエンドプロンプトの分類法を紹介し、モデル内部での反復とモデル間での均質性を明らかにします。 > 2. **「Gated Attention for Large Language Models」** – SDPA後にヘッド特異的シグモイドゲートを追加すると性能・安定性が向上し、密結合およびMoEトランスフォーマーの注意サンク問題を緩和することを示します。コードはGitHub/HuggingFaceで公開されています。 > 3. **「1000 Layer Networks for Self‑Supervised RL」** – 1024層という深さが目標条件付きタスクで性能を向上させ、他のベースラインを上回ることを実証します。 > 4. **「Why Diffusion Models Don’t Memorize」** – 2つの時間スケール(初期一般化と後期記憶)を特定し、暗黙的な動的正則化が過学習を防ぐことを示します。 > > *レナーアップ*: > - 「Does Reinforcement Learning Really Incentivize Reasoning Capacity in LLMs Beyond the Base Model?」 – RLVRはサンプリング効率を改善するものの、推論能力を拡張しない;蒸留により新たなパターンが導入される可能性があります。 > - 「Optimal Mistake Bounds for Transductive Online Learning」 – Ω(√d) の下限と O(√d) の上限を証明し、以前の結果を指数関数的に改善し、転移学習と標準オンライン学習との間に二次的ギャップがあることを示します。 > - 「Superposition Yields Robust Neural Scaling」 – 表現の重ね合わせがニューラルスケーリング法則を駆動することを示し、強い重ね合わせは多様な周波数分布にわたってモデル次元に逆比例して損失を縮小します。 > > これらの賞は拡散理論、自律学習RL、LLMの注意メカニズム、LLMにおける推論、オンライン学習理論、ニューラルスケーリング法則、および言語モデル多様性のベンチマーク手法を網羅しています。これらは会議が実証的ブレイクスルーと理論的洞察の両方にコミットしていることを示しています。 > > この改訂版概要は、Key Points List のすべての主要ポイントを忠実に列挙し、裏付けのない推測を避け、読み手に優しい明確なオーバービューを提供します。

2025/12/05 10:39

How Brussels writes so many laws

## Japanese Translation: 欧州連合(EU)は、米国よりもはるかに多くの法律を日々制定しています。これは、制度設計が拒否権ではなく迅速な可決を報いるためです。2019年から2024年までに、EUは約13,000件の法令(1日に約7件)を通過させました。これは、加盟国と議員双方の合意を必要とする適格多数規則のおかげであり、立法者間の協力を促進しています。限られた予算ながら権限が拡大している欧州委員会は、立法案を作成し、トリロゴ(三者合意)における「四柱ドラフト」を管理し、結果を微妙に形作ります。議会委員会、報告者、および認定された議会助手(APAs)は、COVID‑19による遠隔勤務への移行後も修正案を推進します。 EUの統治連合には主要政党(EPP、社会党、自由党、グリーン)が含まれ、議会は約200政党から705名のMEPで構成されています。カウンシルは27の主権政府を代表し、その主席は6か月ごとに交代します。このため、迅速な合意形成が求められ、短期的な任期内でクレジットを確保するための譲歩が頻繁に行われます。2007年以降、トリロゴ(議会・カウンシル・委員会間の非公開交渉)が公衆読書の順次的プロセスに取って代わり、AI法案の最終会合で38時間という長時間にわたるセッションが可能になりました。 議会またはカウンシルからの修正案には体系的な費用対効果や影響評価が必須ではないため、この制度は高い量の立法を生み出しつつ、質が低く矛盾するものになる傾向があります。企業は重複した要件(BusinessEurope の分析によると13法規で169項目)が増大し続けており、コンプライアンス負担が拡大し、EU法への信頼を侵食し、企業レベル・国レベルの両方で高額な調整を強いられます。 結果として、正式な条約設計ではなく、非公式なインセンティブと手続き上のショートカットによって推進される立法プロセスが生まれ、EUの卓越した生産性を説明しています。