Ubuntu 16.04 ESM / 18.04 ESM / 20.04 LTS / 22.04 LTS : Go の脆弱性 (USN-6038-2)

critical Nessus プラグイン ID 187743

概要

リモート Ubuntu ホストに 1 つ以上のセキュリティ更新がありません。

説明

リモートの Ubuntu 16.04 ESM / 18.04 ESM / 20.04 LTS / 22.04 LTS ホストには、USN-6038-2のアドバイザリに記載された複数の脆弱性の影響を受けるパッケージがインストールされています。

- Go 1.17.12および Go 1.18.4より前に net/http の HTTP/1 クライアントで無効な Transfer-Encoding ヘッダーを受け入れると、ヘッダーを無効として不適切に拒否する中間サーバーと組み合わせた場合に、HTTP リクエストスマグリングが可能になります。(CVE-2022-1705)

- 1.18.6より前の Go および 1.19.1より前の 1.19.xの net/http では、シャットダウンが致命的なエラーによりプリエンプトされた場合、HTTP/2 接続が終了中にハングアップする可能性があるため、攻撃者がサービス拒否を引き起こす可能性があります。(CVE-2022-27664)

- Go 1.17.12および Go 1.18.4より前の encoding/xml の Decoder.Skip の制御されない再帰により、深くネスト化された XML ドキュメントを介してスタックの枯渇により攻撃者がパニックを引き起こす可能性があります。(CVE-2022-28131)

- Reader.Read は、ファイルヘッダーの最大サイズに制限を設定しません。悪意を持って細工されたアーカイブにより、Read が無制限の量のメモリを割り当て、リソースの枯渇またはパニックを引き起こす可能性があります。
修正後の Reader.Read はヘッダーブロックの最大サイズを 1 MiB に制限します。(CVE-2022-2879)

- ReverseProxy によって転送されるリクエストには、net/http によって拒否される解析不可能なパラメーターを含め、受信リクエストからの生のクエリパラメーターが含まれています。これにより、Go プロキシが解析できない値を持つパラメーターを転送する際に、クエリパラメーターのスマグリングが発生する可能性があります。修正後の ReverseProxy は、ReverseProxy の後にアウトバウンドリクエストの Form フィールドが設定されると、転送されたクエリのクエリパラメーターをサニタイズします。Director 関数が戻り、プロキシがクエリパラメーターを解析したことを示します。クエリパラメーターを解析しないプロキシは、元のクエリパラメーターを変更せずに転送し続けます。(CVE-2022-2880)

- 1.17.10より前の Go および 1.18.2より前の 1.18.xに不適切な権限が割り当てられています。ゼロ以外のフラグパラメーターで呼び出されると、Faccessat 関数が、ファイルがアクセス可能であると誤って報告する可能性があります。
(CVE-2022-29526)

- Go 1.17.11および Go 1.18.3より前の crypto/tls のセッションチケットの ticket_age_add のランダムではない値により、TLS ハンドシェイクを観察できる攻撃者が、セッション再開中にチケットの有効期間を比較することで、連続する接続を相互に関連付けることができます。(CVE-2022-30629)

- Go 1.17.12および Go 1.18.4より前の io/fs における Glob の制御されない再帰により、攻撃者が、多数のパスセパレーターを含むパスを介して、スタック枯渇によりパニックを引き起こす可能性があります。
(CVE-2022-30630)

- Go 1.17.12および Go 1.18.4の前の compress/gzip の Reader.Read における制御されない再帰により、攻撃者が、多数の連結された長さゼロの圧縮ファイルを含むアーカイブを介して、スタック枯渇によりパニックを引き起こす可能性があります。(CVE-2022-30631)

- Go 1.17.12および Go 1.18.4より前の path/filepath における Glob の制御されない再帰により、攻撃者が、多数のパスセパレーターを含むパスを介して、スタック枯渇によりパニックを引き起こす可能性があります。
(CVE-2022-30632)

