Oracle Linux 8: container-tools: ol8 (ELSA-2023-6939)

critical Nessus プラグイン ID 186122

概要

リモートの Oracle Linux ホストに、1 つ以上のセキュリティ更新プログラムがありません。

説明

リモートの Oracle Linux 8 ホストに、ELSA-2023-6939 のアドバイザリに記載されている複数の脆弱性の影響を受けるパッケージがインストールされています。

- HTML 名前空間にないテキストノードが誤って文字通りにレンダリングされ、エスケープされるべきテキストがエスケープされません。これにより、XSS 攻撃が引き起こされる可能性があります。(CVE-2023-3978)

- JavaScript の有効な空白文字がすべて空白文字と見なされるわけではありません。JavaScript コンテキストの文字セット \t\n\f\r\u0020\u2028\u2029 以外の空白文字が含まれ、アクションも含まれているテンプレートは、実行中に適切にサニタイズされない可能性があります。(CVE-2023-24540)

- 悪意を持って細工された HTTP/2 ストリームが、HPACK デコーダーでの過剰な CPU 消費を引き起こし、少数の小さなリクエストからのサービス拒否を引き起こす可能性があります。(CVE-2022-41723)

- テンプレートは、バックティック (`) を Javascript の文字列デリミタとして適切に考慮せず、期待通りにエスケープしません。JS テンプレートリテラルには、ES6 以降、バックティックが使用されています。テンプレートの Javascript テンプレートリテラル内に Go テンプレートアクションが含まれている場合、アクションのコンテンツを使用してリテラルを終了し、任意の Javascript コードを Go テンプレートに注入できます。ES6 テンプレートリテラルはかなり複雑で、それ自体が文字列補間を実行できるため、Go テンプレートアクションをそれらの内部で使用することをシンプルに許可しないことが決定されました (例: var a = {{.}})。この動作を許可する明らかに安全な方法がないためです。これは github.com/google/safehtml と同じアプローチを取ります。修正により、Template.Parse は、ErrorCode の値が 12 であるこのようなテンプレートがあるとエラーを返すようになります。この ErrorCode は現在エクスポートされていませんが、Go 1.21のリリースでエクスポートされます。以前の動作に依存するユーザーは、GODEBUG フラグ jstmpllitinterp = 1 を使用してこれを再度有効にすることができますが、バックティックがエスケープされることに注意してください。これは注意して使用する必要があります。(CVE-2023-24538)

- containerd は、オープンソースのコンテナランタイムです。コンテナ内に補助グループが適切に設定されていないバージョン 1.6.18 および 1.5.18 より前の containerd にバグが見つかりました。攻撃者がコンテナに直接アクセスでき、補助グループのアクセス権を操作する場合、補助グループのアクセス権を使用して、プライマリグループの制限をバイパスし、機密情報へのアクセス権を取得したり、そのコンテナでコードを実行したりする可能性があります。containerd クライアントライブラリを使用するダウンストリームアプリケーションも影響を受ける可能性があります。このバグは、containerd v1.6.18 および v.1.5.18 で修正されました。この問題を解決するには、ユーザーがこれらのバージョンに更新して、コンテナを再作成する必要があります。
containerd のクライアントライブラリを使用するダウンストリームアプリケーションに依存するユーザーは、別のアドバイザリおよび指示についてそのアプリケーションをチェックする必要があります。回避策として、「USER $USERNAME」Dockerfile 命令が使用されていないことを確認してください。代わりに、コンテナエントリポイントを「ENTRYPOINT [su, -, user]」と同様の値に設定し、「su」が補助グループを適切に設定できるようにします。(CVE-2023-25173)

- 1.1.4 までの runc には、libcontainer/rootfs_linux.go に関連して、権限昇格を引き起こす不適切なアクセスコントロールがあります。攻撃者がこれを悪用するには、カスタムのボリュームマウント構成で 2 つのコンテナを生成し、カスタムイメージを実行できる必要があります。注意: この問題は、CVE-2019-19921のリグレッションが原因で存在しています。(CVE-2023-27561)

- 悪意のあるまたは大きな YAML ドキュメントの解析により、過剰な量の CPU またはメモリが消費される可能性があります。(CVE-2022-3064)

- マルチパートフォーム解析は、非常に多数のパーツを含むフォーム入力を処理する際に、大量の CPU およびメモリを消費する可能性があります。これにはいくつかの原因があります: 1. mime/multipart.Reader.ReadForm は、解析されたマルチパートフォームが消費できる合計メモリを制限します。ReadForm は、消費されるメモリの量を過小評価する可能性があり、意図したよりも大きな入力を受け入れる可能性があります。2. 合計メモリを制限しても、多数のパーツがあるフォームで多数の小さな割り当てが発生することでガベージコレクターへの負荷が高まることは考慮されません。3.
ReadForm は、多数の有効期間の短いバッファを割り当てる可能性があります。これにより、ガベージコレクターに対する負荷がさらに高まります。これらの要因の組み合わせにより、攻撃者が、マルチパートフォームを解析するプログラムに大量の CPU とメモリを消費させ、サービス拒否を引き起こす可能性があります。
これは、mime/multipart.Reader.ReadForm を使用するプログラムに影響を与え、Request メソッド FormFile、FormValue、ParseMultipartForm、および PostFormValue を持つ net/http パッケージのフォーム解析にも影響を与えます。修正により、ReadForm は解析されたフォームのメモリ消費をより適切に見積もるようになり、実行時間の短い割り当ての実行がより少なくなります。さらに、修正された mime/multipart.Reader は、解析されるフォームのサイズに次の制限を課します: 1. ReadForm で解析されるフォームに含めることができるパーツ数は 1000 以下です。この制限は、環境変数 GODEBUG = multipartmaxparts = で調整できます。2. NextPart および NextRawPart で解析されるフォームパーツに含めることができるヘッダーフィールドは、10,000 以下です。さらに、ReadForm で解析されたフォームに含めることができるヘッダーフィールドは、すべてのパーツで 10,000 以下です。この制限は、環境変数 GODEBUG = multipartmaxheaders = で調整できます。(CVE-2023-24536)

- runc は、OCI 仕様に従ってコンテナを生成および実行するための CLI ツールです。影響を受けるバージョンでは、rootless runc が以下の条件で「/sys/fs/cgroup」を書き込み可能にすることがわかりました。1. runc がユーザー名前空間内で実行され、「config.json」が非共有にする cgroup 名前空間を指定しない場合 (例:「((docker|podman|nerdctl) run --cgroupns=host」、Rootless Docker/Podman/nerdctl) または 2. runc がユーザー名前空間外で実行され、「/sys」が「rbind、ro」でマウントされている場合 (例:「runc spec --rootless」、この状態は非常にまれです)。コンテナが、ホスト上のユーザーが所有する cgroup 階層「/sys/fs/cgroup/user.slice/...」への書き込みアクセス権を取得する可能性があります。他のユーザーの cgroup 階層は影響を受けません。
ユーザーはバージョン 1.1.5 にアップグレードすることを推奨します。アップグレードできないユーザーが、cgroup 名前空間の共有を解除する可能性があります (`(docker|podman|nerdctl) run --cgroupns=private)`。これは、cgroup v2 ホストでの Docker/Podman/nerdctl のデフォルトの動作です。または、「/sys/fs/cgroup」を「maskedPaths」に追加します。(CVE-2023-25809)

- HTTP/1 クライアントが、Host ヘッダーのコンテンツを完全に検証していません。悪意を持って細工された Host ヘッダーにより、追加のヘッダーまたはリクエスト全体が注入される可能性があります。この修正により、HTTP/1 クライアントは無効な Request.Host または Request.URL.Host 値を含むリクエストの送信を拒否するようになります。(CVE-2023-29406)

- 大きなハンドシェイクレコードにより、crypto/tls でパニックを引き起こす可能性があります。クライアントとサーバーの両方が、大きな TLS ハンドシェイクレコードを送信する可能性があります。これにより、応答の構築を試行する際に、サーバーとクライアントはそれぞれパニックを引き起こします。これは、すべての TLS 1.3 クライアント、セッション再開を明示的に有効にする TLS 1.2 クライアント (Config.ClientSessionCache を nil 以外の値に設定)、およびクライアント証明書をリクエストする TLS 1.3 サーバー (Config.ClientAuth >= RequestClientCert に設定) に影響します。(CVE-2022-41724)

- 非常に大きな行番号の //line ディレクティブを含む Go ソースコードで Parse 関数を呼び出すと、整数オーバーフローにより無限ループが発生する可能性があります。(CVE-2023-24537)

- runc は、OCI 仕様に従ってコンテナを生成および実行するための CLI ツールです。コンテナ内の「/proc」が特定のマウント構成とシンボリックリンクされている場合、AppArmor がバイパスされる可能性があることがわかりました。この問題は、シンボリックリンクされた「/proc」を禁止することにより、runc バージョン 1.1.5 で修正されました。詳細については、PR #3785 を参照してください。ユーザーにアップグレードすることを推奨します。アップグレードできないユーザーは、信頼できないコンテナイメージの使用を回避する必要があります。(CVE-2023-28642)

- 引用符で囲まれていない HTML 属性 (例: attr={{.}}) にアクションを含むテンプレートを空の入力で実行すると、HTML 正規化ルールにより、解析時に予期しない結果となる出力が発生する可能性があります。これにより、任意の属性をタグに注入できる可能性があります。(CVE-2023-29400)

- HTTP および MIME ヘッダー解析により、少しの入力を解析する場合でも大量のメモリが割り当てられ、サービス拒否が発生する可能性があります。入力データの特定の異常なパターンにより、HTTP および MIME ヘッダーを解析するために使用される共通関数が、解析されたヘッダーを保持するために必要なメモリよりも大幅に多くのメモリを割り当てる可能性があります。攻撃者がこの動作を悪用して、HTTP サーバーに少しのリクエストから大量のメモリを割り当てさせ、メモリ枯渇やサービス拒否を引き起こす可能性があります。
修正により、ヘッダー解析は、解析されたヘッダーを保持するために必要なメモリのみを適切に割り当てるようになりました。
(CVE-2023-24534)

- 山括弧 (<>) は、CSS コンテキストに挿入しても危険な文字とは見なされません。複数のアクションを「/」で区切ったテンプレートを信頼できない入力で実行すると、CSS コンテキストが予期せず終了し、予期しない HTML が注入される可能性があります。(CVE-2023-24539)

- net/http および mime/multipart での過剰なリソース消費によるサービス拒否が可能です。
mime/multipart.Reader.ReadForm によるマルチパートフォームの解析により、メモリおよびディスクファイルの大部分が無制限に消費される可能性があります。これは、Request メソッド FormFile、FormValue、ParseMultipartForm、および PostFormValue を持つ net/http パッケージのフォーム解析にも影響を与えます。ReadForm は maxMemory パラメーターを取り、最大 maxMemory バイト + 10MB (非ファイル部分用に予約済み) をメモリに保存するよう文書化されています。メモリに保存できないファイル部分は、一時ファイルのディスクに保存されます。ファイル以外のパーツ用に予約された設定不可の 10MB が大きすぎるため、それだけでサービス拒否のベクトルを開く可能性があります。ただし、ReadForm は、マップエントリのオーバーヘッド、パーツ名、MIME ヘッダーなど、解析されたフォームによって消費されるすべてのメモリを適切に考慮していなかったため、悪意を持って細工されたフォームが 10MB 以上を消費することがありました。さらに、ReadForm には作成されるディスクファイルの数に制限がなかったため、比較的小さなリクエスト本文で多数のディスク一時ファイルを作成することができました。修正により、ReadForm はさまざまな形式のメモリオーバーヘッドを適切に考慮し、メモリ消費の文書化された上限である 10MB + maxMemory バイトの範囲内に収まるようになりました。ユーザーは、この制限が高く、依然として危険である可能性があることを認識しておく必要があります。また、ReadForm は、複数のフォームパーツを 1 つの一時ファイルにまとめて、ディスク上の一時ファイルを最大 1 つまで作成するようになりました。mime/multipart.File インターフェース型のドキュメントには、ディスクに保存されている場合、File の基礎となる具象型は *os.File であると記述されています。このため、1 つのフォームに複数のファイルパーツが含まれる場合、パーツは 1 つのファイルに統合されるため、このようなことはなくなりました。各フォームパーツに対して個別のファイルを使用する以前の動作は、環境変数 GODEBUG=multipartfiles=distinct で再度有効にすることができます。ユーザーは、multipart.ReadForm およびそれを呼び出す http.Request メソッドが、一時ファイルによって消費されるディスクの量を制限するわけではないことに注意する必要があります。呼び出し元は、http.MaxBytesReader でフォームデータのサイズを制限できます。(CVE-2022-41725)

Nessus はこれらの問題をテストしておらず、代わりにアプリケーションが自己報告するバージョン番号にのみ依存していることに注意してください。

ソリューション

影響を受けるパッケージを更新してください。

参考資料

https://linux.oracle.com/errata/ELSA-2023-6939.html

プラグインの詳細

深刻度: Critical

ID: 186122

ファイル名: oraclelinux_ELSA-2023-6939.nasl

バージョン: 1.4

タイプ: local

エージェント: unix

公開日: 2023/11/21

更新日: 2024/11/2

サポートされているセンサー: Frictionless Assessment Agent, Nessus Agent, Nessus

リスク情報

VPR

リスクファクター: High

スコア: 7.4

CVSS v2

リスクファクター: Critical

基本値: 10

現状値: 7.8

ベクトル: CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C

CVSS スコアのソース: CVE-2023-24540

CVSS v3

リスクファクター: Critical

基本値: 9.8

現状値: 8.8

ベクトル: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

現状ベクトル: CVSS:3.0/E:P/RL:O/RC:C

CVSS v4

リスクファクター: Critical

Base Score: 9.3

Threat Score: 8.9

Threat Vector: CVSS:4.0/E:P

Vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

CVSS スコアのソース: CVE-2023-3978

脆弱性情報

CPE: p-cpe:/a:oracle:linux:containernetworking-plugins, p-cpe:/a:oracle:linux:aardvark-dns, p-cpe:/a:oracle:linux:podman-docker, cpe:/o:oracle:linux:8, p-cpe:/a:oracle:linux:podman-plugins, p-cpe:/a:oracle:linux:runc, p-cpe:/a:oracle:linux:oci-seccomp-bpf-hook, p-cpe:/a:oracle:linux:crun, cpe:/a:oracle:linux:8::appstream, cpe:/a:oracle:linux:8:9:appstream_base, p-cpe:/a:oracle:linux:libslirp, p-cpe:/a:oracle:linux:criu, p-cpe:/a:oracle:linux:libslirp-devel, p-cpe:/a:oracle:linux:podman-catatonit, p-cpe:/a:oracle:linux:podman-gvproxy, p-cpe:/a:oracle:linux:container-selinux, p-cpe:/a:oracle:linux:netavark, p-cpe:/a:oracle:linux:buildah, p-cpe:/a:oracle:linux:python3-criu, p-cpe:/a:oracle:linux:skopeo-tests, p-cpe:/a:oracle:linux:conmon, p-cpe:/a:oracle:linux:crit, p-cpe:/a:oracle:linux:containers-common, p-cpe:/a:oracle:linux:cockpit-podman, p-cpe:/a:oracle:linux:slirp4netns, p-cpe:/a:oracle:linux:podman, p-cpe:/a:oracle:linux:criu-libs, p-cpe:/a:oracle:linux:python3-podman, p-cpe:/a:oracle:linux:fuse-overlayfs, p-cpe:/a:oracle:linux:buildah-tests, p-cpe:/a:oracle:linux:podman-tests, p-cpe:/a:oracle:linux:podman-remote, p-cpe:/a:oracle:linux:udica, p-cpe:/a:oracle:linux:skopeo, p-cpe:/a:oracle:linux:criu-devel

必要な KB アイテム: Host/local_checks_enabled, Host/RedHat/release, Host/RedHat/rpm-list, Host/OracleLinux

エクスプロイトが利用可能: true

エクスプロイトの容易さ: Exploits are available

パッチ公開日: 2023/11/18

脆弱性公開日: 2022/12/27

参照情報

CVE: CVE-2022-3064, CVE-2022-41723, CVE-2022-41724, CVE-2022-41725, CVE-2023-24534, CVE-2023-24536, CVE-2023-24537, CVE-2023-24538, CVE-2023-24539, CVE-2023-24540, CVE-2023-25173, CVE-2023-25809, CVE-2023-27561, CVE-2023-28642, CVE-2023-29400, CVE-2023-29406, CVE-2023-3978

IAVB: 2023-B-0012-S, 2023-B-0022-S, 2023-B-0029-S, 2023-B-0052-S, 2023-B-0068-S, 2023-B-0080-S