SUSE SLED15 / SLES15 / openSUSE 15 セキュリティ更新 : gdb (SUSE-SU-2024:4414-1)

medium Nessus プラグイン ID 213379

Language:

概要

リモートの SUSE ホストにセキュリティ更新がありません。

説明

リモートの SUSE Linux SLED15 / SLED_SAP15 / SLES15 / SLES_SAP15 / openSUSE 15 ホストには、SUSE-SU-2024:4414-1 のアドバイザリに記載されている脆弱性の影響を受けるパッケージがインストールされています。

GDB 14 の変更点について:

* GDB は、ZT0 という新しい 512 ビットのルックアップテーブルレジスタを含む AArch64 Scalable Matrix Extension 2 (SME2) をサポートするようになりました。
* GDB は、AArch64 スケーラブルマトリクス拡張 (SME) をサポートするようになりました。これには、ZA という新しいマトリクスレジスタ、新しいスレッドレジスタ TPIDR2、および新しいベクトル長レジスタ SVG (ストリーミングベクトルグラニュル) が含まれています。GDB は、複数のシグナルフレームにわたる ZA 状態の追跡もサポートしています。一部の機能はまだ開発中であるか、まだアルファ段階の ABI 仕様に依存しています。たとえば、ZA 状態の手動関数呼び出しには特別な処理はなく、DWARF 情報に基づく SVG 変更の追跡はまだ実装されていませんが、将来的には実装する予定です。
* GDB が NO_COLOR 環境変数を認識し、仕様に従ってスタイリングを無効にするようになりました。https://no-color.org/.Styling を参照してください。これは、「set styleenabled on」で再度有効化できます。
* AArch64 の「org.gnu.gdb.aarch64.pauth」ポインター認証機能文字列は廃止され、代わりに「org.gnu.gdb.aarch64.pauth_v2」機能文字列が使用されるようになりました。
* GDB は、64 ビットを超える整数タイプを一部サポートするようになりました。
* マルチターゲット機能の設定。
GDB が、リモートターゲットの機能セットの個別の設定をサポートするようになりました。現在のターゲットの選択に基づいて、コマンド「set remote <name>-packet (on|off|auto)」と「show remote <name>-packet」を使用して、それぞれターゲットの機能パケットを設定し、その設定を表示できます。
* GDB には、Debugger Adapter Protocol の初期組み込みサポートがあります。
* break コマンドは、「thread」または「task」キーワードを複数回使用すると、キーワードの最後のインスタンスのスレッドまたはタスク ID を単に使用するのではなく、エラーを返します。例:
break foo thread 1 thread 2 は現在、「thread 2」を使用するのではなく、エラーを返します。
* watch コマンドは、キーワード「task」を複数回使用すると、キーワードの最後のインスタンスのタスク ID を使用するのではなく、エラーを返します。例:
watch my_var task 1 task 2 は現在、「task 2」を使用するのではなく、エラーを返します。「thread」キーワードは、watch コマンドで複数回使用されることですでにエラーを返しており、これは変更されていません。
* 大きな配列を印刷する際に、「set print elements」設定が役立つようになりました。配列が max-value-size を超える場合でも、印刷する要素のサイズが「max-value-size」以下になるように「print elements」が設定されていれば、GDB は配列を印刷しますが、値の履歴には「max-value-size」に相当するデータのみが追加されます。
* break と watch コマンドの両方で、同じコマンド内で「thread」と「task」の両方のキーワードを使用することが無効になりました。
たとえば、次のコマンドはエラーを返すようになりました。
break foo thread 1 task 1 watch var thread 2 task 3
* printf コマンドは、「print」コマンドと同じように式をフォーマットする「%V」出力形式を受け入れるようになりました。印刷オプションは、「%V」の後の「[...]」内に配置して、値の印刷方法を変更できます。例:
printf '%V', some_array printf '%V[-array-indexes on]', some_array は、配列が「print」コマンドで印刷される場合と同様に、配列インデックスを含めずに、または含めて配列を印刷します。
dprintf-style が「gdb」の場合、この機能は dprintf でも利用できます。
* printf コマンドで inferior から文字列をフェッチする必要がある場合、GDB は既存の「max-value-size」設定を使用して、GDB 内で割り当てられるメモリを制限するようになりました。デフォルトの「max-value-size」は 64k です。より長い文字列を印刷するには、「max-value-size」を大きくする必要があります。
* Ada 2022 の Enum_Rep および Enum_Val 属性が現在サポートされています。
* Ada 2022 ターゲット名シンボル (「@」) が Ada 式パーサーでサポートされるようになりました。
* 「list」コマンドが「.」を受け入れるようになりましたこれにより、現在のフレーム内の実行ポイント周辺の場所を印刷するように GDB に指示できます。inferior がまだ開始されていない場合、コマンドは「main」関数の先頭付近を印刷します。
* コマンドがファイルの末尾を超えてリストしようとする状況で引数なしで「list」コマンドを使用すると、ファイルの末尾に達したことをユーザーに警告し、新しく追加された「.」引数を参照するように指示します。
* ブレークポイントは inferior-specific にすることができます。これは、既存のスレッド固有のブレークポイントのサポートに似ています。ブレークポイント条件には、「inferior」キーワードとそれに続く inferior ID (「info inferiors」出力に表示される) を含めることができます。
ブレークポイントの作成時に「inferior」キーワードを「thread」または「task」キーワードのいずれかで使用することは無効です。
* シェルコマンドを実行して結果を返すための、新しい便利な関数「$_shell」。これにより、式でシェルコマンドを実行できます。いくつかの例:
(gdb) p $_shell('true') $1 = 0 (gdb) p $_shell('false') $2 = 1 (gdb) break func if $_shell('some command') == 0
- 新しいコマンド:

