SUSE SLES15 Security Update : gdb (SUSE-SU-2024:4413-1)

medium Nessus Plugin ID 213380

Language:

Synopsis

The remote SUSE host is missing a security update.

Description

The remote SUSE Linux SLES15 / SLES_SAP15 host has packages installed that are affected by a vulnerability as referenced in the SUSE-SU-2024:4413-1 advisory.

Mention changes in GDB 14:

* GDB now supports the AArch64 Scalable Matrix Extension 2 (SME2), which includes a new 512 bit lookup table register named ZT0.
* GDB now supports the AArch64 Scalable Matrix Extension (SME), which includes a new matrix register named ZA, a new thread register TPIDR2 and a new vector length register SVG (streaming vector granule). GDB also supports tracking ZA state across signal frames. Some features are still under development or are dependent on ABI specs that are still in alpha stage. For example, manual function calls with ZA state don't have any special handling, and tracking of SVG changes based on DWARF information is still not implemented, but there are plans to do so in the future.
* GDB now recognizes the NO_COLOR environment variable and disables styling according to the spec. See https://no-color.org/. Styling can be re-enabled with 'set style enabled on'.
* The AArch64 'org.gnu.gdb.aarch64.pauth' Pointer Authentication feature string has been deprecated in favor of the 'org.gnu.gdb.aarch64.pauth_v2' feature string.
* GDB now has some support for integer types larger than 64 bits.
* Multi-target feature configuration.
GDB now supports the individual configuration of remote targets' feature sets. Based on the current selection of a target, the commands 'set remote <name>-packet (on|off|auto)' and 'show remote <name>-packet' can be used to configure a target's feature packet and to display its configuration, respectively.
* GDB has initial built-in support for the Debugger Adapter Protocol.
* For the break command, multiple uses of the 'thread' or 'task' keywords will now give an error instead of just using the thread or task id from the last instance of the keyword. E.g.:
break foo thread 1 thread 2 will now give an error rather than using 'thread 2'.
* For the watch command, multiple uses of the 'task' keyword will now give an error instead of just using the task id from the last instance of the keyword. E.g.:
watch my_var task 1 task 2 will now give an error rather than using 'task 2'. The 'thread' keyword already gave an error when used multiple times with the watch command, this remains unchanged.
* The 'set print elements' setting now helps when printing large arrays. If an array would otherwise exceed max-value-size, but 'print elements' is set such that the size of elements to print is less than or equal to 'max-value-size', GDB will now still print the array, however only 'max-value-size' worth of data will be added into the value history.
* For both the break and watch commands, it is now invalid to use both the 'thread' and 'task' keywords within the same command.
For example the following commnds will now give an error:
break foo thread 1 task 1 watch var thread 2 task 3
* The printf command now accepts a '%V' output format which will format an expression just as the 'print' command would. Print options can be placed withing '[...]' after the '%V' to modify how the value is printed. E.g:
printf '%V', some_array printf '%V[-array-indexes on]', some_array will print the array without, or with array indexes included, just as the array would be printed by the 'print' command.
This functionality is also available for dprintf when dprintf-style is 'gdb'.
* When the printf command requires a string to be fetched from the inferior, GDB now uses the existing 'max-value-size' setting to the limit the memory allocated within GDB. The default 'max-value-size' is 64k. To print longer strings you should increase 'max-value-size'.
* The Ada 2022 Enum_Rep and Enum_Val attributes are now supported.
* The Ada 2022 target name symbol ('@') is now supported by the Ada expression parser.
* The 'list' command now accepts '.' as an argument, which tells GDB to print the location around the point of execution within the current frame. If the inferior hasn't started yet, the command will print around the beginning of the 'main' function.
* Using the 'list' command with no arguments in a situation where the command would attempt to list past the end of the file now warns the user that the end of file has been reached, refers the user to the newly added '.' argument
* Breakpoints can now be inferior-specific. This is similar to the existing thread-specific breakpoint support. Breakpoint conditions can include the 'inferior' keyword followed by an inferior id (as displayed in the 'info inferiors' output).
It is invalid to use the 'inferior' keyword with either the 'thread' or 'task' keywords when creating a breakpoint.
* New convenience function '$_shell', to execute a shell command and return the result. This lets you run shell commands in expressions. Some examples:
(gdb) p $_shell('true') $1 = 0 (gdb) p $_shell('false') $2 = 1 (gdb) break func if $_shell('some command') == 0
* New commands:

