---
id: CVE-2026-63829
title: |-
  In the Linux kernel, the following vulnerability has been resolved:

  net: ip_gre: require CAP_NET_ADMIN in the device netns for changelink

  A tunnel changelink() operates on at most two netns, dev_net(dev) and
  the tunnel link netns t->ne…
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  net: ip_gre: require CAP_NET_ADMIN in the device netns for changelink

  A tunnel changelink() operates on at most two netns, dev_net(dev) and
  the tunnel link netns t->ne…
severity: high
cvss: 8.8
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H'
published: '2026-07-19'
updated: '2026-08-17'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-63829'
references:
  - url: 'https://git.kernel.org/stable/c/1697957eb0971d420dde42862b88eb43506a1105'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/19275943d8fe903eb7b9aa53e380e41efd042ada'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/47b5d3d506609b08b2e1f7c14f0b681a1953d572'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/8165f7ff57d9667d2bb477ef6af83ede7fed4ad7'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/866b0f5ae599490bd496fd84581c68ac8b94e6af'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/92b766fc55156e0da2ecd0c2302c971118f8a229'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/9831bc9ecb402957810c2045c663fbfe9b09e296'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/e54c05ed3d9c28733fb9e5837219aca3691defa3'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
epss: 0.00127
epssPercentile: 0.02023
ingestedAt: '2026-08-17T05:47:50.343Z'
---

## Overview

In the Linux kernel, the following vulnerability has been resolved:

net: ip_gre: require CAP_NET_ADMIN in the device netns for changelink

A tunnel changelink() operates on at most two netns, dev_net(dev) and
the tunnel link netns t->net. They differ once the device is created in
or moved to a netns other than the one the request runs in. The rtnl
changelink path checks CAP_NET_ADMIN only against dev_net(dev), so a
caller privileged there but not in t->net can rewrite a tunnel that
lives in t->net.

Add rtnl_dev_link_net_capable() next to rtnl_get_net_ns_capable() in
net/core/rtnetlink.c. It requires CAP_NET_ADMIN in the link netns and is
skipped when the link netns is dev_net(dev), where the rtnl path already
checked it. The other patches in this series use the same helper.

Gate ipgre_changelink() and erspan_changelink() with it, at the top of
the op before any attribute is parsed, because the parsers update live
tunnel fields first. ipgre_netlink_parms() sets t->collect_md before
ip_tunnel_changelink() runs.

Commit 8b484efd5cb4 ("ip6: vti: Use ip6_tnl.net in
vti6_siocdevprivate().") added the same check on the ioctl path. This
adds it on RTM_NEWLINK.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