* set debug breakpoint on|off show debug breakpoint は、ブレークポイントの挿入と削除に関する追加のデバッグ メッセージを出力します。
* maintenance print record-instruction [ N ] は、指定された命令の記録された情報を印刷します。N が指定されていない場合は、GDB が最後に実行した命令を元に戻す方法を印刷します。N が負の場合、GDB が前の N 番目の命令を元に戻す方法を印刷し、N が正の場合、GDB が次の N 番目の命令をやり直す方法を印刷します。
* maintenance info frame-unwinders は、現在有効なフレームアンワインダーを、優先度の高いものから順に一覧表示します。
* maintenance wait-for-index-cache は、インデックスキャッシュへの保留中の書き込みがすべて完了するまで待機します。
* set always-read-ctf on|off show always-read-ctf では、オフの場合、DWARF が存在しない場合にのみ CTF が読み取られます。オンの場合、DWARF が存在するかどうかにかかわらず、CTF が読み取られます。デフォルトではオフになっています。
* info main は、プログラムへのエントリポイントを識別するためのメインシンボルを取得します。
* set tui mouse-events [on|off] show tui mouse-events では、オン (デフォルト) の場合、マウスクリックで TUI が制御され、Python 拡張機能からアクセスできるようになります。オフの場合、マウスクリックはターミナルで処理され、ターミナルネイティブのテキスト選択が可能になります。

* MI の変更:

* MI バージョン 1 が削除されています。
* mi は、リバース実行履歴の最後に達したときに、停止理由として「no-history」を報告するようになりました。
* 「-p」オプションを使用してスレッド固有のブレークポイントを作成すると、-break-insert コマンドは応答で「thread」フィールドを 2 回報告します。両方のフィールドの内容は常に同じでした。これは現在修正されています。「thread」フィールドは、スレッド固有のブレークポイントに対して 1 回だけ報告され、スレッド制限のないブレークポイントに対してはまったく報告されません。同じことが、Ada タスク固有のブレークポイントの「task」フィールドにも当てはまります。
* 「-break-insert -p ID」を使用して、存在しないスレッドにスレッド固有のブレークポイントを作成することができなくなりました。CLI を使用する際に、存在しないスレッドに対するブレークポイントの作成が許可されません。これは、MI により許可されていた長年のバグでしたが、現在修正されています。
* 「-stack-list-arguments」、「-stack-list-locals」、「-stack-list-variables」、および「-var-list-children」コマンドの '--simple-values' 引数で、参照型が考慮されるようになりました。つまり、値が配列、構造体、または結合体ではなく、配列、構造体、または結合体への参照でもない場合は、その値は単純であると見なされるようになりました。
(以前は、すべての参照は単純であると考えられていました。) この機能のサポートは、「-list-features」コマンドを使用することで検証できます。これには、「simple-values-ref-types」が含まれている必要があります。
* -break-insert コマンドは、inferiorial-specific ブレークポイントの作成を可能にする「-g thread-group-id」オプションを受け入れるようになりました。
* ブレークポイント作成の通知、および -break-insert コマンドの結果に表示される bkpt タプルには、ブレークポイントが inferior 固有である場合に、メインブレークポイントと各場所の両方に対してオプションの「inferior」フィールドを含めることができるようになりました。