* set debug breakpoint on|off show debug breakpoint Print additional debug messages about breakpoint insertion and removal.
* maintenance print record-instruction [ N ] Print the recorded information for a given instruction. If N is not given prints how GDB would undo the last instruction executed. If N is negative, prints how GDB would undo the N-th previous instruction, and if N is positive, it prints how GDB will redo the N-th following instruction.
* maintenance info frame-unwinders List the frame unwinders currently in effect, starting with the highest priority.
* maintenance wait-for-index-cache Wait until all pending writes to the index cache have completed.
* set always-read-ctf on|off show always-read-ctf When off, CTF is only read if DWARF is not present. When on, CTF is read regardless of whether DWARF is present. Off by default.
* info main Get main symbol to identify entry point into program.
* set tui mouse-events [on|off] show tui mouse-events When on (default), mouse clicks control the TUI and can be accessed by Python extensions. When off, mouse clicks are handled by the terminal, enabling terminal-native text selection.

* MI changes:

* MI version 1 has been removed.
* mi now reports 'no-history' as a stop reason when hitting the end of the reverse execution history.
* When creating a thread-specific breakpoint using the '-p' option, the -break-insert command would report the 'thread' field twice in the reply. The content of both fields was always identical. This has now been fixed; the 'thread' field will be reported just once for thread-specific breakpoints, or not at all for breakpoints without a thread restriction. The same is also true for the 'task' field of an Ada task-specific breakpoint.
* It is no longer possible to create a thread-specific breakpoint for a thread that doesn't exist using '-break-insert -p ID'. Creating breakpoints for non-existent threads is not allowed when using the CLI, that the MI allowed it was a long standing bug, which has now been fixed.
* The '--simple-values' argument to the '-stack-list-arguments','-stack-list-locals', '-stack-list-variables', and '-var-list-children' commands now takes reference types into account: that is, a value is now considered simple if it is neither an array, structure, or union, nor a reference to an array, structure, or union.
(Previously all references were considered simple.) Support for this feature can be verified by using the '-list-features' command, which should contain 'simple-values-ref-types'.
* The -break-insert command now accepts a '-g thread-group-id' option to allow for the creation of inferior-specific breakpoints.
* The bkpt tuple, which appears in breakpoint-created notifications, and in the result of the -break-insert command can now include an optional 'inferior' field for both the main breakpoint, and each location, when the breakpoint is inferior-specific.

* Python API:

