CVE-2018-14634

Related Vulnerabilities: CVE-2018-14634  

An integer overflow flaw was found in the Linux kernel's create_elf_tables() function. An unprivileged local user with access to SUID (or otherwise privileged) binary could use this flaw to escalate their privileges on the system.

An integer overflow flaw was found in the Linux kernel's create_elf_tables() function. An unprivileged local user with access to SUID (or otherwise privileged) binary could use this flaw to escalate their privileges on the system.

Find out more about CVE-2018-14634 from the MITRE CVE dictionary dictionary and NIST NVD.

Statement

This issue does not affect 32-bit systems as they do not have a large enough address space to exploit this flaw.

Systems with less than 32GB of memory are very unlikely to be affected by this issue due to memory demands during exploitation.

This issue does not affect the versions of Linux kernel as shipped with Red Hat Enterprise Linux 5.

This issue affects the version of the kernel packages as shipped with Red Hat Enterprise Linux 6, 7 and Red Hat Enterprise MRG 2. Future kernel updates for Red Hat Enterprise Linux 6, 7 and Red Hat Enterprise MRG 2 will address this issue.

CVSS v3 metrics

CVSS3 Base Score 7.8
CVSS3 Base Metrics CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Attack Vector Local
Attack Complexity Low
Privileges Required Low
User Interaction None
Scope Unchanged
Confidentiality High
Integrity Impact High
Availability Impact High

Red Hat Security Errata

Platform Errata Release Date
Red Hat Enterprise Linux Advanced Update Support 6.4 (kernel) RHSA-2018:3643 2018-11-20
Red Hat MRG Grid for RHEL 6 Server v.2 (kernel-rt) RHSA-2018:3586 2018-11-13
Red Hat Enterprise Linux Extended Update Support 7.3 (kernel) RHSA-2018:3591 2018-11-13
Red Hat Enterprise Linux Advanced Update Support 6.5 (kernel) RHSA-2018:2933 2018-10-16
Red Hat Enterprise Linux Server TUS (v. 7.2) (kernel) RHSA-2018:3590 2018-11-13
Red Hat Enterprise Linux Advanced Update Support 6.6 (kernel) RHSA-2018:2924 2018-10-16
Red Hat Enterprise Linux for Real Time for NFV (v. 7) (kernel-rt) RHSA-2018:2763 2018-09-25
Red Hat Enterprise Linux 7 (kernel) RHSA-2018:2748 2018-09-25
Red Hat Enterprise Linux 6 (kernel) RHSA-2018:2846 2018-10-09
Red Hat Enterprise Linux Advanced Update Support 7.2 (kernel) RHSA-2018:3590 2018-11-13
Red Hat Enterprise Linux Extended Update Support 6.7 (kernel) RHSA-2018:2925 2018-10-17
Red Hat Enterprise Linux Extended Update Support 7.4 (kernel) RHSA-2018:3540 2018-11-13
Red Hat Enterprise Linux Server TUS (v. 6.6) (kernel) RHSA-2018:2924 2018-10-16
Red Hat Enterprise Linux Server Update Services for SAP Solutions 7.2 (kernel) RHSA-2018:3590 2018-11-13

Affected Packages State

Platform Package State
Red Hat Enterprise Linux 7 kernel-alt Not affected
Red Hat Enterprise Linux 5 kernel Not affected

Acknowledgements

Red Hat would like to thank Qualys Research Labs for reporting this issue.

Mitigation

To mitigate the issue:

Enable and install kernel-debuginfo packages as per https://access.redhat.com/solutions/666123

1) On the host, save the following in a file with the ".stp" extension:

// CVE-2018-14634
//
// Theory of operations: adjust the thread's # rlimit-in-effect around
// calls to the vulnerable get_arg_page() function so as to encompass
// the newly required _STK_LIM / 4 * 3 maximum.

// Complication: the rlimit is stored in a current-> structure that
// is shared across the threads of the process. They may concurrently
// invoke this operation.

function clamp_stack_rlim_cur:long ()
%{
  struct rlimit *rlim = current->signal->rlim;
  unsigned long rlim_cur = READ_ONCE(rlim[RLIMIT_STACK].rlim_cur);

  unsigned long limit = _STK_LIM / 4 * 3;
  limit *= 4; // multiply it back up, to the scale used by rlim_cur

  if (rlim_cur > limit) {
    WRITE_ONCE(rlim[RLIMIT_STACK].rlim_cur, limit);
    STAP_RETURN(limit);
  } else
    STAP_RETURN(0);
%}

probe kernel.function("copy_strings").call
{
  l = clamp_stack_rlim_cur()
   if (l)
     printf("lowered process %s(%d) STACK rlim_cur to %p\n",
            execname(), pid(), l)
}

probe begin {
printf("CVE-2018-14634 mitigation loaded\n")

}

probe end {
printf("CVE-2018-14634 mitigation unloaded\n")
}

2) Install the "systemtap" package and any required dependencies. Refer
to the "2. Using SystemTap" chapter in the Red Hat Enterprise Linux
"SystemTap Beginners Guide" document, available from docs.redhat.com,
for information on installing the required -debuginfo and matching kernel-devel packages

3) Run the "stap -g [filename-from-step-1].stp" command as root.

If the host is rebooted, the changes will be lost and the script must be
run again.

Alternatively, build the systemtap script on a development system with
"stap -g -p 4 [filename-from-step-1].stp", distribute the resulting
kernel module to all affected systems, and run "staprun -L <module>" on those.
When using this approach only systemtap-runtime package is required on
the affected systems. Please notice that the kernel version must be the same
across all systems.

This may not be a suitable workaround if your application uses massive amounts of stack space. Please consider this if there are any adverse affects when running this mitigation.

External References