- Go 1.17.12および Go 1.18.4の前の encoding/xml の Unmarshal における制御されない再帰により、攻撃者は、「any」フィールドタグを使用するネスト化されたフィールドを持つ Go 構造体に XML ドキュメントをアンマーシャリングすることで、スタック枯渇によりパニックを引き起こす可能性があります。(CVE-2022-30633)

- Go 1.17.12および Go 1.18.4より前の encoding/gob の Decoder.Decode の制御されない再帰により、深くネスト化された構造を含むメッセージを介して、スタック枯渇により攻撃者がパニックを引き起こす可能性があります。
(CVE-2022-30635)

- Go 1.17.12および Go 1.18.4の前の net/http でのクライアント IP アドレスの不適切な漏洩は、X-Forwarded-For ヘッダーの nil 値を含む Request.Header マップで httputil.ReverseProxy.ServeHTTP を呼び出すことで発生する可能性があります。これにより、クライアント IP を X-Forwarded-For ヘッダーの値として設定するための ReverseProxy が発生します。(CVE-2022-32148)

- エンコードされたメッセージが短すぎると、1.17.13 および 1.18.5より前の Go の math/big で、Float.GobDecode および Rat GobDecode にパニックが発生し、サービス拒否が発生する可能性があります。(CVE-2022-32189)

- 攻撃者が、HTTP/2 リクエストを受け入れる Go サーバーで過剰なメモリ増加を引き起こす可能性があります。HTTP/2 サーバー接続には、クライアントによって送信された HTTP ヘッダーキーのキャッシュが含まれています。このキャッシュのエントリの合計数には上限がありますが、非常に大きな鍵を送信する攻撃者が、開いている接続ごとにサーバーに約 64 MiB を割り当てる可能性があります。(CVE-2022-41717)

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

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

- テンプレートは、バックティック (`) を 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)

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

ソリューション

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

参考資料

https://ubuntu.com/security/notices/USN-6038-2

プラグインの詳細

深刻度: Critical

ID: 187743

ファイル名: ubuntu_USN-6038-2.nasl

バージョン: 1.1

タイプ: local

エージェント: unix

公開日: 2024/1/9

更新日: 2024/1/9

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

リスク情報

VPR

リスクファクター: Medium

スコア: 6.7

CVSS v2

リスクファクター: Medium

基本値: 5

現状値: 3.9

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

CVSS スコアのソース: CVE-2022-29526

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 スコアのソース: CVE-2023-24538

脆弱性情報

CPE: cpe:/o:canonical:ubuntu_linux:20.04:-:lts, cpe:/o:canonical:ubuntu_linux:22.04:-:lts, cpe:/o:canonical:ubuntu_linux:16.04:-:esm, cpe:/o:canonical:ubuntu_linux:18.04:-:esm, p-cpe:/a:canonical:ubuntu_linux:golang-1.13, p-cpe:/a:canonical:ubuntu_linux:golang-1.13-go, p-cpe:/a:canonical:ubuntu_linux:golang-1.13-src, p-cpe:/a:canonical:ubuntu_linux:golang-1.16, p-cpe:/a:canonical:ubuntu_linux:golang-1.16-go, p-cpe:/a:canonical:ubuntu_linux:golang-1.16-src

必要な KB アイテム: Host/cpu, Host/Debian/dpkg-l, Host/Ubuntu, Host/Ubuntu/release

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

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

パッチ公開日: 2024/1/9

脆弱性公開日: 2022/5/15

参照情報

CVE: CVE-2022-1705, CVE-2022-27664, CVE-2022-28131, CVE-2022-2879, CVE-2022-2880, CVE-2022-29526, CVE-2022-30629, CVE-2022-30630, CVE-2022-30631, CVE-2022-30632, CVE-2022-30633, CVE-2022-30635, CVE-2022-32148, CVE-2022-32189, CVE-2022-41717, CVE-2023-24534, CVE-2023-24537, CVE-2023-24538

USN: 6038-2