Skip to main content

the avatar of Federico Mena-Quintero

Outreachy internship for librsvg, December 2024

I am delighted to announce that I am mentoring Adetoye Anointing for the December 2024 round of Outreachy. Anointing will be working on librsvg, on implementing the SVG2 text layout algorithm. This is his first blog post about the internship.

There is a lot of work to do! Text layout is a complex topic, so rather than just saying, "go read the spec and write the code", Anointing and I have decided to have a little structure to our interactions:

  • We are having two video calls a week.

  • During the calls, I'm sharing my screen to walk him through the code.

  • I'm using my friend Abrahm's Pizarra and a Wacom tablet to have a "digital chalkboard" where I can quickly illustrate explanations while Anointing and I chat:

Screenshot of Pizarra, an electronic blackboard

  • Conveniently, Pizarra also produces SVG files from whatever you doodle in it, so it's easier to include the drawings in other documents.

  • We are using a shared document in pad.gnome.org as a development journal. Here I can write long explanations, leave homework, link to stuff, etc. Anointing can put in his own annotations, questions, or anything else. I'm hoping that this works better than scrolling through a Matrix chat channel.

I have big hopes for this project. Please welcome Anointing if you see him around the Rust ♥️ GNOME channel!

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

Tumbleweed – Review of the week 2024/50

Dear Tumbleweed users and hackers,

As the end of the year approaches, many contributors are busy in their private lives. Depending on where they are, some might go skiing, some will use the time to visit friends and families, and others will use their free time to contribute to Tumbleweed. Whatever everybody decides to do during this time, do it with a lot of fun! For week 50 at least, people are still around and busy as we could publish 6 snapshots (1205, 1206, 1208, 1209, 1210, and 1211)

The most relevant updates/changes delivered as part of those snapshots were:

  • Qt 6.8.1
  • liibvirt 10.10.0
  • Xen 4.19.1
  • Mesa 24.3.1
  • Python 3.11.11
  • LLVM 19.1.5
  • libeconf 0.7.5
  • GStreamer 1.24.10

In the staging area, we currently see these items tested: depending on the people still working on those items, they might be delivered during this year or early next year

  • Ruby 3.4 (Release date upstream is December 25); we currently test RC1
  • KDE Gear 24.12.0
  • Linux kernel 6.12.4
  • Systemd 257
  • Rails 8.0

the avatar of openSUSE News

Choosing Better Alternatives Amid Confusing Policies

A recent back-and-forth on Windows 11’s hardware requirements and the end-of-life timeline for Windows 10 leaves millions of users frustrated and uncertain about their next steps.

With millions of PCs being labeled by mainstream media as becoming obsolete and potential extended security updates costing users even more, the need for a reliable and sustainable alternative has never been greater.

Linux distributions like openSUSE offer a clear and practical solution. It eliminates the risks of vendor lock-in and avoids the pitfalls of Microsoft’s opaque and ever-changing policies.

The recent uncertainty around Microsoft’s policies underscores the challenges of depending on a company that prioritizes profits over a user’s fundamental needs, which is the ability to use their existing hardware and software effectively.

Microsoft initially doubled down on strict hardware requirements for Windows 11, requiring Trusted Platform Module (TPM) 2.0. In a surprising reversal, the company issued instructions for installing Windows 11 on incompatible PCs, which can leave users even more confused.

This apparent change now is undermined by caveats like updates may not be available for unsupported PCs, and the company has openly warned that such installations could lead to system malfunctions. For many, the message is clear; Upgrade to Freedom! Upgrade to openSUSE!

Microsoft deserves some credit for extending some support, avoiding responsibility for one of the largest preventable e-waste surges in history caused by a software upgrade. However, these efforts do little to address the broader challenges impacting millions of users and the wider consequences for consumers and the environment.

The case for Linux and openSUSE is clear. Linux provides viable, cost-effective and sustainable alternatives. Users can enjoy a free, open-source operating system that doesn’t require costly upgrades or restrictive hardware requirements with installing openSUSE. Here are a few things users that want to transition can consider:

  • Complete Transparency: Linux distributions like openSUSE are governed by open-source principles, ensuring clear and consistent development.
  • No Forced Obsolescence: openSUSE supports a wide range of hardware like modern machines to older PCs that allow users to extend the life of their devices.
  • Cost Savings: openSUSE is free to use, with no licensing fees or hidden subscription costs for extended support.

By switching to Linux, users can help combat e-waste as every PC saved from a landfill is a win for the environment.

