Linux netfilter IPT_SO_SET_REPLACE memory corruption
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
High
|
Tim Gardner | ||
Precise |
Fix Released
|
High
|
Chris J Arges | ||
Trusty |
Fix Released
|
High
|
Chris J Arges | ||
Vivid |
Fix Released
|
Critical
|
Chris J Arges | ||
Wily |
Fix Released
|
High
|
Chris J Arges | ||
Xenial |
Fix Released
|
High
|
Tim Gardner | ||
Yakkety |
Fix Released
|
High
|
Tim Gardner | ||
linux-armadaxp (Ubuntu) |
Invalid
|
High
|
Unassigned | ||
Precise |
Fix Released
|
High
|
Unassigned | ||
Trusty |
Invalid
|
High
|
Unassigned | ||
Vivid |
Invalid
|
Undecided
|
Unassigned | ||
Wily |
Invalid
|
High
|
Unassigned | ||
Xenial |
Invalid
|
High
|
Unassigned | ||
Yakkety |
Invalid
|
High
|
Unassigned | ||
linux-flo (Ubuntu) |
Won't Fix
|
High
|
Unassigned | ||
Precise |
Invalid
|
High
|
Unassigned | ||
Trusty |
Invalid
|
High
|
Unassigned | ||
Vivid |
Won't Fix
|
Undecided
|
Unassigned | ||
Wily |
New
|
High
|
Unassigned | ||
Xenial |
Won't Fix
|
High
|
Unassigned | ||
Yakkety |
New
|
High
|
Unassigned | ||
linux-goldfish (Ubuntu) |
Won't Fix
|
High
|
Unassigned | ||
Precise |
Invalid
|
High
|
Unassigned | ||
Trusty |
Invalid
|
High
|
Unassigned | ||
Vivid |
New
|
Undecided
|
Unassigned | ||
Wily |
New
|
High
|
Unassigned | ||
Xenial |
Won't Fix
|
High
|
Unassigned | ||
Yakkety |
New
|
High
|
Unassigned | ||
linux-keystone (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Precise |
Invalid
|
Undecided
|
Unassigned | ||
Trusty |
Fix Released
|
Critical
|
Unassigned | ||
Vivid |
Invalid
|
Undecided
|
Unassigned | ||
Wily |
Invalid
|
Undecided
|
Unassigned | ||
Xenial |
Invalid
|
Undecided
|
Unassigned | ||
Yakkety |
Invalid
|
Undecided
|
Unassigned | ||
linux-lts-quantal (Ubuntu) |
Invalid
|
High
|
Unassigned | ||
Precise |
Invalid
|
High
|
Unassigned | ||
Trusty |
Invalid
|
High
|
Unassigned | ||
Vivid |
Won't Fix
|
Undecided
|
Unassigned | ||
Wily |
Invalid
|
High
|
Unassigned | ||
Xenial |
Invalid
|
High
|
Unassigned | ||
Yakkety |
Invalid
|
High
|
Unassigned | ||
linux-lts-raring (Ubuntu) |
Invalid
|
High
|
Unassigned | ||
Precise |
Invalid
|
High
|
Unassigned | ||
Trusty |
Invalid
|
High
|
Unassigned | ||
Vivid |
New
|
Undecided
|
Unassigned | ||
Wily |
Invalid
|
High
|
Unassigned | ||
Xenial |
Invalid
|
High
|
Unassigned | ||
Yakkety |
Invalid
|
High
|
Unassigned | ||
linux-lts-saucy (Ubuntu) |
Invalid
|
High
|
Unassigned | ||
Precise |
Invalid
|
High
|
Unassigned | ||
Trusty |
Invalid
|
High
|
Unassigned | ||
Vivid |
Won't Fix
|
Undecided
|
Unassigned | ||
Wily |
Invalid
|
High
|
Unassigned | ||
Xenial |
Invalid
|
High
|
Unassigned | ||
Yakkety |
Invalid
|
High
|
Unassigned | ||
linux-lts-trusty (Ubuntu) |
Invalid
|
High
|
Unassigned | ||
Precise |
Fix Released
|
High
|
Unassigned | ||
Trusty |
Invalid
|
High
|
Unassigned | ||
Vivid |
Won't Fix
|
Undecided
|
Unassigned | ||
Wily |
Invalid
|
High
|
Unassigned | ||
Xenial |
Invalid
|
High
|
Unassigned | ||
Yakkety |
Invalid
|
High
|
Unassigned | ||
linux-lts-utopic (Ubuntu) |
Invalid
|
High
|
Unassigned | ||
Precise |
Invalid
|
High
|
Unassigned | ||
Trusty |
Fix Released
|
High
|
Chris J Arges | ||
Vivid |
Invalid
|
Undecided
|
Unassigned | ||
Wily |
Invalid
|
High
|
Unassigned | ||
Xenial |
Invalid
|
High
|
Unassigned | ||
Yakkety |
Invalid
|
High
|
Unassigned | ||
linux-lts-vivid (Ubuntu) |
Invalid
|
High
|
Unassigned | ||
Precise |
Invalid
|
High
|
Unassigned | ||
Trusty |
Fix Released
|
High
|
Unassigned | ||
Vivid |
Won't Fix
|
Undecided
|
Unassigned | ||
Wily |
Invalid
|
High
|
Unassigned | ||
Xenial |
Invalid
|
High
|
Unassigned | ||
Yakkety |
Invalid
|
High
|
Unassigned | ||
linux-lts-wily (Ubuntu) |
Invalid
|
High
|
Unassigned | ||
Precise |
Invalid
|
High
|
Unassigned | ||
Trusty |
Fix Released
|
High
|
Unassigned | ||
Vivid |
New
|
Undecided
|
Unassigned | ||
Wily |
Invalid
|
High
|
Unassigned | ||
Xenial |
Invalid
|
High
|
Unassigned | ||
Yakkety |
Invalid
|
High
|
Unassigned | ||
linux-lts-xenial (Ubuntu) |
Invalid
|
High
|
Unassigned | ||
Precise |
Invalid
|
High
|
Unassigned | ||
Trusty |
Fix Released
|
High
|
Unassigned | ||
Vivid |
New
|
Undecided
|
Unassigned | ||
Wily |
Invalid
|
High
|
Unassigned | ||
Xenial |
Invalid
|
High
|
Unassigned | ||
Yakkety |
Invalid
|
High
|
Unassigned | ||
linux-mako (Ubuntu) |
Won't Fix
|
High
|
Unassigned | ||
Precise |
Invalid
|
High
|
Unassigned | ||
Trusty |
Invalid
|
High
|
Unassigned | ||
Vivid |
Won't Fix
|
Undecided
|
Unassigned | ||
Wily |
New
|
High
|
Unassigned | ||
Xenial |
Won't Fix
|
High
|
Unassigned | ||
Yakkety |
New
|
High
|
Unassigned | ||
linux-manta (Ubuntu) |
Invalid
|
High
|
Unassigned | ||
Precise |
Invalid
|
High
|
Unassigned | ||
Trusty |
Invalid
|
High
|
Unassigned | ||
Vivid |
New
|
Undecided
|
Unassigned | ||
Wily |
New
|
High
|
Unassigned | ||
Xenial |
Invalid
|
High
|
Unassigned | ||
Yakkety |
Invalid
|
High
|
Unassigned | ||
linux-raspi2 (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Precise |
Invalid
|
High
|
Unassigned | ||
Trusty |
Invalid
|
High
|
Unassigned | ||
Vivid |
Won't Fix
|
Undecided
|
Unassigned | ||
Wily |
Fix Released
|
High
|
Unassigned | ||
Xenial |
Fix Released
|
High
|
Unassigned | ||
Yakkety |
Fix Released
|
High
|
Unassigned | ||
linux-snapdragon (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Precise |
Invalid
|
High
|
Unassigned | ||
Trusty |
Invalid
|
High
|
Unassigned | ||
Vivid |
New
|
Undecided
|
Unassigned | ||
Wily |
Invalid
|
High
|
Unassigned | ||
Xenial |
Fix Released
|
High
|
Unassigned | ||
Yakkety |
Fix Released
|
High
|
Unassigned | ||
linux-ti-omap4 (Ubuntu) |
Invalid
|
High
|
Unassigned | ||
Precise |
Fix Released
|
High
|
Unassigned | ||
Trusty |
Invalid
|
High
|
Unassigned | ||
Vivid |
Invalid
|
Undecided
|
Unassigned | ||
Wily |
Invalid
|
High
|
Unassigned | ||
Xenial |
Invalid
|
High
|
Unassigned | ||
Yakkety |
Invalid
|
High
|
Unassigned |
Bug Description
[Impact]
[From https:/
A memory corruption vulnerability exists in the IPT_SO_SET_REPLACE ioctl in the netfilter code for iptables support. This ioctl is can be triggered by an unprivileged user on PF_INET sockets when unprivileged user namespaces are available (CONFIG_USER_NS=y). Android does not enable this option, but desktop/server distributions and Chrome OS will commonly enable this to allow for containers support or sandboxing.
In the mark_source_chains function (net/ipv4/
newpos = pos + e->next_offset;
...
e = (struct ipt_entry *) (entry0 + newpos);
e->counters.pcnt = pos;
This means that an out of bounds 32-bit write can occur in a 64kb range from the allocated heap entry, with a controlled offset and a partially controlled write value ("pos") or zero. The attached proof-of-concept (netfilter_
This issue affects (at least) kernel versions 3.10, 3.18 and 4.4. It appears that a similar codepath is accessible via arp_tables.
[Fix]
http://
[Test Case]
Download v3 testcase from https:/
gcc net*v3.c -o v3
./v3
Related branches
Changed in linux (Ubuntu): | |
status: | New → Confirmed |
importance: | Undecided → High |
Changed in linux (Ubuntu Xenial): | |
assignee: | nobody → Tim Gardner (timg-tpi) |
status: | Confirmed → In Progress |
Changed in linux-lts-utopic (Ubuntu Precise): | |
status: | New → Invalid |
Changed in linux-lts-utopic (Ubuntu Vivid): | |
status: | New → Invalid |
Changed in linux-lts-utopic (Ubuntu Wily): | |
status: | New → Invalid |
Changed in linux-lts-utopic (Ubuntu Xenial): | |
status: | New → Invalid |
Changed in linux (Ubuntu Xenial): | |
status: | In Progress → Fix Committed |
Changed in linux (Ubuntu Wily): | |
assignee: | nobody → Chris J Arges (arges) |
status: | New → In Progress |
Changed in linux (Ubuntu Trusty): | |
assignee: | nobody → Chris J Arges (arges) |
status: | New → In Progress |
Changed in linux (Ubuntu Vivid): | |
assignee: | nobody → Chris J Arges (arges) |
status: | New → In Progress |
Changed in linux-lts-utopic (Ubuntu Trusty): | |
assignee: | nobody → Chris J Arges (arges) |
status: | New → In Progress |
description: | updated |
Changed in linux (Ubuntu Trusty): | |
assignee: | Chris J Arges (arges) → nobody |
status: | In Progress → New |
Changed in linux (Ubuntu Vivid): | |
status: | In Progress → New |
Changed in linux-lts-utopic (Ubuntu Trusty): | |
assignee: | Chris J Arges (arges) → nobody |
status: | In Progress → New |
Changed in linux (Ubuntu Trusty): | |
assignee: | nobody → Chris J Arges (arges) |
status: | New → In Progress |
Changed in linux (Ubuntu Vivid): | |
status: | New → In Progress |
Changed in linux-lts-utopic (Ubuntu Trusty): | |
assignee: | nobody → Chris J Arges (arges) |
status: | New → In Progress |
Changed in linux (Ubuntu Precise): | |
status: | New → Fix Committed |
Changed in linux (Ubuntu Wily): | |
status: | In Progress → Fix Committed |
Changed in linux (Ubuntu Vivid): | |
status: | In Progress → Fix Committed |
Changed in linux (Ubuntu Trusty): | |
status: | In Progress → Fix Committed |
tags: | added: kernel-cve-skip-description |
Changed in linux-lts-utopic (Ubuntu Trusty): | |
importance: | Undecided → Critical |
Changed in linux (Ubuntu Wily): | |
importance: | Undecided → Critical |
Changed in linux (Ubuntu Vivid): | |
importance: | Undecided → Critical |
Changed in linux (Ubuntu Trusty): | |
importance: | Undecided → Critical |
Changed in linux (Ubuntu Precise): | |
assignee: | nobody → Chris J Arges (arges) |
importance: | Undecided → Critical |
Changed in linux-lts-utopic (Ubuntu Trusty): | |
status: | In Progress → Fix Committed |
Changed in linux-keystone (Ubuntu Xenial): | |
status: | New → Invalid |
Changed in linux-keystone (Ubuntu Precise): | |
status: | New → Invalid |
Changed in linux-keystone (Ubuntu Wily): | |
status: | New → Invalid |
Changed in linux-armadaxp (Ubuntu Vivid): | |
status: | New → Invalid |
Changed in linux-armadaxp (Ubuntu Trusty): | |
status: | New → Invalid |
Changed in linux-keystone (Ubuntu Vivid): | |
status: | New → Invalid |
Changed in linux-armadaxp (Ubuntu): | |
status: | New → Invalid |
Changed in linux-armadaxp (Ubuntu Wily): | |
status: | New → Invalid |
Changed in linux-keystone (Ubuntu Trusty): | |
status: | New → Fix Committed |
Changed in linux-armadaxp (Ubuntu Precise): | |
status: | New → Fix Committed |
Changed in linux-keystone (Ubuntu Trusty): | |
importance: | Undecided → Critical |
Changed in linux-armadaxp (Ubuntu Precise): | |
importance: | Undecided → Critical |
Changed in linux-lts-trusty (Ubuntu Precise): | |
status: | New → Fix Released |
importance: | Undecided → High |
Changed in linux-lts-trusty (Ubuntu Wily): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-trusty (Ubuntu Xenial): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-trusty (Ubuntu Trusty): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-wily (Ubuntu Precise): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-wily (Ubuntu Wily): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-wily (Ubuntu Xenial): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-wily (Ubuntu Trusty): | |
status: | New → Fix Released |
importance: | Undecided → High |
Changed in linux-lts-quantal (Ubuntu Precise): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-quantal (Ubuntu Wily): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-quantal (Ubuntu Xenial): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-quantal (Ubuntu Trusty): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux (Ubuntu Precise): | |
importance: | Critical → High |
Changed in linux (Ubuntu Wily): | |
importance: | Critical → High |
Changed in linux (Ubuntu Trusty): | |
importance: | Critical → High |
Changed in linux-ti-omap4 (Ubuntu Precise): | |
status: | New → Fix Released |
importance: | Undecided → High |
Changed in linux-ti-omap4 (Ubuntu Wily): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-ti-omap4 (Ubuntu Xenial): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-ti-omap4 (Ubuntu Trusty): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-raring (Ubuntu Precise): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-raring (Ubuntu Wily): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-raring (Ubuntu Xenial): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-raring (Ubuntu Trusty): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-armadaxp (Ubuntu Precise): | |
importance: | Critical → High |
Changed in linux-armadaxp (Ubuntu Wily): | |
importance: | Undecided → High |
Changed in linux-armadaxp (Ubuntu Xenial): | |
importance: | Undecided → High |
Changed in linux-armadaxp (Ubuntu Trusty): | |
importance: | Undecided → High |
Changed in linux-lts-xenial (Ubuntu Precise): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-xenial (Ubuntu Wily): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-xenial (Ubuntu Xenial): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-xenial (Ubuntu Trusty): | |
importance: | Undecided → High |
Changed in linux-lts-saucy (Ubuntu Precise): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-saucy (Ubuntu Wily): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-saucy (Ubuntu Xenial): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-saucy (Ubuntu Trusty): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-manta (Ubuntu Precise): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-manta (Ubuntu Wily): | |
importance: | Undecided → High |
Changed in linux-manta (Ubuntu Xenial): | |
importance: | Undecided → High |
Changed in linux-manta (Ubuntu Trusty): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-vivid (Ubuntu Precise): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-vivid (Ubuntu Wily): | |
status: | New → Invalid |
Changed in linux-lts-vivid (Ubuntu Wily): | |
importance: | Undecided → High |
Changed in linux-lts-vivid (Ubuntu Xenial): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-vivid (Ubuntu Trusty): | |
status: | New → Fix Released |
importance: | Undecided → High |
Changed in linux-raspi2 (Ubuntu Precise): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-raspi2 (Ubuntu Wily): | |
importance: | Undecided → High |
Changed in linux-raspi2 (Ubuntu Xenial): | |
importance: | Undecided → High |
Changed in linux-raspi2 (Ubuntu Trusty): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-mako (Ubuntu Precise): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-mako (Ubuntu Wily): | |
importance: | Undecided → High |
Changed in linux-mako (Ubuntu Xenial): | |
importance: | Undecided → High |
Changed in linux-mako (Ubuntu Trusty): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-lts-utopic (Ubuntu Precise): | |
importance: | Undecided → High |
Changed in linux-lts-utopic (Ubuntu Wily): | |
importance: | Undecided → High |
Changed in linux-lts-utopic (Ubuntu Xenial): | |
importance: | Undecided → High |
Changed in linux-lts-utopic (Ubuntu Trusty): | |
importance: | Critical → High |
Changed in linux-goldfish (Ubuntu Precise): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-goldfish (Ubuntu Wily): | |
importance: | Undecided → High |
Changed in linux-goldfish (Ubuntu Xenial): | |
importance: | Undecided → High |
Changed in linux-goldfish (Ubuntu Trusty): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-flo (Ubuntu Precise): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-flo (Ubuntu Wily): | |
importance: | Undecided → High |
Changed in linux-flo (Ubuntu Xenial): | |
importance: | Undecided → High |
Changed in linux-flo (Ubuntu Trusty): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-ti-omap4 (Ubuntu Vivid): | |
status: | New → Invalid |
Changed in linux-raspi2 (Ubuntu Wily): | |
status: | New → Fix Released |
Changed in linux-lts-xenial (Ubuntu Trusty): | |
status: | Fix Released → New |
status: | New → Invalid |
Changed in linux-manta (Ubuntu Xenial): | |
status: | New → Invalid |
Changed in linux-raspi2 (Ubuntu Xenial): | |
status: | New → Invalid |
Changed in linux-snapdragon (Ubuntu Precise): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-snapdragon (Ubuntu Wily): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-snapdragon (Ubuntu Xenial): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-snapdragon (Ubuntu Yakkety): | |
status: | New → Invalid |
importance: | Undecided → High |
Changed in linux-snapdragon (Ubuntu Trusty): | |
status: | New → Invalid |
importance: | Undecided → High |
tags: |
added: verification-done-xenial removed: verification-needed-xenial |
tags: |
added: verification-done-precise verification-done-trusty verification-done-vivid verification-done-wily removed: verification-needed-precise verification-needed-trusty verification-needed-vivid verification-needed-wily |
Changed in linux-lts-quantal (Ubuntu Vivid): | |
status: | New → Won't Fix |
Changed in linux-lts-saucy (Ubuntu Vivid): | |
status: | New → Won't Fix |
Changed in linux-lts-trusty (Ubuntu Vivid): | |
status: | New → Won't Fix |
Changed in linux-lts-vivid (Ubuntu Vivid): | |
status: | New → Won't Fix |
Changed in linux-mako (Ubuntu Vivid): | |
status: | New → Won't Fix |
Changed in linux-raspi2 (Ubuntu Vivid): | |
status: | New → Won't Fix |
Changed in linux-goldfish (Ubuntu Xenial): | |
status: | New → Won't Fix |
Changed in linux-flo (Ubuntu Xenial): | |
status: | New → Won't Fix |
Changed in linux-mako (Ubuntu Xenial): | |
status: | New → Won't Fix |
Changed in linux-flo (Ubuntu): | |
status: | New → Won't Fix |
Changed in linux-goldfish (Ubuntu): | |
status: | New → Won't Fix |
Changed in linux-mako (Ubuntu): | |
status: | New → Won't Fix |
upstream proposed fix: http:// marc.info/ ?l=netfilter- devel&m= 145757134822741 &w=2