Skip to main content

4 posts tagged with "security"

View All Tags

Linux Kernel local root exploits CVE-2026-31431, -43284, -43500

· 12 min read
Kurt Garloff
CEO @ S7n Cloud Services, former CTO @ SCS

Linux root exploits (Local Privilege Escalation)

Unix is designed as a multi-user system. Different users have their own files and processes and can work without interference from others. Linux lives in that tradition. It has advanced the concept with namespaces where users can also have a private view on networking, process list, filesystems and other pieces that are traditionally shared (read-only) on a Unix system, also including some resource management to enhance performance isolation.

It is the operating system's kernel's job to keep the separation safe; in particular, normal users must not achieve the system administrator (root) privileges. Where the kernel fails to ensure this, we have a "local root" vulnerability, a Local Privilege Escalation (LPE).

The Linux kernel is a large and a complex beast. On one hand it has sophisticated mechanisms to get really good performance out of increasingly complex hardware. On the other hand, it comes with a huge variety of device drivers. From time to time, vulnerabilities are found, reported and fixed. The Linux kernel has several LPEs per year. Most of the time, they affect only a small fraction of users (typically by being located in a device driver or somewhat exotic feature) and often they are hard to exploit, needing to win a race condition with many attempts and sometimes causing crashes in trying (which may not go unnoticed).

We don't normally report about these LPEs. They get fixed by the upstream Linux kernel developers, shipped as stable updates by the maintainers and shipped to the end users via kernel updates from the Linux distributors.

copy.fail and Dirty Frag

The currently highly visible Linux kernel issues copy.fail and Dirty Frag are both LPEs (local root vulnerabilities). The reason we report about them is that they both affect most Linux users (with kernels from the last 9 years) and are easy to exploit.

Like Dirty Pipe and before Dirty Cow, both LPEs rely on improper protection of the page cache. The Linux kernel keeps contents from file systems in the page cache; when code gets executed, it is mapped into your virtual memory. When the memory page is accessed and not yet loaded into your physical memory, a page fault occurs and the relevant blocks are loaded from disk — or the access is denied and your program receives SIGSEGV and is terminated. Copying pages is costly and the kernel avoids it to achieve higher performance. If you write to a memory page, the kernel may receive a page fault on a read-only mapping (that it created to avoid copying) and only then do the copy to create a private writable copy. This approach is called copy-on-write (COW) and is common in modern operating systems. If a page from the page cache is changed in memory, it is also marked "dirty", so the kernel knows it needs to write the changes back to the file system.

In copy.fail, the aead crypto module did some cryptography in place, avoiding the need to allocate an extra buffer. Unfortunately, it requires 4 extra bytes under some conditions; normally aead is used by IPsec and that location is a designate place in a network buffer. However, a local attacker can make this write happen to a page cache page by using splice. This way, the copy of the sudo binary in the page cache can be overwritten, allowing to circumvent the safeguards there. The attacker can trivially become root — as the page is not dirtied, no trace of the corruption will be visible on the disk. copy.fail has been assigned CVE-2026-31431.

In Dirty Frag, a network buffer that is split over several fragments is not properly handled and the fragmented buffer is not properly COW'ed. The AEAD crypto operation then again overwrites 4 bytes. A local attacker can trigger this again become root very quickly by overwriting the page cache's view of sudo. (Of course other sensitive binary code could be overwritten in memory.) This can be triggered via the IPsec esp_input (for both IPv4 and IPv6) as well as via the rxrpc code. The esp variant requires the privilege to create user namespaces and then allows for easy 4 byte writes at a time. It has been assigned CVE-2026-43284. The rxrpc variant overwrites 8 bytes and doe not require the namespace creation privileges, but as these bytes are crypted, the user needs to brute force them in order to achieve a controlled result. This variant was assigned CVE-2026-43500.

Exploiting these vulnerabilities requires access to the system and the ability to execute code there, thus the categorization as Local Privilege Escalation (LPE), not Remote Code Execution (RCE).

Impact

Any system where normal (non-root) users can log in to execute code under their own control is no longer secure: The users can use the publicly available exploits to gain root privileges and get access to whatever the (virtual) machine has access to. This means accessing other user's data as well as secrets that may be stored by the system administrator.

Such systems are less common these days than they were 20 years ago. The reason is that virtualization has become a commodity, so in many scenarios, individual users may use their own virtual machine rather than having access to a shared (virtual) machine.