Transitioning to Linux is easier than people think and openSUSE is one of the most user-friendly distributions that provides comprehensive tools for installation and configuration.

  • Back Up Your Data: Safeguard important files before transitioning.
  • Download openSUSE: Visit get.opensuse.org to choose between Leap (stable, less updates) or Tumbleweed (rolling updates, several).
  • Install openSUSE: Create a bootable USB and follow the guided installation process.
  • Explore Applications: Discover free alternatives to popular software, such as LibreOffice for productivity, GIMP for image editing, and Steam for gaming.

Take control of your tech future and embrace the ability to Upgrade to Freedome with openSUSE. Your next step is just a click away - get.opensuse.org.

This is part of a series on Upgrade to Freedom where we offer reasons to transition from Windows to Linux.

the avatar of openSUSE News

Linux, openSUSE ready for Everyday Users

Most people don’t give much thought to their operating system, but with Windows 10 support ending in October 2025, many will start searching for alternatives that keep them secure without spending more than $100 for a software upgrade or on hardware that still works perfectly.

User-friendly Linux distribution like openSUSE and others offer an excellent solution for everyday tasks like social media, video conferencing, web browsing and more.

If you’re a casual computer user wondering whether you can accomplish the same tasks on Linux that you’ve been doing on Windows, the answer is a resounding YES!

From messaging apps like Telegram to video conferencing with Zoom, openSUSE has you covered. This guide will show you how easy it is to get started with Linux and continue using the apps and tools you’re familiar with.

Get the below applications as a Flatpak in the software center of your desktop environment.

Web Browsing: Chrome, Firefox, Brave, and More

Browsing the web on Linux is just as simple as it is on Windows or macOS. openSUSE supports a wide range of web browsers, including some of the most popular names in the market.

  • Mozilla Firefox comes pre-installed with most Linux distributions, including openSUSE. It’s fast, privacy-focused, and supports all major web standards, making it perfect for everything from casual browsing to online shopping and video streaming.
  • Google Chrome is available on Linux and can be installed easily on openSUSE. If you’re used to Chrome’s features, including syncing bookmarks and settings across devices, you’ll feel right at home.
  • Brave is another great option for privacy-conscious users. It blocks trackers and ads by default and gives people a fast and secure browsing experience. Brave is also easy to install on openSUSE. All these browsers support extensions and features you’re already familiar with, so switching to Linux won’t feel like a big leap.

Social Media Apps: Telegram, Discord, and More

Staying connected on social media is easy, especially getting your favorite apps for messaging, video calls and group chats. Whether as a native downloadable app or as Flatpak app, you will hardly know a difference.

  • Telegram is available for Linux and can be installed directly from the openSUSE software repositories. It works just like the version you’re used to. It allows you to chat, make voice calls and share media with your contacts.
  • Discord, a popular platform for gamers and communities, this also works seamlessly on Linux. You can download the Linux version from the Discord website or install it as a Flatpak for easy updates. Whether you’re chatting with friends or joining online communities, Discord on openSUSE is just as powerful as its Windows counterpart.
  • Signal, a privacy-focused messaging app, is available for Linux and ensures that your chats are secure with end-to-end encryption. It’s a great alternative to WhatsApp for privacy-conscious users.

Video Conferencing: Zoom and Alternatives

Video conferencing has become a staple for work and personal use, and openSUSE has strong support for popular platforms like Zoom and others.

  • Zoom offers a Linux version that works just like the Windows app. You can download it from Zoom’s official website or use the Flatpak version. Whether you’re attending work meetings, online classes or virtual hangouts with friends, Zoom on openSUSE is fully functional and reliable.

  • Jitsi Meet is a free, open-source alternative to Zoom that doesn’t require any installation. You can use it directly from your web browser. The project even uses it for its online bar making it a quick and easy option for video conferencing without the need for additional software. Visit the openSUSE Bar and the may be some people there ready to explain how easy it is to move to Linux.
  • Google Meet and Microsoft Teams are also fully supported on Linux via web browsers like Chrome or Firefox, so you can join meetings without any issues. There is even an unofficial Flatpak app for Teams.

Email: Thunderbird, Evolution, and More

Managing your email is easy through the browser or on with several great apps to choose from.

  • Mozilla Thunderbird is a popular email client that comes pre-installed on many Linux distributions, including openSUSE. It supports multiple email accounts, calendars and task management, which makes it great for everyday use.
  • Evolution is another feature-rich email client that supports Microsoft Exchange, Google accounts, and more. It’s an option if you need advanced email, calendar, and task management features.
  • Gmail, Outlook, and other web-based email services are fully accessible via your preferred browser, just as they are on Windows.