* Python API:

* gdb.ThreadExitedEvent が追加されました。ThreadEvent を発行します。
* gdb.unwinder.Unwinder.name 属性は現在読み取り専用です。
* gdb.unwinder.Unwinder.__init__ に渡される名前引数は、「str」タイプでなければなりません。そうでない場合、TypeError が発生します。
* gdb.unwinder.Unwinder.enabled 属性は、「bool」タイプの値のみを受け入れるようになりました。この属性を変更すると、GDB のフレームキャッシュが無効になります。つまり、GDB は次に必要になったときに、「enabled」がどのように変更されたかに応じて、特定のアンワインダーの有無にかかわらず、フレームキャッシュを再構築する必要があります。
* 新しいメソッドが gdb.PendingFrame クラスに追加されました。これらのメソッドの動作は、gdb.Frame の対応するメソッドと同じです。新しいメソッドは次のとおりです。
* gdb.PendingFrame.name: フレームの関数の名前、または None を返します。
* gdb.PendingFrame.is_valid: 保留中のフレームオブジェクトが有効な場合、True を返します。
* gdb.PendingFrame.pc: このフレームの $pc レジスタ値を返します。
* gdb.PendingFrame.language: このフレームの言語を含む文字列、または None を返します。
* gdb.PendingFrame.find_sal: 保留中のフレーム内の現在の場所の gdb.Symtab_and_line オブジェクト、または None を返します。
* gdb.PendingFrame.block: 現在の保留中のフレームの gdb.Block、または None を返します。
* gdb.PendingFrame.function: 現在の保留中のフレームの gdb.Symbol、または None を返します。
* gdb.PendingFrame.create_unwind_info に渡される frame-id は、「sp」、「pc」、「special」の各属性に対して、整数または gdb.Value オブジェクトのいずれかを使用できるようになりました。
* 新しいクラス gdb.unwinder.FrameId が追加されました。このクラスのインスタンスは「sp」(スタックポインター) および「pc」(プログラムカウンター) の値で構築され、gdb.PendingFrame.create_unwind_info を呼び出す際にフレーム ID として使用できます。
* gdb.disassembler.DisassemblerResult タイプをサブクラス化することができなくなりました。
* gdb.disassembler モジュールの Disassembler API が拡張され、スタイルサポートが含まれるようになりました:
* DisassemblerResult クラスは、パーツのリストで初期化できるようになりました。各パートは、関連するスタイル情報とともに逆アセンブルされた命令のパートを表します。このパーツリストには、新しい DisassemblerResult.parts プロパティを使用してアクセスできます。
* 命令の一部が持つ可能性のあるさまざまなスタイルを表す新しい定数 gdb.disassembler.STYLE_*。
* 逆アセンブルされた命令の新しいスタイル部分を作成するために使用される新しいメソッド DisassembleInfo.text_part および DisassembleInfo.address_part。
* 変更には下位互換性がありますが、スタイルなしで命令を逆アセンブルするために、古い API を引き続き使用できます。
* 新しい関数 gdb.execute_mi(COMMAND, [ARG]...)。これは、GDB/MI コマンドを呼び出して、出力を Python 辞書として返します。
* 新しい関数 gdb.block_signals()。これは、GDB が自身で処理する必要があるシグナルをブロックする文脈マネージャーを返します。
* 新しいクラス gdb.Thread。これは、「start」メソッドで gdb.block_signals を呼び出す threading.Thread のサブクラスです。
* gdb.parse_and_eval に新しい「global_context」パラメーターが追加されました。
これは、解析がグローバルシンボルのみを調べるようにリクエストするために使用できます。
* gdb.Inferior に、新しい「arguments」属性が追加されました。これは、inferiorial に対するコマンドライン引数がわかっている場合に保持します。
* gdb.Inferior に、新しい「main_name」属性が追加されました。これは、inferiorable の「main」の名前がわかっている場合に保持します。
* gdb.Inferior に、新しいメソッド「clear_env」、「set_env」、および「unset_env」が追加されました。これらは、開始前に inferior の環境を変更するために使用できます。
* gdb.Value に「assign」メソッドが追加されました。
* gdb.Value に「to_array」メソッドが追加されました。これは配列のような値を配列に変換します。
* gdb.Progspace に、新しいメソッド「objfile_for_address」が追加されました。
指定されたアドレスをカバーする gdb.Objfile がある場合、それを返します。
* gdb.Breakpoint に「inferior」属性が追加されました。ブレークポイントオブジェクトが inferior に固有の場合、この属性は inferior-id (整数) を保持します。ブレークポイントオブジェクトが Inferior API 固有でない場合、このフィールドには None が含まれます。このフィールドは書き込みも可能です。
* gdb.Type に「is_array_like」および「is_string_like」メソッドが追加されました。これらは、対応する型コードがなくても、型が配列類似か文字列類似かに関する GDB の内部概念を反映しています。
* gdb.ValuePrinter は、pretty-printer を適用した結果の基本クラスとして使用できる新しいクラスです。基本クラスとして、プリンターが新しい pretty-printer メソッドを実装する可能性があることを gdb に通知します。
* 新しい属性 Progspace.symbol_file。この属性は、Progspace.filename に対応する gdb.Objfile を保持します (Progspace.filename が None でない場合)。それ以外の場合は、この属性自体が None になります。
* 新しい属性 Progspace.executable_filename。この属性は、「exec-file」または「file」コマンドで設定されたファイル名を含む文字列を保持します。実行可能ファイルが設定されていない場合は None です。
これは、ユーザーがこれらのコマンドに渡す文字列と完全に一致するわけではありません。ファイル名は、絶対ファイル名に部分的に解決されています。
* 新しい executable_changed イベントレジストリが利用可能です。このイベントは、「progspace」(gdb.Progspace) および「reload」(ブール値) 属性を持つ ExecutableChangedEvent オブジェクトを発行します。このイベントは、gdb.Progspace.executable_filename が変更されたときに発行されます。
* 新しいイベントレジストリ gdb.events.new_progspace および gdb.events.free_progspace。これらはそれぞれ NewProgspaceEvent および FreeProgspaceEvent イベントタイプを発行します。これらのイベントタイプは両方とも、単一の「progspace」属性を持ちます。これは、GDB に追加されるか、GDB から削除される gdb.Progspace です。
* gdb.LazyString は __str__ メソッドを実装するようになりました。
* ネスト化された関数フレームの外側のフレームを返す新しいメソッド gdb.Frame.static_link。

