Skip to main content

the avatar of Nathan Wolf

Distrobox with BoxBuddy on openSUSE

With immutable Linux distributions becoming a more in vogue these days and the likes of Blend OS and Nix OS giving you incredible package flexibility, I was starting to feel a little left out of all the fun that everyone was talking about. Also, to keep in tradition of being months to years behind everyone […]

a silhouette of a person's head and shoulders, used as a default avatar

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

the avatar of openSUSE News

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 arm64 irq module.
    • Fix for a null-pointer dereference in pgtable_cache_add in 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/boot module.
    • 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, and pidfd_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 malloc and free functions in more cases during TLS access if a shared object with dynamic TLS is loaded and unloaded.
  • 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-exit option 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-cert feature and addition of checks for TLS 1.0 PRF availability, improving security measures.
    • Configuration Clarifications: Clarifications regarding the tls-crypt-v2-verify option 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

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.

a silhouette of a person's head and shoulders, used as a default avatar

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

the avatar of Robert Riemann

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:

  1. download the CA certificate hu-ca-2024.crt1
  2. go to your wifi settings and select eduroam to setup this wifi
  3. use TTLS/PAP (I forgot which one)
  4. add anonymous identity: eduroam@hu-berlin.de
  5. 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)
  6. add as CA certificate the file downloaded before
  7. do not verify this certificate
  8. add as domain: hu-berlin.de

Note that other universities may require other setups.

  1. I have created this certificate file with openssl x509 -inform PEM -outform DER -in CA.pem -out hu-ca-2024.crt using the CA.pem extracted from the eduroam setup for my PC. ↩︎

the avatar of Nathan Wolf

Disable Input Devices in Wayland

Sometimes, hardware breaks and you have to make a modification in software to work around it. Here is one neat little trick I am using, temporarily, for a ThinkPad TrackPoint problem. These directions are going to be directed towards an openSUSE system because, that is what I primarily use but I am pretty certain that […]
a silhouette of a person's head and shoulders, used as a default avatar

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:pcp mode 0775
  • /var/log/pcp owned by pcp:pcp mode 0775

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

the avatar of Nathan Wolf

Gridfinity Screwdriver Rack

One of the coolest discoveries on the Internet that was introduced by the fine folks in the Maker’s Corner Telegram group is Gridfinity. There are a ton of videos buy the creator, Zack Freedman, of the various cool things he has done with it. For more information on that breaks down the philosophy read this […]
the avatar of openSUSE News

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.

the avatar of Nathan Wolf