Streaming and Multimedia: Spotify, VLC and More

Linux supports popular platforms for streaming music, videos and other media.

  • Spotify has an official Linux client that you can install on openSUSE. It works the same as it does on other operating systems, giving you access to your playlists, podcasts and favorite music.
  • VLC Media Player is the go-to app for playing virtually any media file. Whether you’re watching movies, TV shows or home videos, VLC’s powerful playback features make it a top choice on a Linux distribution.
  • YouTube and other streaming services, such as Netflix, Hulu, and Disney+, are fully supported on Linux via web browsers like Chrome or Firefox.

File Sharing and Cloud Storage: Dropbox, Google Drive, and Nextcloud

Managing your files and cloud storage is simple on openSUSE.

  • Nextcloud is a popular open-source alternative to commercial cloud storage services. It allows you to host your own cloud storage solution, giving you full control over your files.
  • Dropbox has a Linux client that integrates seamlessly with your desktop and allows you to sync files just as you would on Windows or macOS.
  • Google Drive can be accessed through the web browser.

How to Install

Users transitioning from Windows 10 to openSUSE should know it has the same functionality for common tasks like browsing, messaging, video conferencing, and media streaming, but without the need for expensive hardware and software upgrades. Here is an easy step-by-step guide to downloading software on your openSUSE Linux distribution:

KDE Plasma: Using Discover Software Center

KDE Plasma’s default software center is called Discover, which provides an easy way to search for and install applications.

Plasma Step 1: Open Discover

  1. Click on the Application Launcher (bottom-left corner of your screen, represented by a green chameleon logo or KDE logo).
  2. Type Discover in the search bar, and click on the Discover app to open it.

Plasma Step 2: Search for Software

  1. Once Discover is open, you’ll see a search bar at the top.
  2. Type the name of the software you’re looking for, such as “Firefox,” “Telegram,” or “Zoom.”

Plasma Step 3: Install the Application

  1. Click on the application from the search results.
  2. Click the Install button.
  3. Wait for the installation process to complete. Once done, the Install button will change to Launch.

Plasma Step 4: Launch the Application

  1. You can launch the newly installed application from the Discover window by clicking Launch, or find it in your Application Launcher.

GNOME: Using GNOME Software Center

GNOME’s default software center is called GNOME Software, which functions similarly to an app store.

GNOME Step 1: Open GNOME Software

  1. Click on Activities in the top-left corner of your screen.
  2. Type Software in the search bar, and click on GNOME Software to open it.

GNOME Step 2: Search for Software

  1. At the top of the GNOME Software window, there’s a search bar.
  2. Type the name of the software you want to install, such as “Brave,” “Signal,” or “Spotify.”

GNOME Step 3: Install the Application

  1. Select the application from the search results.
  2. Click the Install button.
  3. GNOME Software will handle the download and installation. Once finished, you can launch the app directly from the software center.

GNOME Step 4: Launch the Application

  1. After installation, you can click the Launch button in the software center, or find the app in the Activities overview by searching for it.

Whether you’re using KDE Plasma or GNOME, installing software on openSUSE is straightforward with the software centers. Both Discover (KDE) and GNOME Software provide user-friendly interfaces that allow you to search for, install, and manage your applications just like you would in an app store. This makes it easy for users transitioning from Windows 10 to feel comfortable using their new Linux system for everyday tasks.

This is part of a series on Upgrade to Freedom where we offer reasons to transition from Windows to Linux.

the avatar of openSUSE News

Users of

Users of openSUSE can now rely on the built-in switcherooctl tool for GPU switching, which is already integrated into our distributions with major desktop environments like GNOME and KDE Plasma.

This is a game changer because it eliminates the need for additional tools and simplifies multi-GPU management while enhancing compatibility and performance with users’ systems.

For years, tools such as suse-prime and bbswitch have been staples in managing NVIDIA Optimus laptops and multi-GPU systems, but advancements in kernel drivers and desktop environments have made these tools unnecessary in most cases.

Installations of openSUSE now handle these configurations out of the box, whether using the open-source Nouveau driver or NVIDIA’s proprietary drivers.

In a recent update on multi-GPU systems, users are encouraged to move away from legacy tools like suse-prime, bbswitch, and bumblebee, as they can cause more harm than good on modern systems.

The recommended solution is switcherooctl, which is a lightweight userspace utility designed to manage GPU switching on systems with multiple GPUs. It integrates well with Wayland and Xorg; its functionality extends across both Intel + NVIDIA and AMD + NVIDIA setups. By using switcherooctl, users can easily select which GPU to use for specific applications and eliminate the need for complex scripts or environment variables.