Tenable は、前述の記述ブロックを SUSE セキュリティアドバイザリから直接抽出しています。

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

ソリューション

影響を受ける gdb、gdb-testresults、および/または gdbserver パッケージを更新してください。

参考資料

https://bugzilla.suse.com/1220490

http://www.nessus.org/u?51288fa4

https://www.suse.com/security/cve/CVE-2022-48064

プラグインの詳細

深刻度: Medium

ID: 213379

ファイル名: suse_SU-2024-4414-1.nasl

バージョン: 1.1

タイプ: local

エージェント: unix

公開日: 2024/12/24

更新日: 2024/12/24

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

リスク情報

VPR

リスクファクター: Medium

スコア: 4.4

CVSS v2

リスクファクター: Medium

基本値: 4.9

現状値: 3.8

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

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

CVSS v3

リスクファクター: Medium

基本値: 5.5

現状値: 5

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

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

脆弱性情報

CPE: p-cpe:/a:novell:suse_linux:gdb, p-cpe:/a:novell:suse_linux:gdbserver, cpe:/o:novell:suse_linux:15

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

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

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

パッチ公開日: 2024/12/23

脆弱性公開日: 2023/8/22

参照情報

CVE: CVE-2022-48064

SuSE: SUSE-SU-2024:4414-1