Note that this vulnerability does NOT break the isolation of virtual machines. VMs remain as securely isolated as they would be without this vulnerability. These LPEs do NOT establish a virtualization escape.

There is however a common scenario where individual users and workloads are running inside a container. The LPE also allows for escaping containers. Running a shell inside a kubernetes pod allows you to get control of the kubernetes node and thus of everything that your kubernetes cluster has access to. Running untrusted code in a container is thus very risky — something that will affect e.g. CI setups.

Fixes

A fix to the Linux kernel for Copy.fail was silently merged at the end of March 2026 (for 7.0-rc7) and also been merged to the stable kernel series (6.18.22, 6.12.85, 6.6.137). It just disables the in-place optimization for algif_aed. As of early May, Linux distributors are currently underway to ship fixed kernels. Without a fixed kernel, a workaround is to place a file copyfail.conf in /etc/modprobe.d/ with the contents:

# Temporary workaround for copy.fail CVE-2026-31431
install algif_aead /bin/false

The fixes for Dirty Frag are still in development as of May 8. The first fixes have been merged upstream and released in 7.0.5, 6.18.28, 6.12.87, 6.6.138, 6.1.172, 5.15.206 and 5.10.255 but there is more to come for rxrpc. Update 2026-05-11: 7.0.6 and 6.18.29 contain this last patch, older kernels don't need it. The responsible disclosure process for Dirty Frag unfortunately failed due to the patches being spotted, so the upstream maintainers and the distributors this time did not have time to carefully prepare and test fixes ahead of the publication of the issue. So we have to expect that it will take a few days until all Linux distributor manage to ship tested fixed kernels. Alma Linux has done so already, others are expected to follow soon.

A fully effective workaround is again to prevent loading the affected modules by placing another file dirtyfrag.conf in /etc/modprobe.d/:

# Temporary workaround for Dirty Frag CVE-2026-43284, CVE-2026-43500
# This breaks IPsec
install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false

Note that these workarounds prevent IPsec from working.

If a system is suspected to already have been exploited, the system owner can dispose of the page cache by doing echo 3 > /proc/sys/vm/drop_caches as root and unload the affected modules to prevent re-exploitation. This will discard the modified page cache pages — however an attacker could have used its gained privileges to install further backdoors etc. into the system, so it will need to be reinstalled or fully audited to be considered trustable again.

SCS IaaS Cloud Provider exposure

None of the control-plane / management systems in a normal SCS cloud infrastructure can be logged in by normal users. The LPE thus can not be exploited. However, should another exploit be found and used successfully, the LPEs may be used to escalate privileges further, e.g. breaking out of the containers that run the OpenStack services or Ceph or some of the management tools and thus remove one layer of a defense-in-depth concept.