Benefits of switcherooctl

  • Seamless Integration: Unlike older tools, switcherooctl is designed to work natively with modern Linux systems and desktop environments. This ensures a smoother user experience without requiring complex configurations.

  • Improved Performance: Users can specify which GPU to use for specific tasks, so switcherooctl enables optimal performance. Compute-heavy applications, such as gaming or 3D rendering, can utilize the discrete GPU, while less intensive tasks default to the integrated GPU to save power.

  • Enhanced Power Management: Switching back to the integrated GPU when the discrete GPU is not needed conserves battery life and makes it ideal for laptops and portable systems.

  • Wayland and Xorg Compatibility: With increasing adoption of Wayland, having a tool that supports both Wayland and Xorg ensures compatibility across a broad range of systems and setups.

  • Cross-Vendor Support: The Intel + NVIDIA or AMD + NVIDIA configuration make the systems more versatile for all users.

Users should being embracing switcherooctl for multi-GPU management as some of the older tools like suse-prime, bbswitch and bumblebee are likely to be phased out.

the avatar of openSUSE News

GPU Switching: A Multi-GPU Game Changer

Users of openSUSE can now rely on the built-in switcherooctl tool for GPU switching, which is already integrated into our distributions with major desktop environments like GNOME and KDE Plasma.

This is a game changer because it eliminates the need for additional tools and simplifies multi-GPU management while enhancing compatibility and performance with users’ systems.

For years, tools such as suse-prime and bbswitch have been staples in managing NVIDIA Optimus laptops and multi-GPU systems, but advancements in kernel drivers and desktop environments have made these tools unnecessary in most cases.

Installations of openSUSE now handle these configurations out of the box, whether using the open-source Nouveau driver or NVIDIA’s proprietary drivers.

In a recent update on multi-GPU systems, users are encouraged to move away from legacy tools like suse-prime, bbswitch, and bumblebee, as they can cause more harm than good on modern systems.

The recommended solution is switcherooctl, which is a lightweight userspace utility designed to manage GPU switching on systems with multiple GPUs. It integrates well with Wayland and Xorg; its functionality extends across both Intel + NVIDIA and AMD + NVIDIA setups. By using switcherooctl, users can easily select which GPU to use for specific applications and eliminate the need for complex scripts or environment variables.

Benefits of switcherooctl

  • Seamless Integration: Unlike older tools, switcherooctl is designed to work natively with modern Linux systems and desktop environments. This ensures a smoother user experience without requiring complex configurations.

  • Improved Performance: Users can specify which GPU to use for specific tasks, so switcherooctl enables optimal performance. Compute-heavy applications, such as gaming or 3D rendering, can utilize the discrete GPU, while less intensive tasks default to the integrated GPU to save power.

  • Enhanced Power Management: Switching back to the integrated GPU when the discrete GPU is not needed conserves battery life and makes it ideal for laptops and portable systems.

  • Wayland and Xorg Compatibility: With increasing adoption of Wayland, having a tool that supports both Wayland and Xorg ensures compatibility across a broad range of systems and setups.

  • Cross-Vendor Support: The Intel + NVIDIA or AMD + NVIDIA configuration make the systems more versatile for all users.

Users should being embracing switcherooctl for multi-GPU management as some of the older tools like suse-prime, bbswitch and bumblebee are likely to be phased out.

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

SUSE Security Team Spotlight Autumn 2024

Table of Contents

Introduction

Welcome to the second edition of our new spotlight series. With these posts we want to give you an insight into activities of the SUSE security team beyond major security findings for which we are publishing dedicated reports. Autumn is always a busy time at SUSE, when new service pack releases and new products are prepared. This results also in an increased amount of review requests arriving for the SUSE security team. This time we will be looking at various D-Bus interfaces, Polkit authentication, temporary file handling issues, a small PAM module and setgid-binary, Varlink IPC in systemd as well as some other topics.

Keepalived Follow-up Review

In bsc#1218688 we looked into Keepalived, a load-balancing software written in C. A colleague in the team noticed suspicious handling of temporary files in /tmp and asked for a more in-depth review.

Temporary File Handling

The creation of temporary files in Keepalived is indeed a bit peculiar. The make_tmp_filename() helper function takes the basename of a temporary file and returns a path to this file in $TMPDIR. An example use would be make_tmp_filename("keepalived.json") and the function will return /tmp/keepalived.json. This can easily lead to unsafe temporary file creation.