* gdb.ThreadExitedEvent added. Emits a ThreadEvent.
* The gdb.unwinder.Unwinder.name attribute is now read-only.
* The name argument passed to gdb.unwinder.Unwinder.__init__ must now be of type 'str' otherwise a TypeError will be raised.
* The gdb.unwinder.Unwinder.enabled attribute can now only accept values of type 'bool'. Changing this attribute will now invalidate GDB's frame-cache, which means GDB will need to rebuild its frame-cache when next required - either with, or without the particular unwinder, depending on how 'enabled' was changed.
* New methods added to the gdb.PendingFrame class. These methods have the same behaviour as the corresponding methods on gdb.Frame. The new methods are:
* gdb.PendingFrame.name: Return the name for the frame's function, or None.
* gdb.PendingFrame.is_valid: Return True if the pending frame object is valid.
* gdb.PendingFrame.pc: Return the $pc register value for this frame.
* gdb.PendingFrame.language: Return a string containing the language for this frame, or None.
* gdb.PendingFrame.find_sal: Return a gdb.Symtab_and_line object for the current location within the pending frame, or None.
* gdb.PendingFrame.block: Return a gdb.Block for the current pending frame, or None.
* gdb.PendingFrame.function: Return a gdb.Symbol for the current pending frame, or None.
* The frame-id passed to gdb.PendingFrame.create_unwind_info can now use either an integer or a gdb.Value object for each of its 'sp', 'pc', and 'special' attributes.
* A new class gdb.unwinder.FrameId has been added. Instances of this class are constructed with 'sp' (stack-pointer) and 'pc' (program-counter) values, and can be used as the frame-id when calling gdb.PendingFrame.create_unwind_info.
* It is now no longer possible to sub-class the gdb.disassembler.DisassemblerResult type.
* The Disassembler API from the gdb.disassembler module has been extended to include styling support:
* The DisassemblerResult class can now be initialized with a list of parts. Each part represents part of the disassembled instruction along with the associated style information. This list of parts can be accessed with the new DisassemblerResult.parts property.
* New constants gdb.disassembler.STYLE_* representing all the different styles part of an instruction might have.
* New methods DisassembleInfo.text_part and DisassembleInfo.address_part which are used to create the new styled parts of a disassembled instruction.
* Changes are backwards compatible, the older API can still be used to disassemble instructions without styling.
* New function gdb.execute_mi(COMMAND, [ARG]...), that invokes a GDB/MI command and returns the output as a Python dictionary.
* New function gdb.block_signals(). This returns a context manager that blocks any signals that GDB needs to handle itself.
* New class gdb.Thread. This is a subclass of threading.Thread that calls gdb.block_signals in its 'start' method.
* gdb.parse_and_eval now has a new 'global_context' parameter.
This can be used to request that the parse only examine global symbols.
* gdb.Inferior now has a new 'arguments' attribute. This holds the command-line arguments to the inferior, if known.
* gdb.Inferior now has a new 'main_name' attribute. This holds the name of the inferior's 'main', if known.
* gdb.Inferior now has new methods 'clear_env', 'set_env', and 'unset_env'. These can be used to modify the inferior's environment before it is started.
* gdb.Value now has the 'assign' method.
* gdb.Value now has the 'to_array' method. This converts an array-like Value to an array.
* gdb.Progspace now has the new method 'objfile_for_address'.
This returns the gdb.Objfile, if any, that covers a given address.
* gdb.Breakpoint now has an 'inferior' attribute. If the Breakpoint object is inferior specific then this attribute holds the inferior-id (an integer). If the Breakpoint object is not inferior specific, then this field contains None. This field can be written too.
* gdb.Type now has the 'is_array_like' and 'is_string_like' methods. These reflect GDB's internal idea of whether a type might be array- or string-like, even if they do not have the corresponding type code.
* gdb.ValuePrinter is a new class that can be used as the base class for the result of applying a pretty-printer. As a base class, it signals to gdb that the printer may implement new pretty-printer methods.
* New attribute Progspace.symbol_file. This attribute holds the gdb.Objfile that corresponds to Progspace.filename (when Progspace.filename is not None), otherwise, this attribute is itself None.
* New attribute Progspace.executable_filename. This attribute holds a string containing a file name set by the 'exec-file' or 'file' commands, or None if no executable file is set.
This isn't the exact string passed by the user to these commands; the file name will have been partially resolved to an absolute file name.
* A new executable_changed event registry is available. This event emits ExecutableChangedEvent objects, which have 'progspace' (a gdb.Progspace) and 'reload' (a Boolean) attributes. This event is emitted when gdb.Progspace.executable_filename changes.
* New event registries gdb.events.new_progspace and gdb.events.free_progspace, these emit NewProgspaceEvent and FreeProgspaceEvent event types respectively. Both of these event types have a single 'progspace' attribute, which is the gdb.Progspace that is either being added to GDB, or removed from GDB.
* gdb.LazyString now implements the __str__ method.
* New method gdb.Frame.static_link that returns the outer frame of a nested function frame.

Tenable has extracted the preceding description block directly from the SUSE security advisory.

Note that Nessus has not tested for this issue but has instead relied only on the application's self-reported version number.

Solution

Update the affected gdb and / or gdbserver packages.

See Also

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

https://bugzilla.suse.com/1220490

http://www.nessus.org/u?2885010f

Plugin Details

Severity: Medium

ID: 213380

File Name: suse_SU-2024-4413-1.nasl

Version: 1.1

Type: local

Agent: unix

Published: 12/24/2024

Updated: 12/24/2024

Supported Sensors: Frictionless Assessment AWS, Frictionless Assessment Azure, Frictionless Assessment Agent, Nessus Agent, Agentless Assessment, Continuous Assessment, Nessus

Risk Information

VPR

Risk Factor: Medium

Score: 4.4

CVSS v2

Risk Factor: Medium

Base Score: 4.9

Temporal Score: 3.8

Vector: CVSS2#AV:L/AC:L/Au:N/C:N/I:N/A:C

CVSS Score Source: CVE-2022-48064

CVSS v3

Risk Factor: Medium

Base Score: 5.5

Temporal Score: 5

Vector: CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H

Temporal Vector: CVSS:3.0/E:P/RL:O/RC:C

Vulnerability Information

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

Required KB Items: Host/local_checks_enabled, Host/cpu, Host/SuSE/release, Host/SuSE/rpm-list

Exploit Available: true

Exploit Ease: Exploits are available

Patch Publication Date: 12/23/2024

Vulnerability Publication Date: 8/22/2023

Reference Information

CVE: CVE-2022-48064

SuSE: SUSE-SU-2024:4413-1