Cloud Providers are advised to install updated kernels to reestablish the defense. They can apply the module loading prevention measures in the meantime. Providers are advised to use this with care on the network nodes — if these need to support IPsec (e.g. for OpenStack's VPNaaS which is part of neutron), the non-loadable modules may prevent correct operation. Please note that there is no known remote exploit via IPsec, so a temporary trade-off to live without the defense-in-depth and not break IPsec (and this way create security and functionality issues or for customers) may be justified.

Cloud providers often provide VM images for their customers. To support the customers to keep the security separation in the customer's VMs, they are advised to watch out for the availability of new distribution images and provide them short-term via their image service (glance).

SCS Kubernetes Provider exposure

The default implementation with SCS Cluster Stacks is vulnerable; the current node images have a kernel that is affected by this weakness. This allows a user to break out of the containers running in the cluster to take over the node VM and other containers.

With Cluster-API and the SCS Cluster Stacks building on them, creating, updating and removing Kubernetes clusters has become a commodity; it is thus normal to create clusters per development team and not share them. In this scenario, the break out may allow a developer to take over containers from his team mates which may not constitute a real danger in many setups. For cluster setups across teams or worse for setups where several clusters that belong to different entities share a control plane, this becomes more serious.

Note that the LPE also removes a defense-in-depth mechanism, where a user of a service running in a k8s cluster exploits a vulnerability to be able to execute code in the container — the LPEs can then be used to escalate the privileges further.

As soon as new kernels become available, the node images will be rebuilt and shipped with the next cluster stack patch releases. For users, the normal rolling upgrade will then be all that's needed to be secure against this LPE again.

We will update this advisory as soon as new node images are available.

For highly critical workloads, cluster operators can log in to the nodes and deploy the mechanisms to prevent loading the above-mentioned modules. (Again, this will break IPsec.) Note that logging in to nodes in an SCS Cluster Stack cluster is not possible by default; it requires booting into a rescue image (if the cluster runs on OpenStack) to inject an ssh key or to use a tool like kubectl-node-shell with the appropriate privileges.

for node in $(kubectl get nodes | grep -v '^NAME' | awk '{print $1;}'); do
kubectl node_shell "$node" -- bash -c 'echo -e "# Temporarily disable algif_aead (copy.fail)\ninstall algif_aead /bin/false" > /etc/modprobe.d/disable-aead-copyfail.conf'
kubectl node_shell "$node" -- bash -c 'echo -e "# Temporarily disable esp4, esp6, rxrpc (Dirty Frag)\ninstall esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false" > /etc/modprobe.d/disable-esp46-rxrpc-dirtyfrag.conf'
done

SCS Cloud users

Customers of SCS IaaS clouds are responsible for their own VMs. For VMs that are exposed, they should use the documented workaround inside their VMs, online-update and reboot into a fixed kernel or redeploy their VMs based on a fixed upstream image.

Customers that do their own Kubernetes Container Cluster Management with e.g. SCS Cluster Stacks are advised to watch out for new node images and then perform the rolling upgrade. If their use scenario puts them at increased risk, they are advised to prevent the module loading in the meantime, as advised above.

SCS community infrastructure

The SCS community infrastructure was secured on May 8 by disabling the relevant modules.

Thanks

The authors would like to thank Taeyang Lee at Xint (who initiated the research on copy.fail) and Hyunwoo Kim (@v4bel, who discovered Dirty Frag). They would also like to thank the upstream Linux kernel maintainers and Linux distributors for their reliable work no handling the issues and getting fixes out.

Sovereign Cloud Stack Security Contact

SCS security contact is security@scs.community, as published on https://sovereigncloudstack.org/.well-known/security.txt.

Version history

  • Initial Draft, v0.1, 2026-05-08, 17:15 CEST.
  • kubectl node-shell instructions, v0.2, 2026-05-09, 12:45 CEST.
  • Mention succssful patching of community infra, v0.3, 2026-05-09, 13:30 CEST.
  • Correct facts on the failure of the responsible disclosure. Release as v1.0, 2026-05-09, 20:00 CEST.
  • Update on final rxrpc fix in stable kernels. v1.1, 2026-05-12, 08:45 CEST.

CVE-2026-33551 OpenStack privilege escalation with EC2 credentials from Application Credentials

· 4 min read
Kurt Garloff
CEO @ S7n Cloud Services, former CTO @ SCS

The vulnerability

OpenStack allows the creation of Application Credentials to give its bearer access to a project with the privileges of the user who created the AppCreds. Application Credentials can have a limited lifetime and can be revoked. They can also be restricted (which means that they can not be used to create additional application credentials) or can be assigned roles with lower privileges, limiting the privileges that the bearer has.

When AppCreds are used to create EC2 credentials, keystone failed to require unrestricted AppCreds and failed to require the member role, giving AppCreds that are restricted or that have limited roles the ability to create EC2 credentials with the full privileges of the user who created the AppCred.

This issue was reported by Maxence Bornecque from Orange Cyberdefense CERT Vulnerability Intelligence Watch Team and has been assigned CVE-2026-33551.

Impact on the SCS software ecosystem

This issue affects OpenStack environments that allow the creation of EC2 style credentials, which is typically used for S3 access or EC2 compatibility. This is typically the case for SCS clouds, as S3 compatibility is a requirement.

While creating AppCreds with roles with lower privileges is not a very common use case, it is supported by OpenStack clouds and is actually a good practice to limit the privileges of running components or the delegated privileges for human bearers of the AppCred. The fact that EC2 credentials can be used to work around and regain the privileges of the user who created the original AppCred is a serious issue, as it breaks the principle of least privileges and may weaken or break security models for applications or delegated authorizations.

Note that this vulnerability does not allow to escalate privileges further than the original AppCred creator's privileges and does require the attacker to get access to the limited AppCred in the first place.

Embargo

The issue has been reported to the OpenStack Vulnerability Management Team in private. The reporters and upstream developers have worked together to address the issue with fixes and an embargo date has been set to Tuesday, 2026-04-07, 15:00 UTC (17:00 CEST). At this point in time, the patches get merged and the OpenStack Security Advisory OSSA-2026-005 is published. The issue is tracked in OpenStack issue #2142138, which should become publically accessible after the lift of the embargo and the publication of this advisory.

Under the used responsible disclosure approach, the information was shared with a select group of trustable users of OpenStack, so they can prepare updates and protect their user data in time for the publication.

Mitigation and Fixes

The temporary fix for this issue would be to disable the creation of EC2 credentials which however would prevent to enable new S3 access.

There are patches from the upstream OpenStack keystone developers available. They add a check in the EC2 credential creation path that requires the AppCred to be unrestricted and to have at least member access to the project.

The SCS ecosystem software providers provide fixed keystone images and installation instructions here as soon as the updated images are available:

Thanks

The author would like to thank Maxence Bornecque, Grzegorz Grasza, Douglas Mendizabal, Artem Goncharov, and Jeremy Stanley for reporting, fixing and coordinating this issue.

Sovereign Cloud Stack Security Contact

SCS security contact is security@scs.community, as published on https://sovereigncloudstack.org/.well-known/security.txt.

Version history

  • Typo fixes and yaook link, v1.0, 2026-04-09, 10:30 CEST
  • Initial draft, v0,9, 2026-04-08, 13:45 CEST

CVE-2026-24708 OpenStack Missing image format validation on resize

· 4 min read
Kurt Garloff
CEO @ S7n Cloud Services, former CTO @ SCS

The vulnerability

OpenStack supports a variety of image formats to ease migration from other virtualization platforms. The qemu-img tools are used to deal with these images. Unfortunately, OpenStack developers had to learn that qemu-img is not as robust as expected when dealing with untrusted images. This has lead to CVE-2022-47951 and CVE-2024-32498 and CVE-2024-40767 .

Analyzing all potentially vulnerable code paths, at least one had been overlooked by developers before: When resizing VMs in Nova to a flavor with a new root disk/ephemeral disk size, and Nova's flat image backend is in use, qemu-img is called on the backing image file without an explicit format specifier, opening up the possibility to overwrite files on the host system by writing a malicious QCOW header to a root or ephemeral disk.

This vulnerability has been assigned CVE-2026-24708.

Impact on the SCS software ecosystem

By default, Nova uses cow images, i.e. use_cow_images in nova.conf defaults to True.

This value is not changed in either OSISM nor yaook, so neither of these implementations is affected by the vulnerability. Operators need to have made a deliberate effort to override this setting.

If this setting is set to False, authenticated users may write malicious QCOW2 or VMDK headers to the disk and then use the VM resize to overwrite files on the host with zeros, causing failure of the compute host.

The overwriting of arbitrary files with zeroes has been reproduced using QCOW headers; it may be possible to do more controlled damage (e.g. writing non-zeros) using more exotic features in e.g. the VMDK headers and this way cause more than a Denial-of-Service but gain privileges or exfiltrate data.

Operators that are using use_cow_images=False in their nova config are advised to apply the fixes urgently or change this setting temporarily.

Embargo

The issue has been reported to the OpenStack Vulnerability Management Team in private. The reporters and upstream developers have worked together to address the issue with fixes and an embargo date has been set to Tuesday, 2026-02-17, 15:00 UTC (16:00 CET). At this point in time, the patches get merged and the OpenStack Security Advisory OSSA-2026-002 is published. The issue is tracked in OpenStack issue #2137507, which should become publically accessible after the lift of the embargo and the publication of this advisory.

Under the used responsible disclosure approach, the information was shared with a select group of trustable users of OpenStack, so they can prepare updates and protect their user data in time for the publication.

Mitigation and Fixes

The temporary fix for this issue is to avoid use_cow_images=false in /etc/nova.conf. This will stop this issue from being triggered. Alternatively, full glance format-inspector protection should help against this.

There are patches from the upstream OpenStack developers available. They work by passing -f raw to qemu-img when a resize happens with raw images and -f qcow2 for QCOW2 images. Other images are disallowed for resizing.

The SCS ecosystem software providers will provide fixed nova-compute images and installation instructions here as soon as the updated images are available:

Thanks

The author would like to thank Dan Smith, Jay Faulkner, Sylvain Bauza, Melanie Witt, and Jeremy Stanley for reporting, reproducing, fixing and coordinating this issue.

Version history

  • Mention glance format-inspector protection, v1.0, 2026-02-17, 15:30 CET.
  • Typos fixed, v0.6, 2026-02-16, 15:45 CET.
  • Initial Draft, v0.5, 2026-02-16, 15:00 CET.

CVE-2026-22797 OpenStack privilege escalation with oauth2 tokens

· 4 min read
Kurt Garloff
CEO @ S7n Cloud Services, former CTO @ SCS

Prefix

This advisory was drafted a few days ago, before the issue was public. As the issue turned out to only affect very specific configurations (which are not used in any standard SCS setting), we did not publish it with the urgency that we normally apply to protect our partners in time for a vulnerability becoming public.

Instead, we have taken the time to sort out the publication place in the the new Docs blog space, as described by the previous blog post.

The vulnerability

Keystone is the central Identity and Access Management component in OpenStack. Whenever you talk to an OpenStack service, you authenticate to keystone via one of the supported methods. In return, keystone will issue a token that entitles you to have certain privileges when talking to the individual services.

One of the supported ways to authenticate is to use oauth2 tokens. When keystonemiddleware investigates these tokens it adds headers that indicate privileges associated with the account.

Unfortunately, keystonemiddleware does not clear headers when receiving oauth2 tokens, so an authenticated user can send oauth2 tokens with headers that actually indicate admin privileges and can trick services into assuming elevated privileges. The issue was introduced with keystonemiddleware 10.5.0 when support for external_oauth2_tokens was added.

The vulnerability has been assigned CVE-2026-22797.

The issue was reported by Grzegorz Grasza of RedHat.

Impact on OpenStack deployments

When keystone is configured to accept oauth2 tokens for authentication, anyone able to produce and send any valid tokens may inject headers to impersonate other users or assume additional roles up to and including admin privileges. Admin privileges allow unrestricted access via the API and are only meant to be used by the cloud operators.

To abuse this vulnerability, the attacker must be an authenticated user of the platform. In addition, the platform must be configured to accept oauth2 tokens, which is not a supported configuration in yaook nor a simple change versus the default configuration is OSISM.

To make services accept oauth2 tokens, their config would need to be changed via paste.ini

[pipeline:main]
pipeline = ext_oauth2_token

[filter:ext_oauth2_token]
paste.filter_factory = keystonemiddleware.external_oauth2_token:filter_factory

in order to be affected. This is not the case in any default configurations and also not when using the OIDC federation with keycloak that is documented for SCS.

Providers are advised to investigate whether they have done changes to enable oauth2 tokens via keystonemiddleware as depicted above and assume that they are affected in that case.

Embargo

The issue has been reported to the OpenStack Vulnerability Management Team in private. The reporters and upstream developers have worked together to address the issue with fixes and an embargo date has been set to Thursday, 2026-01-15, 15:00 UTC (16:00 CET). At this point in time, the patches get merged and the OpenStack Security Advisory (OSSA-2026-001) is published. The issue is tracked in OpenStack issue #2219018, which should become publically accessible after the lift of the embargo and the publication of this advisory.

Under the used responsible disclosure approach, the information was shared with a select group of trustable users of OpenStack, so they can prepare updates and protect their infrastructure at the time this issue becomes public.

Mitigation and Fixes

The fix is straightforward and consists of clearing headers and explicitly unsetting the critical headers. For affected setups, it is recommended to update the keystone services immediately.

For clouds that can not update keystone directly, the dangerous headers could be filtered out by a reverse proxy or similar network infrastructure in front of the openstack API services or the oauth2 tokens could be temporarily disabled by reverting back to the standard

[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
  • ALASCA has issued an advisory for yaook basically stating that it's not really possible to use yaook in a way that it would be affected.
  • OSISM has published an advisary for OSISM with more details how to get a fixed keystone container deployed in case you have manually enabled such oauth2 tokens.

Thanks

The authors would like to thank Grzegorz Grasza, Thomas Goirand (zigo), Jay Faulkner, David Wilde, Artem Goncharov and Jeremy Stanley for their work on this issue.

Sovereign Cloud Stack Security Contact

SCS security contact is security@scs.community, as published on https://scs.community/.well-known/security.txt.

Version history

  • Initial Draft, v0.1, 2026-01-13, 22:30 CET.
  • Release, v1.0, 2026-01-20, 08:30 CET.
  • Release to SCS docs blog, v1.1, 2026-01-23, 10:30 CET.