In the code the resulting filenames are always coupled with another utility function fopen_safe(), though. This function intercepts attempts to open files for writing ("w" mode) and calls the mkostemp() function behind the scenes to safely create a temporary file. The resulting file will then not be used as-is, though, but will be rename()‘d to the expected predictable filename. This is safe, because rename() will not follow symlinks or otherwise reuse the target path, but simply replace it.

D-Bus Implementation

Keepalived also implements a D-Bus system service running as root. Our team reviewed this component many years ago, which led to multiple CVE assignments. Therefore it seemed like a good idea to have a fresh look at the current situation, while we’re at it. We couldn’t find any problems, though. The code is non-trivial but robust. The D-Bus methods can only be called by root. Only some D-Bus properties can be accessed by unprivileged users, but they are not sensitive in nature.

DKIMproxy Symlink Attack

Our team is monitoring changes to systemd services across all of openSUSE Tumbleweed. One such change occurred in DKIMproxy and led us to bsc#1217173. DKIMproxy is a proxy designed for the Postfix mail server. It implements the DKIM standard for signing outgoing email or verifying incoming email.

The package’s systemd service is not part of the upstream sources, but has been added by the package maintainer on packaging level in the Open Build Service. In this service unit a shell script is executed via ExecStartPre with root privileges, while the actual service runs with the lowered privileges of a dedicated service user and group. The shell script performs naive write operations in a directory owned by the unprivileged user. Therefore the unprivileged user can prepare symlink attacks to cause arbitrary file overwrite in the system, as soon as the script is executed again. The content that is written is not controlled by the attacker, therefore this only has denial-of-service impact and does not allow to raise privileges.

We can observe a number of aspects in this case that, based on our experience, represent typical patterns. In the following sections we will look at these in more detail.

Files Added on Packaging Level

Assets like configuration files, scripts or code that are added on packaging level have an increased probability of introducing problems. Some of the reasons for this could be:

  • there are less people that review such contributions.
  • the process for adding these files is less formalized than e.g. in a GitHub project.
  • packagers that add such files might be lacking knowledge about the upstream project.
  • packagers might accept such files from others that want a certain feature or behavior and don’t know exactly what it does.
  • packagers might take over such files from other Linux distributions, assuming that they are of high quality.

Since we identified that such packaging assets carry an increased risk for issues, we are monitoring additions of and changes to such files in the Open Build Service to look out for problems proactively.

Pre- or Post-Scripts in systemd Services

When privilege separation is in place for a systemd service, we can often find such ExecStartPre and ExecStartPost scripts that are run with raised privileges. This mixture of two different security domains can easily introduce local security issues. This risk is further increased by the fact that these programs are often shell scripts that offer no built-in mechanisms to safely access files owned by unprivileged users as root.

Privilege Separation added after the Fact

Especially in older software that was initially designed to run with full root privileges, privilege separation is sometimes only added as an afterthought, or an unofficial downstream add-on on packaging level. On the surface, such setups often seem to provide privilege separation, i.e. one or more components are running as non-root accounts. This privilege separation can often be easily circumvented as soon as the unprivileged account is compromised, however.

Such weak privilege separation can still offer some level of protection and is usually an improvement over services running as full root. Still, the lack of robustness means that a false promise is given to administrators: namely, that strong separation of privileges exists for such services. The defense in depth is lacking, though, and a change of security scope can happen. Thus, such issues are usually considered worthy of a CVE assignment. In our team we assign or request CVEs for such issues on a case-by-case basis, depending on the severity of the issue, the popularity of the affected software and so on. In the case of DKIMproxy only a denial-of-service can happen and the software is not that widespread, thus we decided not to assign a CVE for it.

Handling of a Vulnerability Report in MirrorCache (CVE-2024-49505)

We have been privately approached by security researcher Erick Fernando about a reflected XSS vulnerability in the openSUSE MirrorCache repository. MirrorCache is a web server that redirects download requests to a mirror according to configuration. We handled the report in bsc#1232341 and assigned CVE-2024-49505 to it. The responsible maintainer applied a fix for the issue and our team member Paolo Perego verified the patch.

Luckily the MirrorCache project is not part of any official products or server side infrastructure of SUSE. We want to thank Erick Fernando again for reaching out to us and reporting this issue.

Issues with Temporary Files in Hardinfo2

Hardinfo2 is a utility to obtain hardware information on Linux, create reports from that data and compare different systems for benchmarking. Hardinfo2 has been newly packaged for openSUSE Tumbleweed in October, and the following lines showed up in our systemd monitoring:

