Amazon Linux 2023 : golang、golang-bin、golang-misc (ALAS2023-2023-175)

critical Nessus プラグイン ID 175071

概要

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

説明

したがって、ALAS2023-2023-175 のアドバイザリに記載されている複数の脆弱性の影響を受けます。

- Go の 1.16.14より前および 1.17.7より前の 1.17.xの math/big の Rat.SetString には、オーバーフローがあり、制御されないメモリ消費が発生する可能性があります。 (CVE-2022-23772)

- Go の 1.16.14より前および 1.17.7より前の 1.17.xの cmd/go は、バージョンタグのように偽装して表示されるブランチ名を誤って解釈する可能性があります。これにより、アクターがブランチは作成できるが、タグは作成できないと想定されている場合、不適切なアクセスコントロールが発生する可能性があります。(CVE-2022-23773)

-Go の 1.16.14および 1.17.7より前の1.17.x の crypto/elliptic の Curve.IsOnCurve が、有効なフィールド要素ではない big.Int 値を持つ状況で、誤って true を返す可能性があります。(CVE-2022-23806)

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

- Go 1.17.11 および Go 1.18.3 より前の os/exec の Cmd.Start でのコードインジェクションにより、Cmd.Path が設定されていない場合に Cmd.Run、Cmd.Start、Cmd.Output、または Cmd.CombinedOutput を呼び出すことにより、.. com または ..exe という名前の作業ディレクトリで任意のバイナリを実行することが可能です。(CVE-2022-30580)

- Windows の Go 1.17.11 および Go 1.18.3 より前の crypto/rand における Read の無限ループにより、攻撃者が 1 << 32-1 バイトより大きいバッファを渡すことで、無限ハングを引き起こす可能性があります。(CVE-2022-30634)

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

- Windows の filepath.Clean にパストラバーサルの脆弱性があります。Windows では、filepath.Clean 関数が a/../c:/b などの無効なパスを有効なパス c:\b に変換する可能性があります。このように相対パス (無効な場合) を絶対パスに変換することで、ディレクトリトラバーサル攻撃が可能になる可能性があります。修正後、filepath.Clean 関数はこのパスを相対 (ただし無効な) パスに変換します。\c:\b。(CVE-2022-41722)

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

- 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)

P256 Curve の ScalarMult および ScalarBaseMult メソッドは、ある特定の非還元スカラー (曲線の次数より大きなスカラー) を使用して呼び出された場合、不適切な結果を返す場合があります。これは、crypto/ecdsa または crypto/ecdh の使用には影響を与えません。(CVE-2023-24532)

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

- マルチパートフォーム解析は、非常に多数のパーツを含むフォーム入力を処理する際に、大量の 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)

- 非常に大きな行番号の //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 はこれらの問題をテストしておらず、代わりにアプリケーションの自己報告されたバージョン番号にのみ依存しています。

ソリューション

「dnf update golang --releasever 2023.0.20230503」を実行してシステムを更新してください。

参考資料

https://alas.aws.amazon.com/cve/html/CVE-2022-23806.html

https://alas.aws.amazon.com/cve/html/CVE-2022-2880.html

https://alas.aws.amazon.com/cve/html/CVE-2022-30580.html

https://alas.aws.amazon.com/cve/html/CVE-2022-30634.html

https://alas.aws.amazon.com/cve/html/CVE-2022-41717.html

https://alas.aws.amazon.com/cve/html/CVE-2022-41722.html

https://alas.aws.amazon.com/cve/html/CVE-2022-41724.html

https://alas.aws.amazon.com/cve/html/CVE-2022-41725.html

https://alas.aws.amazon.com/cve/html/CVE-2023-24532.html

https://alas.aws.amazon.com/cve/html/CVE-2023-24534.html

https://alas.aws.amazon.com/cve/html/CVE-2023-24536.html

https://alas.aws.amazon.com/cve/html/CVE-2023-24537.html

https://alas.aws.amazon.com/cve/html/CVE-2023-24538.html

https://alas.aws.amazon.com/faqs.html

https://alas.aws.amazon.com/AL2023/ALAS-2023-175.html

https://alas.aws.amazon.com/cve/html/CVE-2022-23772.html

https://alas.aws.amazon.com/cve/html/CVE-2022-23773.html

プラグインの詳細

深刻度: Critical

ID: 175071

ファイル名: al2023_ALAS2023-2023-175.nasl

バージョン: 1.2

タイプ: local

エージェント: unix

公開日: 2023/5/3

更新日: 2023/5/4

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

リスク情報

VPR

リスクファクター: Medium

スコア: 6.7

CVSS v2

リスクファクター: Medium

基本値: 6.4

現状値: 5

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

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

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: p-cpe:/a:amazon:linux:golang-race, p-cpe:/a:amazon:linux:golang-shared, p-cpe:/a:amazon:linux:golang-src, p-cpe:/a:amazon:linux:golang-tests, cpe:/o:amazon:linux:2023, p-cpe:/a:amazon:linux:golang, p-cpe:/a:amazon:linux:golang-bin, p-cpe:/a:amazon:linux:golang-docs, p-cpe:/a:amazon:linux:golang-misc

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

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

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

パッチ公開日: 2023/4/27

脆弱性公開日: 2022/2/11

参照情報

CVE: CVE-2022-23772, CVE-2022-23773, CVE-2022-23806, CVE-2022-2880, CVE-2022-30580, CVE-2022-30634, CVE-2022-41717, CVE-2022-41722, CVE-2022-41724, CVE-2022-41725, CVE-2023-24532, CVE-2023-24534, CVE-2023-24536, CVE-2023-24537, CVE-2023-24538

IAVB: 2022-B-0008-S, 2022-B-0042-S, 2022-B-0059-S, 2023-B-0022-S