注目★★★★★GitHub Advisory
Logging operator に Fluentd 設定インジェクション、任意コード実行が可能
30秒で把握
- 1Logging operator の設定生成で改行挿入により Fluentd 設定ブロック追加可能、exec プラグイン経由で RCE
- 2Flow リソース作成権限があれば攻撃可能、Kubernetes RBAC 制限不十分な環境で特に危険
- 3ユーザーは即座に修正版へアップデート・Flow 作成 RBAC を最小化・Fluentd コンテナ実行ユーザー最小権化を実施
要約
Logging operator の Fluentd 設定レンダラーは、CRD の Flow リソースから文字列を検証・エスケープなしに fluent.conf に直接書き込む。Flow リソース作成権限を持つユーザーは、改行を含む値を injection して Fluentd 設定を操作でき、record_transformer.records パラメータで新たな `<match **>` ブロックを追加可能。そこに Fluentd の `@type exec` プラグインを指定すれば、Fluentd aggregator 内で任意コマンドが実行される。pkg/sdk/logging/model/render/fluent.go の FluentRender で値がクォートされず、改行や `<>` 文字がバリデーションされないのが根因。
あなたへの影響
Logging operator を運用する場合、RBAC で Flow リソース作成権限を厳格に制限し、即座にアップストリームの修正版へアップグレードすべき。
推奨:すでに Flow リソース作成者が存在するなら、当該ユーザーの特権レベル見直しと Fluentd aggregator のコンテナ実行ユーザー最小権化による被害局限を並行実施。