RPM: hardinfo2-2.1.14-1.1.x86_64.rpm on x86_64
Package: hardinfo2
Service path: /usr/lib/systemd/system/hardinfo2.service
Runs as: root:root
Exec lines:
    ExecStart=/bin/sh -c "
        cat /proc/iomem >/tmp/hardinfo2_iomem;
        chmod a+r /tmp/hardinfo2_iomem;
        cat /proc/ioports >/tmp/hardinfo2_ioports;
        chmod a+r /tmp/hardinfo2_ioports;
        chmod a+r /sys/firmware/dmi/tables/*;
        modprobe -q spd5118;modprobe -q ee1004;modprobe -q at24 || true"

The use of fixed temporary file paths sticks out right away, so we created bsc#1231839 to handle the issues resulting from this. By default, kernel protections like protected_symlinks prevent more severe issues like overwriting system files, which would lead to denial-of-service. Even with these protection measures, a local user can pre-create these files and Hardinfo2 will then use the attacker controlled data found in them, causing integrity violation.

Furthermore this logic causes information leaks. The data from /proc/ioports is made world-readable via the temporary file /tmp/hardinfo2_ioports. By default this information is already public in /proc on openSUSE. But it seems on some systems this was not the case, because Hardinfo2 performs these steps to allow unprivileged processes to access that data in /tmp. Another information leak is the chmod a+r operation for /sys/firmware/dmi/tables/*. The permissions of pseudo files should not be altered in a drive-by fashion by system services this way.

We reported the issues to upstream, which quickly worked on improvements in these areas. The shell code has been moved into a proper script named hwinfo2_fetch_sysdata. The problematic files in /tmp are now placed into a dedicated directory in /run/hardinfo2. Users that want to use hardinfo2 now need to be a member of a newly introduced “hardinfo2” group to be able to access the data placed into this directory. The permissions of files in /sys are no longer changed.

Upstream created a new release 2.2.1 containing the changes. We did not request a CVE for these issues, since the biggest impact they can have by default is integrity violation of Hardinfo2 itself.

Aeon-Check Encryption Key in Fixed Temporary File (CVE-2024-49506)

Aeon-Check is a small utility used in openSUSE Aeon. Currently it consists only of a simple bash script invoked via a systemd unit. This script can detect a bug in the TPM-based LUKS disk encryption setup and fix it. To this end, an additional LUKS key slot is temporarily added to the root LUKS device:

keyfile=/tmp/aeon-check-keyfile
dd bs=512 count=4 if=/dev/urandom of=${keyfile} iflag=fullblock
chmod 400 ${keyfile}

<snip>

# Writing keyfile to slot 31 (end of the LUKS2 space) to avoid clashes with any customisation/extra keys
cryptsetup luksAddKey --token-only --batch-mode --new-key-slot=31 ${rootdev} ${keyfile}

The temporary file used to store the ephemeral LUKS key has a fixed filename in /tmp. Fortunately the script has the errexit option set; combined with the protected_regular and protected_symlinks kernel features, no unsafe use of an already existing file in that path will succeed. Without the kernel protection, though, another local user could pre-create this file, and intercept or stage the data used as temporary LUKS key. Even then the chances for exploitation are small, since this systemd service typically only runs once during boot, and the time window during which the temporary LUKS key is valid is short.

Since LUKS encryption is a sensitive area, we still decided to assign a CVE for the issue. We handled the problem in bsc#1228861, and a simple bugfix has been made by the author of the script to use mktemp for safe creation of the temporary file holding the LUKS key data.

SDDM Follow-Up Review of D-Bus Interface

The openSUSE package for the SDDM display manager has been forked for the openSUSE Kalpa flavour. This made a new D-Bus service whitelisting necessary, which was requested in bsc#1232647. The sddm-kalpa package is a Wayland-only version of SDDM, but the sources used in the package are the same as for regular SDDM.

We still used this opportunity to take a fresh look at the situation in SDDM. The D-Bus service shipped with it is practically only a skeleton without implementation. Only a single D-Bus method SwitchToGreeter() is implemented. There is no Polkit authorization, which means that any user can trigger the logic to switch to the greeter. While this situation is not ideal, it is not critical. Therefore we accepted the new package.

Libcgroup Revisited

Libcgroup is a library and set of utilities for using control groups on Linux systems. These days systemd is taking care of this job and, since libcgroup upstream was unmaintained, the package was dropped from openSUSE in 2018. We received a request to reintroduce libcgroup in bsc#1231381. Upstream is active again and there seem to exist some use cases for the package.

Our team was involved because the package contains a setgid binary and a PAM module. We also had a look at the main daemon cgrulesengd, which is running as root. At startup, the daemon iterates over all running processes in /proc and assigns them to control groups according to configuration. Then a netlink socket is set up to obtain events from the kernel about newly created processes and exec() events. These new processes will also be placed into control groups based on configuration.

The approach taken by the daemon is subject to race conditions by design, which is also kind of documented in the upstream repository. Entries in /proc/<pid> can disappear or change security scope e.g. when setuid-root binaries are involved. The configuration is matched to processes based on their name as found in /proc/<pid>/status and the process’ effective uid and gid. We can imagine that a dedicated local attacker will be able to have the libcgroup daemon wrongly assign an unprivileged process to a control group destined only for privileged processes e.g. by exploiting race conditions and using setuid-root binaries like sudo. Since this is by design, we did not approach upstream about this possibility. Users of the package should be aware that this could result in local DoS attack vectors, though.

The setgid program cgexec found in the package is a simple program that only forwards an IPC request to the libcgroup daemon, asking it to mark the calling process as “sticky”. The binary requires special group permissions to be allowed to connect to the UNIX domain socket of the libcgroup daemon. The extra privileges are dropped right after connecting to the socket. The socket is also closed right after sending the request. So escalating group privileges, leaking the socket file descriptor or otherwise influencing the IPC communication done by cgexec is not a concern.

The PAM module shipped with the package only implements a PAM session type hook. It calls into the libcgroup library to assign the calling process to an appropriate control group, thereby placing new sessions into control groups according to configuration.

Supergfxctl D-Bus Service

Supergfxctl is a D-Bus daemon that takes care of low level kernel settings in NVIDIA hybrid GPU systems. The software has been newly packaged in November and we’ve been asked to whitelist it in bsc#1232776.

There are some worries with this daemon, mostly with regards to local denial-of-service attack surface. For example there is some racy logic in the daemon that looks up and kills all processes that have /dev/nvidia0 open. The D-Bus methods allow to completely control the daemon’s configuration and are by default accessible to all members of the sudo, users, adm and wheel groups. This selection of groups is rather broad and surely targeted towards maximum compatibility with various Linux distributions. It is unlucky, because there is a possibly large range of users that are allowed to control the supergfxctl daemon this way.

To make the new service acceptable for openSUSE we asked the packager to limit access to the D-Bus service to members of the video group instead. Users that are in the video group have increased privileges with regards to accessing the video hardware in the system, thus it is a better match for supergfxctl than just the users group, for example. An even better approach would be to add Polkit authentication in this D-Bus service, but this is something that would require larger efforts by upstream and is not currently in sight.

Systemd v257 Polkit for Varlink IPC

We routinely review additions to the D-Bus and Polkit interfaces in new systemd releases. This time we have been asked to check a few new Polkit actions in systemd-containerd, systemd-homed, systemd-networkd, and systemd-resolved. Interestingly these daemons have all been migrated from using D-Bus to using Varlink for Inter-Process-Communication (IPC).

In our experience, the code quality of systemd components is generally high. These additions were no different. All new Polkit actions are limited to auth_admin authorization, thus no additional attack surface is made available to unprivileged local users.

At first sight the switch to Varlink doesn’t change much security-wise: there are still individual methods in a service that can be invoked by clients and some or all of them can be protected by Polkit authentication. The switch to Varlink requires new glue code for the authorization against Polkit, however. Thus we looked deeper into how this is done in systemd.

When using D-Bus the SystemBusName Polkit subject is used, which identifies a client process by its D-Bus sender address. This way polkitd can securely identify the credentials of the client process by asking the dbus-daemon about the credentials of the owner of the UNIX domain socket used by the client to connect to D-Bus.

With Varlink this is no longer possible. Instead the UnixProcess subject is used to identify the client. This made us a bit nervous at first, because the UnixProcess subject is deprecated and often used insecurely. The problem here is that polkitd needs to use racy logic to lookup the process by PID in the /proc file system and extract its credentials. Former SUSE security team member Sebastian Krahmer discovered this in 2014, and it affected a lot of programs that implemented Polkit actions using this subject. The use of this subject in systemd to authenticate Varlink methods is robust, though. The client’s credentials are obtained from the UNIX domain socket underlying the Varlink connection, and thus via the kernel. Also a pidfd can be passed to Polkit nowadays, which allows polkitd to operate in a race-free fashion on the client process.

As the Polkit glue code turned out all right we accepted the changes and whitelisted the additions in systemd v257.

Miscellaneous

The following reviews didn’t yield much of interest, so we’re just providing a short listing here for reference:

  • GNOME Remote Desktop follow-up review (bsc#1230406). Last time we looked into GNOME Remote Desktop, we found a couple of issues in its D-Bus implementation. Another D-Bus service “org.gnome.RemoteDesktop.Configuration.service” has been added in the meantime and we have been asked to take a look. The new service is rather small and all of its methods are protected by a single Polkit action “org.gnome.remotedesktop.configure-system-daemon”, which requires Polkit auth_admin authentication. So there shouldn’t be additional attack surface for local non-privileged users in the system. Overall the complexity of GNOME in this area continues to grow, though, and it is a challenge to review it fully without being an expert in GNOME and the remote desktop protocols.
  • Additional D-Bus and Polkit features in the UPower Daemon (bsc#1232835). This just adds a boolean switch to control whether a battery charging threshold should be active or not. It is allowed for users in a local session without authentication.
  • Added “memoryinformation” D-Bus Method in kinfocenter6 (bsc#1231659). Our packager backported this feature from a newer upstream version. This new action allows users in a local session to obtain the output of dmidecode --type 17, which contains some low-level information about physical RAM in the system. The implementation of this is straight-forward and we had no worries accepting this change.

Conclusion

We hope that with this post we have been able to give you some additional insights into our daily review work for openSUSE and SUSE products. Feel free to reach out to us if you have any questions about the content discussed in this article. We expect the winter issue of the spotlight series to be available in about three months from now.

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

Tumbleweed – Review of the week 2024/49

Dear Tumbleweed users and hackers,

We’re quickly approaching the end of the year, and I hear more and more people ‘preparing for the holiday’. As with every year, this season will likely slow down Tumbleweed. There are more important things to tend to than sending updates to Factory over and over, something I am sure all readers will support. Our maintainers deserve a break every now and then—after fixing the most critical bugs. This week, the developers are still in full swing and are sending submissions to Factory. The Release Team produced 4 working snapshots (1129, 1202, 1203, and 1204.

The most relevant changes delivered to the users during this week were:

  • Mozilla Firefox 133.0
  • LibreOffice 24.8.3.2
  • SQLite 3.47.1
  • elfutils 0.192
  • mozjs 128.5.1 (JS engine used by GNOME-Shell)
  • systemd 256.9
  • libcap 2.73
  • Python setuptools 75.6.0

Of the advertised things from last week, most notably systemd and kernel 6.12 have not made it into any snapshot yet: both started showing issues around TPM measuring which have been flagged by openQA and are actively worked on by the developers. Currently, the release team is testing those updates in the staging areas:

  • Linux kernel 6.12.3
  • Systemd 257.x
  • Rust 1.83
  • Python 3.11.11, 3.12.8
the avatar of openSUSE News

Leap Micro 6.1 Officially Released

The openSUSE community is excited to announce the official release of Leap Micro 6.1.

Leap Micro continues its alignment with SUSE Linux Enterprise Micro, ensuring robust container and virtual machine hosting capabilities. The release has a new opensuse-migration-tool, which simplifies upgrades for smoother transitions between releases. Some enhanced features include reworked jeos-firstboot, soft-reboot support to further minimize downtime, two-factor authentication with cockpit and additional tools like vhostmd for SAP Virtualization.

You might want to check our Leap Micro 6.1 video showcasing fully encrypted disk image with TPM 2.0 chip, and the two factor authentication with cockpit.

The release of Leap Micro 6.1 signals the End of Life (EOL) for Leap Micro 5.5. Users are strongly encouraged to upgrade to either Leap Micro 6.0 or 6.1 to continue receiving updates and support.

For a detailed upgrade guide, visit the openSUSE Wiki or SLE Micro 6.1 Release notes.

Leap Micro 6.1 video

the avatar of openSUSE News

Leap Micro 6.1 fficially Released

The openSUSE community is excited to announce the official release of [Leap Micro 6.1]((https://get.opensuse.org/leapmicro/6.1/).

Leap Micro continues its alignment with SUSE Linux Enterprise Micro, ensuring robust container and virtual machine hosting capabilities. The release has a new opensuse-migration-tool, whic simplifies upgrades for smoother transitions between releases. Some enhanced features include soft-reboot support. Two-factor authentication (TOTP) for PAM logins improves security. There are additional tools like vhostmd for SAP Virtualization and improvements to the jeos-firstboot wizard and more.

The release of Leap Micro 6.1 signals the End of Life (EOL) for Leap Micro 5.5. Users are strongly encouraged to upgrade to either Leap Micro 6.0 or 6.1 to continue receiving updates and support.

For a detailed upgrade guide, visit the openSUSE Wiki or SLE Micro 6.1 Release notes.