概要
LWKD(Week Ending November 30, 2025)で、CRI-O のパッチリリース v1.33.7 / v1.32.11 が取り上げられました。両者は CVE-2025-58183 対応として github.com/vbatts/tar-split を v0.12.2 に更新(1.33/1.32 系へバックポート)する“focused patch release”です。さらに v1.32.11 には、Pod のネットワーク後片付け時に NetNS パスが空 だと失敗する問題の修正が含まれます。
変更内容(何が変わったか)
1) CVE-2025-58183 対応(v1.33.7 / v1.32.11 共通)
- CRI-O のリリースノート上、「CVE-2025-58183: tar-split を v0.12.2 へ更新(悪意あるコンテナイメージの GNU sparse tar を解析する際の unbounded memory allocation を修正)」として記載されています。
- 該当 PR(CRI-O 1.33 系: #9591、1.32 系: #9592)では、
go.mod/go.sum/vendor/が更新され、tar-splitが v0.12.2 へ上がっています。 tar-split側の v0.12.2 は「CVE-2025-58183 の修正を取り込む」リリースで、PR #85 により Go 本家archive/tarの修正コミット(後述)を取り込んでいます。
2) NetNS パス空のときの network cleanup 失敗修正(v1.32.11 のみ)
- v1.32.11 のリリースノートには「Server: NetNS path が空のときの network cleanup failure を修正」が追加で記載されています(#9617)。
- 具体的には、
podNetwork.NetNSが空の場合を“NetNS 不正”として扱いつつ、CNI の teardown を試み、失敗しても(NetNS が無いことが原因なら)Pod 削除が失敗しない方向に振る舞いを調整し、関連テストも追加されています(#9617 は #9410 の cherry-pick)。
背景(なぜこの変更が必要か)
CVE-2025-58183(tar / GNU sparse)側の背景
Go 本家の修正コミットでは、GNU tar pax 1.0 sparse 形式の読み取りで「スパース領域データのサイズ上限が無く、悪意あるアーカイブでメモリを際限なく消費し得る」問題が説明され、上限を PAX ヘッダと同じ 1MiB に制限する修正が入っています(Fixes CVE-2025-58183)。
tar-split は archive/tar の fork を含むため(リポジトリ内 README にも “fork” として言及あり)、同等の修正が必要になり、v0.12.2 で取り込まれました。
NetNS 空で Pod 削除が詰まる背景
元 PR #9410 の説明では、infra コンテナの死亡などで NetNS パスが空になり、CNI が扱えず teardown が失敗 → StopPodSandbox が失敗 → Pod 削除が詰まる、といった問題が説明されています(MicroShift の本番環境で観測された旨も記載)。
影響(運用者/利用者/開発者への影響、注意点、移行)
- 運用者: CRI-O 1.33 系/1.32 系を使っている場合、CVE 対応として v1.33.7 / v1.32.11 の内容を確認しつつ更新判断する材料になります。v1.32.11 では NetNS が壊れたケースでも Pod 削除が詰まりにくくなる一方、ログに「NetNS が空」警告が出るケースが増える可能性があります。
- 利用者: 悪意ある(または壊れた)GNU sparse tar を含むイメージ処理で、メモリ消費が暴走するタイプの問題に対してガードが入ります(ただし、上限超過のアーカイブはエラーになり得ます)。
- 開発者:
tar-split(および周辺依存)更新によりvendor/差分が大きくなり得ます。脆弱性修正の根本は Go 側archive/tar修正の取り込みである点を押さえると追跡しやすいです。
用語メモ(用語の軽い説明)
- CRI-O: Kubernetes の kubelet が利用する Container Runtime Interface(CRI)の実装の一つ。
- tar-split: tar を分解/再構成する用途で使われるライブラリ(
archive/tarの fork を含む)。 - GNU sparse tar (pax 1.0): スパースファイル(穴あきファイル)を表現する tar 形式の一つ。
- NetNS(network namespace): Linux のネットワーク名前空間。Pod のネットワーク分離に使われる。
- CNI teardown: Pod のネットワーク設定を解放する後片付け処理。
参考リンク
- https://lwkd.info/2025/20251203
- https://github.com/cri-o/cri-o/releases/tag/v1.33.7
- https://github.com/cri-o/cri-o/releases/tag/v1.32.11
- https://github.com/cri-o/cri-o/pull/9591
- https://github.com/cri-o/cri-o/pull/9592
- https://github.com/cri-o/cri-o/pull/9617
- https://github.com/cri-o/cri-o/pull/9410
- https://github.com/vbatts/tar-split/releases/tag/v0.12.2
- https://github.com/vbatts/tar-split/pull/85
- https://github.com/golang/go/commit/2612dcfd3cb6dd73c76e14a24fe1a68e2708e4e3
- https://github.com/containers/storage/commit/49977ac2f9e47886824812b7d52bd4c289d12513
- https://github.com/cri-o/cri-o
- https://github.com/vbatts/tar-split