CVE-2018-12886
Published: 22 May 2019
stack_protect_prologue in cfgexpand.c and stack_protect_epilogue in function.c in GNU Compiler Collection (GCC) 4.1 through 8 (under certain circumstances) generate instruction sequences when targeting ARM targets that spill the address of the stack protector guard, which allows an attacker to bypass the protection of -fstack-protector, -fstack-protector-all, -fstack-protector-strong, and -fstack-protector-explicit against stack overflow by controlling what the stack canary is compared against.
Notes
Author | Note |
---|---|
mdeslaur | Upstream has fixed this in GCC9 only as of 2019-05-30. 32-bit ARM only, risky backport, and would require archive rebuild. Setting priority as low for now, we may decide this issue is not worth fixing in stable releases. |
sbeattie | 14.04 LTS (trusty) Pro Infra and 16.04 LTS (xenial) Pro Infra do not support 32-bit Arm as an architecture. |
Priority
Status
Package | Release | Status |
---|---|---|
gcc-6 Launchpad, Ubuntu, Debian |
cosmic |
Ignored
(end of life)
|
disco |
Ignored
(end of life)
|
|
eoan |
Does not exist
|
|
focal |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Needs triage
|
|
xenial |
Does not exist
|
|
impish |
Does not exist
|
|
bionic |
Needed
|
|
hirsute |
Does not exist
|
|
jammy |
Does not exist
|
|
lunar |
Does not exist
|
|
groovy |
Does not exist
|
|
kinetic |
Does not exist
|
|
mantic |
Does not exist
|
|
gcc-7 Launchpad, Ubuntu, Debian |
cosmic |
Ignored
(end of life)
|
impish |
Does not exist
|
|
bionic |
Needed
|
|
hirsute |
Ignored
(end of life)
|
|
jammy |
Does not exist
|
|
lunar |
Does not exist
|
|
disco |
Ignored
(end of life)
|
|
eoan |
Ignored
(end of life)
|
|
groovy |
Ignored
(end of life)
|
|
kinetic |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Needs triage
|
|
xenial |
Does not exist
|
|
focal |
Needed
|
|
mantic |
Does not exist
|
|
gcc-snapshot Launchpad, Ubuntu, Debian |
groovy |
Ignored
(end of life)
|
kinetic |
Ignored
(end of life, was needs-triage)
|
|
hirsute |
Ignored
(end of life)
|
|
jammy |
Needs triage
|
|
cosmic |
Ignored
(end of life)
|
|
disco |
Ignored
(end of life)
|
|
eoan |
Ignored
(end of life)
|
|
impish |
Ignored
(end of life)
|
|
trusty |
Does not exist
|
|
upstream |
Needs triage
|
|
xenial |
Needs triage
|
|
bionic |
Needed
|
|
focal |
Not vulnerable
(1:20200418-1ubuntu1)
|
|
mantic |
Needs triage
|
|
lunar |
Ignored
(end of life, was needs-triage)
|
|
gcc-4.8 Launchpad, Ubuntu, Debian |
impish |
Does not exist
|
hirsute |
Does not exist
|
|
jammy |
Does not exist
|
|
xenial |
Ignored
(ESM criteria, 32-bit ARM not supported)
|
|
lunar |
Does not exist
|
|
bionic |
Needs triage
|
|
cosmic |
Ignored
(end of life)
|
|
disco |
Does not exist
|
|
eoan |
Does not exist
|
|
focal |
Does not exist
|
|
groovy |
Does not exist
|
|
kinetic |
Does not exist
|
|
upstream |
Needs triage
|
|
trusty |
Ignored
(ESM criteria, 32-bit ARM not supported)
|
|
mantic |
Does not exist
|
|
gcc-4.9 Launchpad, Ubuntu, Debian |
impish |
Does not exist
|
hirsute |
Does not exist
|
|
xenial |
Ignored
(ESM criteria, 32-bit ARM not supported)
|
|
jammy |
Does not exist
|
|
lunar |
Does not exist
|
|
bionic |
Does not exist
|
|
cosmic |
Does not exist
|
|
disco |
Does not exist
|
|
eoan |
Does not exist
|
|
focal |
Does not exist
|
|
groovy |
Does not exist
|
|
kinetic |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Needs triage
|
|
mantic |
Does not exist
|
|
gcc-arm-none-eabi Launchpad, Ubuntu, Debian |
kinetic |
Ignored
(end of life, was needs-triage)
|
hirsute |
Ignored
(end of life)
|
|
xenial |
Needs triage
|
|
jammy |
Needs triage
|
|
bionic |
Needs triage
|
|
cosmic |
Ignored
(end of life)
|
|
disco |
Ignored
(end of life)
|
|
eoan |
Ignored
(end of life)
|
|
focal |
Needs triage
|
|
groovy |
Ignored
(end of life)
|
|
impish |
Ignored
(end of life)
|
|
trusty |
Does not exist
|
|
upstream |
Needs triage
|
|
mantic |
Needs triage
|
|
lunar |
Ignored
(end of life, was needs-triage)
|
|
gcc-avr Launchpad, Ubuntu, Debian |
focal |
Not vulnerable
(arm only)
|
groovy |
Not vulnerable
(arm only)
|
|
impish |
Not vulnerable
(arm only)
|
|
jammy |
Not vulnerable
(arm only)
|
|
kinetic |
Not vulnerable
(arm only)
|
|
lunar |
Not vulnerable
(arm only)
|
|
upstream |
Not vulnerable
(arm only)
|
|
hirsute |
Not vulnerable
(arm only)
|
|
xenial |
Not vulnerable
(arm only)
|
|
trusty |
Does not exist
|
|
bionic |
Not vulnerable
(arm only)
|
|
cosmic |
Not vulnerable
(arm only)
|
|
disco |
Not vulnerable
(arm only)
|
|
eoan |
Not vulnerable
(arm only)
|
|
mantic |
Not vulnerable
(arm only)
|
|
gcc-h8300-hms Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(arm only)
|
cosmic |
Not vulnerable
(arm only)
|
|
disco |
Not vulnerable
(arm only)
|
|
eoan |
Not vulnerable
(arm only)
|
|
focal |
Not vulnerable
(arm only)
|
|
groovy |
Not vulnerable
(arm only)
|
|
hirsute |
Not vulnerable
(arm only)
|
|
impish |
Not vulnerable
(arm only)
|
|
jammy |
Not vulnerable
(arm only)
|
|
kinetic |
Not vulnerable
(arm only)
|
|
lunar |
Not vulnerable
(arm only)
|
|
upstream |
Not vulnerable
(arm only)
|
|
xenial |
Not vulnerable
(arm only)
|
|
trusty |
Does not exist
|
|
mantic |
Not vulnerable
(arm only)
|
|
gcc-m68hc1x Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(arm only)
|
cosmic |
Not vulnerable
(arm only)
|
|
disco |
Not vulnerable
(arm only)
|
|
eoan |
Not vulnerable
(arm only)
|
|
focal |
Not vulnerable
(arm only)
|
|
groovy |
Not vulnerable
(arm only)
|
|
hirsute |
Not vulnerable
(arm only)
|
|
impish |
Not vulnerable
(arm only)
|
|
jammy |
Not vulnerable
(arm only)
|
|
kinetic |
Not vulnerable
(arm only)
|
|
upstream |
Not vulnerable
(arm only)
|
|
xenial |
Not vulnerable
(arm only)
|
|
lunar |
Does not exist
|
|
trusty |
Does not exist
|
|
mantic |
Does not exist
|
|
gcc-msp430 Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(arm only)
|
cosmic |
Not vulnerable
(arm only)
|
|
disco |
Not vulnerable
(arm only)
|
|
eoan |
Not vulnerable
(arm only)
|
|
focal |
Not vulnerable
(arm only)
|
|
groovy |
Not vulnerable
(arm only)
|
|
impish |
Not vulnerable
(arm only)
|
|
jammy |
Not vulnerable
(arm only)
|
|
kinetic |
Not vulnerable
(arm only)
|
|
lunar |
Not vulnerable
(arm only)
|
|
upstream |
Not vulnerable
(arm only)
|
|
xenial |
Not vulnerable
(arm only)
|
|
hirsute |
Not vulnerable
(arm only)
|
|
trusty |
Does not exist
|
|
mantic |
Not vulnerable
(arm only)
|
|
gcc-9 Launchpad, Ubuntu, Debian |
trusty |
Does not exist
|
xenial |
Does not exist
|
|
bionic |
Does not exist
|
|
focal |
Not vulnerable
(9.3.0-10ubuntu2)
|
|
jammy |
Not vulnerable
(9.3.0-10ubuntu2)
|
|
lunar |
Not vulnerable
(9.3.0-10ubuntu2)
|
|
upstream |
Released
(9.1.0)
|
|
mantic |
Not vulnerable
(9.3.0-10ubuntu2)
|
|
Patches: upstream: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=89d7557202d25a393666ac4c0f7dbdab31e452a2 |
||
gcc-8 Launchpad, Ubuntu, Debian |
hirsute |
Ignored
(end of life)
|
jammy |
Does not exist
|
|
lunar |
Does not exist
|
|
bionic |
Needs triage
|
|
cosmic |
Ignored
(end of life)
|
|
disco |
Ignored
(end of life)
|
|
eoan |
Ignored
(end of life)
|
|
focal |
Needs triage
|
|
groovy |
Ignored
(end of life)
|
|
impish |
Ignored
(end of life)
|
|
kinetic |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Needs triage
|
|
xenial |
Does not exist
|
|
mantic |
Does not exist
|
|
Patches: upstream: https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=266379 |
Severity score breakdown
Parameter | Value |
---|---|
Base score | 8.1 |
Attack vector | Network |
Attack complexity | High |
Privileges required | None |
User interaction | None |
Scope | Unchanged |
Confidentiality | High |
Integrity impact | High |
Availability impact | High |
Vector | CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |