💦
FreeBSD libxml2 の2.11.9 -> 2.14.3
FreeBSDのlibxml2パッケージは現在バージョン2.11で停滞していましたが、月末に変更がありました。「更新が滞っていた」問題は一応解消しましたので、記事を修正します。
libxml2 2.14.0の大幅な変更
1. HTML5トークナイザーの完全実装
2025年3月27日にリリースされたlibxml2 2.14.0では、HTML5仕様に完全準拠したトークナイザーが実装されました。これまでのHTML4ベースの実装から大幅に刷新され、HTML5の厳密な解析ルールに従うようになりました。
主な変更点:
- HTML5標準に完全準拠したトークナイザー
- 非標準構文の警告を多数削除
- HTMLツリー構築アルゴリズムは未実装(今後の課題)
2. バイナリ互換性後方互換性の喪失
最も重要な変更は、バイナリ互換性(ABI)の範囲が大幅に制限されたことです。
具体的な変更:
- バイナリ互換性は2.14以降のバージョンのみに制限
- ELFシステムにおいてsoname(共有ライブラリ名)が変更
- 従来:
libxml2.so.2
- 新規:
libxml2.so.16
- 従来:
FreeBSDが直面する技術的課題
1. 依存関係の連鎖的影響
libxml2はシステムの基盤ライブラリとして、多数のパッケージから依存されています。soname変更により、関連するすべてのパッケージの再ビルドが必要となります。
2. ポートシステムへの影響
FreeBSDのportsシステムでは、依存関係の整合性を保つため、大規模な更新には慎重な計画が必要です。libxml2の更新は以下に影響します:
- デスクトップ環境(GNOME、KDE等)
- Webブラウザ
- 開発ツール
- システムユーティリティ
3. 他ディストリビューションの対応状況
Debianでは同様の問題により、libxml2の更新が長期間停滞し、セキュリティ修正の適用に苦慮していました。Arch Linuxは比較的早期に2.14系に移行しましたが、LLVMプロジェクトのlldなど、一部ツールとの互換性問題が報告されています。
セキュリティ脆弱性の深刻度
2025年に入ってから、libxml2には複数の重要な脆弱性が発見されています:
- CVE-2025-24928: 機密情報漏洩、データ改竄、DoS攻撃の可能性
- CVE-2025-27113: サービス拒否攻撃の脆弱性
- Use-After-Free脆弱性
- スタックベースのバッファオーバーフロー
更新の影響
- libxml2 は XMLパーサとしては多くの利用があり、expatなどと並んでセキュリティホールになることが多いです。
- 手近なサーバで依存関係がどうなっているのかを確認するために、 pkg remove の実施を試み、”連鎖して削除されるpkg”がいくつかあるか調べてみました。
Installed packages to be REMOVED:
ImageMagick7: 7.1.1.26_6
asciidoc: 10.2.1
at-spi2-core: 2.54.1
avahi-app: 0.8_6
bind-tools: 9.20.4
colord: 1.4.7_3
cups: 2.4.11_1
cups-filters: 1.28.17_9
dbus: 1.16.2_2,1
dbus-glib: 0.114
epson-inkjet-printer-escpr2: 1.1.62
ffmpeg: 6.1.2_7,1
gdk-pixbuf2: 2.42.10_3
ghostscript10: 10.05.1
libheif: 1.19.5
libjxl: 0.11.1_1
libplacebo: 7.349.0
librsvg2-rust: 2.58.5_4
libva: 2.22.0
libwmf: 0.2.13_2
libxkbcommon: 1.7.0_1
libxml2: 2.11.9
libxslt: 1.1.43
motion: 4.6.0_1
polkit: 125_1
poppler-glib: 25.04.0_1
poppler-utils: 25.04.0_1
py311-beautifulsoup: 4.12.3
py311-furo: 2024.8.6_1
py311-lxml: 4.9.3
shared-mime-info: 2.4_1
vala: 0.56.17,1
vulkan-loader: 1.4.307
wayland: 1.23.1
xkeyboard-config: 2.41_4
xmlto: 0.0.28_3
zabbix7-agent: 7.0.9
Number of packages to be removed: 37
これだけの規模になりますと、 ports 更新ではダウンタイムが長くなります。
ちなみにまだ 公式の "pkg" repositoryでは latest でも更新はされていないので、XXE攻撃が致命的侵害となるミッションクリティカルシステムでは ports更新でも良いかと思われます。
Discussion