CVE-2017-1000255
Medium · 5.5CVSS
5.5
EPSS
0.4%
Published
Oct 30, 2017
CISA due date
—
Cloudanix analysis
A flaw in the Linux kernel on certain IBM Power servers lets a regular user damage the computer's core memory, which can cause crashes or let the user take full control of the machine.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Low
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Local user-controlled signal frame allows sigreturn to supply an attacker-chosen r1 value as the kernel stack pointer during exception entry on PowerPC, causing the kernel to write the signal frame contents into arbitrary kernel memory locations before any oops or panic occurs.
Why it matters to the business
On PowerPC servers running vulnerable kernels, a local attacker can corrupt kernel memory, leading to system instability, denial of service, or potential privilege escalation; the issue affects a subset of high-end enterprise and HPC systems.
How an attack unfolds
An attacker with local unprivileged access crafts a malicious signal frame containing a chosen kernel stack pointer, invokes sigreturn, forces an exception so the kernel uses the supplied r1 value, and the subsequent write of the signal frame overwrites kernel memory; the resulting oops occurs only after the corruption.
How to fix it
Upgrade to a Linux kernel version containing the fix for this transactional memory signal handling issue; alternatively rebuild with CONFIG_PPC_TRANSACTIONAL_MEM=n; apply all vendor-supplied PowerPC kernel updates.
How to confirm the fix worked
Verify kernel version is newer than the vulnerable commit range, confirm CONFIG_PPC_TRANSACTIONAL_MEM is disabled in the running kernel config, and test that crafted signal frames no longer produce memory corruption before an oops.
Typical attack path
- Obtain local shell as unprivileged user on affected PowerPC system
- Construct signal frame with attacker-controlled r1 value
- Execute sigreturn syscall to trigger exception path
- Kernel writes signal frame into attacker-chosen stack location
- Observe oops or continued execution with corrupted kernel state
How to detect it
Review dmesg, /var/log/kern.log and systemd journal for PowerPC oops or panic entries that reference signal frames, exception entry, or transactional memory shortly after user process activity; correlate with unusual local process terminations.
What your security team should do
- Apply latest PowerPC kernel packages from the distribution vendor immediately
- Restrict local user access on affected systems until patched
- Add kernel oops monitoring for PowerPC signal-handling exceptions
- Audit systems for the CONFIG_PPC_TRANSACTIONAL_MEM setting
The record
On Linux running on PowerPC hardware (Power8 or later) a user process can craft a signal frame and then do a sigreturn so that the kernel will take an exception (interrupt), and use the r1 value *from the signal frame* as the kernel stack pointer. As part of the exception entry the content of the signal frame is written to the kernel stack, allowing an attacker to overwrite arbitrary locations with arbitrary values. The exception handling does produce an oops, and a panic if panic_on_oops=1, but only after kernel memory has been over written. This flaw was introduced in commit: "5d176f751ee3 (powerpc: tm: Enable transactional memory (TM) lazily for userspace)" which was merged upstream into v4.9-rc1. Please note that kernels built with CONFIG_PPC_TRANSACTIONAL_MEM=n are not vulnerable.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Chainguard | hyperv-daemons | 0 | 0 |
| Chainguard | hyperv-daemons-6.12 | 0 | 0 |
| Chainguard | hyperv-daemons-6.18 | 0 | 0 |
| Chainguard | hyperv-daemons-generic | 0 | 0 |
| Chainguard | linux | 0 | 0 |
| Chainguard | linux-aws-6.12 | 0 | 6.12.63-r0 |
| Chainguard | linux-aws-6.12 | 0 | 6.12.65-r0 |
| Chainguard | linux-aws-6.12-boot-installed | 0 | 0 |
| Chainguard | linux-aws-6.12-fips-boot-installed | 0 | 0 |
| Chainguard | linux-aws-6.12-headers | 0 | 0 |
| Chainguard | linux-aws-6.12-modules | 0 | 0 |
| Chainguard | linux-aws-6.18 | 0 | 6.18.4-r0 |
| Chainguard | linux-aws-6.18 | 0 | 6.18.5-r2 |
| Chainguard | linux-aws-6.18-boot-installed | 0 | 0 |
| Chainguard | linux-aws-6.18-fips-boot-installed | 0 | 0 |
| Chainguard | linux-aws-6.18-headers | 0 | 0 |
| Chainguard | linux-aws-6.18-modules | 0 | 0 |
| Chainguard | linux-aws-generic | 0 | 6.18.3-r0 |
| Chainguard | linux-aws-generic | 0 | 6.18.5-r0 |
| Chainguard | linux-aws-generic-boot-configuration | 0 | 0 |
| Chainguard | linux-aws-generic-boot-installed | 0 | 0 |
| Chainguard | linux-aws-generic-fips-boot-installed | 0 | 0 |
| Chainguard | linux-aws-generic-headers | 0 | 0 |
| Chainguard | linux-aws-generic-modules | 0 | 0 |
| Chainguard | linux-azure-6.12 | 0 | 6.12.63-r0 |
| Chainguard | linux-azure-6.12 | 0 | 6.12.65-r1 |
| Chainguard | linux-azure-6.12-boot-installed | 0 | 0 |
| Chainguard | linux-azure-6.12-fips-boot-installed | 0 | 0 |
| Chainguard | linux-azure-6.12-headers | 0 | 0 |
| Chainguard | linux-azure-6.12-modules | 0 | 0 |
| Chainguard | linux-azure-6.18 | 0 | 0 |
| Chainguard | linux-azure-6.18-boot-installed | 0 | 0 |
| Chainguard | linux-azure-6.18-fips-boot-installed | 0 | 0 |
| Chainguard | linux-azure-6.18-headers | 0 | 0 |
| Chainguard | linux-azure-6.18-modules | 0 | 0 |
| Chainguard | linux-azure-generic | 0 | 6.18.3-r0 |
| Chainguard | linux-azure-generic | 0 | 6.18.5-r0 |
| Chainguard | linux-azure-generic-boot-configuration | 0 | 0 |
| Chainguard | linux-azure-generic-boot-installed | 0 | 0 |
| Chainguard | linux-azure-generic-fips-boot-installed | 0 | 0 |
| Chainguard | linux-azure-generic-headers | 0 | 0 |
| Chainguard | linux-azure-generic-modules | 0 | 0 |
| Chainguard | linux-boot-configuration | 0 | 0 |
| Chainguard | linux-boot-installed | 0 | 0 |
| Chainguard | linux-gcp-6.12 | 0 | 6.12.63-r0 |
| Chainguard | linux-gcp-6.12 | 0 | 6.12.65-r0 |
| Chainguard | linux-gcp-6.12-boot-installed | 0 | 0 |
| Chainguard | linux-gcp-6.12-fips-boot-installed | 0 | 0 |
| Chainguard | linux-gcp-6.12-headers | 0 | 0 |
| Chainguard | linux-gcp-6.12-modules | 0 | 0 |
| Chainguard | linux-gcp-6.18 | 0 | 6.18.4-r0 |
| Chainguard | linux-gcp-6.18 | 0 | 6.18.5-r2 |
| Chainguard | linux-gcp-6.18-boot-installed | 0 | 0 |
| Chainguard | linux-gcp-6.18-fips-boot-installed | 0 | 0 |
| Chainguard | linux-gcp-6.18-headers | 0 | 0 |
| Chainguard | linux-gcp-6.18-modules | 0 | 0 |
| Chainguard | linux-gcp-generic | 0 | 6.18.3-r0 |
| Chainguard | linux-gcp-generic | 0 | 6.18.5-r0 |
| Chainguard | linux-gcp-generic-boot-installed | 0 | 0 |
| Chainguard | linux-gcp-generic-fips-boot-installed | 0 | 0 |
| Chainguard | linux-gcp-generic-headers | 0 | 0 |
| Chainguard | linux-gcp-generic-modules | 0 | 0 |
| Chainguard | linux-modules | 0 | 0 |
| Chainguard | linux-qemu-6.12 | 0 | 6.12.65-r2 |
| Chainguard | linux-qemu-6.12-boot-installed | 0 | 6.12.63-r0 |
| Chainguard | linux-qemu-6.12-fips-boot-installed | 0 | 6.12.63-r0 |
| Chainguard | linux-qemu-6.12-headers | 0 | 6.12.63-r0 |
| Chainguard | linux-qemu-6.12-modules | 0 | 6.12.63-r0 |
| Chainguard | linux-qemu-6.18 | 0 | 6.18.5-r2 |
| Chainguard | linux-qemu-6.18-boot-installed | 0 | 6.18.2-r0 |
| Chainguard | linux-qemu-6.18-fips-boot-installed | 0 | 6.18.2-r0 |
| Chainguard | linux-qemu-6.18-headers | 0 | 6.18.2-r0 |
| Chainguard | linux-qemu-6.18-modules | 0 | 6.18.2-r0 |
| Chainguard | linux-qemu-generic | 0 | 6.18.3-r0 |
| Chainguard | linux-qemu-generic | 0 | 6.18.5-r0 |
| Chainguard | linux-qemu-generic-boot-installed | 0 | 0 |
| Chainguard | linux-qemu-generic-bootc-boot-installed | 0 | 6.18.4-r0 |
| Chainguard | linux-qemu-generic-bootc-boot-installed | 0 | 6.18.5-r0 |
| Chainguard | linux-qemu-generic-fips-boot-installed | 0 | 0 |
| Chainguard | linux-qemu-generic-headers | 0 | 0 |
| Chainguard | linux-qemu-generic-modules | 0 | 0 |
| Chainguard | linux-qemu-rc | 0 | 6.19_rc4-r0 |
| Chainguard | linux-qemu-rc | 0 | 6.19_rc5-r0 |
| Chainguard | linux-qemu-rc-boot-installed | 0 | 0 |
| Chainguard | linux-qemu-rc-fips-boot-installed | 0 | 0 |
| Chainguard | linux-qemu-rc-headers | 0 | 0 |
| Chainguard | linux-qemu-rc-modules | 0 | 0 |
| Chainguard | linux-vmware-6.12 | 0 | 6.12.65-r2 |
| Chainguard | linux-vmware-6.12-boot-installed | 0 | 6.12.63-r0 |
| Chainguard | linux-vmware-6.12-fips-boot-installed | 0 | 6.12.63-r0 |
| Chainguard | linux-vmware-6.12-headers | 0 | 6.12.63-r0 |
| Chainguard | linux-vmware-6.12-modules | 0 | 6.12.63-r0 |
| Chainguard | linux-vmware-6.18 | 0 | 6.18.5-r2 |
| Chainguard | linux-vmware-6.18-boot-installed | 0 | 6.18.2-r0 |
| Chainguard | linux-vmware-6.18-fips-boot-installed | 0 | 6.18.2-r0 |
| Chainguard | linux-vmware-6.18-headers | 0 | 6.18.2-r0 |
| Chainguard | linux-vmware-6.18-modules | 0 | 6.18.2-r0 |
| Chainguard | linux-vmware-generic | 0 | 6.18.3-r0 |
| Chainguard | linux-vmware-generic | 0 | 6.18.5-r0 |
| Chainguard | linux-vmware-generic-boot-installed | 0 | 0 |
| Chainguard | linux-vmware-generic-fips-boot-installed | 0 | 0 |
| Chainguard | linux-vmware-generic-headers | 0 | 0 |
| Chainguard | linux-vmware-generic-modules | 0 | 0 |
| Debian:11 | linux | 0 | 4.13.4-2 |
| Debian:12 | linux | 0 | 4.13.4-2 |
| Debian:13 | linux | 0 | 4.13.4-2 |
| Red Hat:enterprise_linux:7::server | kernel | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-abi-whitelists | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-alt | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-bootwrapper | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-debug | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-debug-debuginfo | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-debug-devel | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-debuginfo | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-debuginfo-common-aarch64 | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-debuginfo-common-ppc64le | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-debuginfo-common-s390x | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-devel | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-doc | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-headers | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-kdump | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-kdump-debuginfo | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-kdump-devel | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-tools | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-tools-debuginfo | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-tools-libs | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | kernel-tools-libs-devel | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | perf | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | perf-debuginfo | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | python-perf | 0 | 0:4.14.0-49.el7a |
| Red Hat:enterprise_linux:7::server | python-perf-debuginfo | 0 | 0:4.14.0-49.el7a |
| Ubuntu:14.04:LTS | linux-azure | 0 | 4.15.0-1023.24~14.04.1 |
| Ubuntu:16.04:LTS | linux-hwe | 0 | 4.10.0-37.41~16.04.1 |
| Ubuntu:16.04:LTS | linux-oem | 0 | 4.13.0-1008.9 |
| Ubuntu:Pro:16.04:LTS | linux-flo | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | linux-mako | 0 | No fix |
Related vulnerabilities
- CVE-2023-39180 A flaw was found within the handling of SMB2_READ commands in the kernel ksmbd module. Also affects hyperv-daemons
- CVE-2023-39179 A flaw was found within the handling of SMB2 read requests in the kernel ksmbd module. Also affects hyperv-daemons
- CVE-2023-39176 A flaw was found within the parsing of SMB2 requests that have a transform header in the… Also affects hyperv-daemons
- CVE-2023-4458 A flaw was found within the parsing of extended attributes in the kernel ksmbd module. Also affects hyperv-daemons
- CVE-2023-52904 In the Linux kernel, the following vulnerability has been resolved: ALSA: usb-audio: Fix… Also affects hyperv-daemons
- CVE-2024-38381 In the Linux kernel, the following vulnerability has been resolved: nfc: nci: Fix… Also affects hyperv-daemons
- CVE-2023-6535 A flaw was found in the Linux kernel's NVMe driver. Also affects hyperv-daemons
- CVE-2023-6270 A flaw was found in the ATA over Ethernet (AoE) driver in the Linux kernel. Also affects hyperv-daemons