概要

LWKD(Week Ending November 30, 2025)で、CRI-O のパッチリリース v1.33.7 / v1.32.11 が取り上げられました。両者は CVE-2025-58183 対応として github.com/vbatts/tar-splitv0.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-splitarchive/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 のネットワーク設定を解放する後片付け処理。

参考リンク