Steps to reproduce:

lxc launch images:ubuntu/bionic --vm -c security.secureboot=false foo
sleep 10 # allow booting
lxc exec foo -- apt install -y software-properties-common
lxc exec foo -- add-apt-repository -y ppa:wireguard/wireguard
lxc exec foo -- apt install -y wireguard-tools

cat << EOF | lxc exec foo -- tee /etc/systemd/network/wg0.netdev
# foo
[NetDev]
Name=wg0
Kind=wireguard

[WireGuard]
ListenPort=5555
PrivateKey=cBkljQSKhtEe/U8GZmCAk2MBbKWL4TLC9PVtbMFyCVQ=

[WireGuardPeer]
PublicKey=emfIuZ3hZ+AnWIrKex/EqCp2mfzip8AxJu6RuweyRGc=
AllowedIPs=192.168.255.2
Endpoint=bar.lxd:5555
EOF

cat << EOF | lxc exec foo -- tee /etc/systemd/network/wg0.network
# foo
[Match]
Name=wg0

[Network]
Address=192.168.255.1/24
EOF

lxc exec foo -- systemctl restart systemd-networkd


lxc launch images:ubuntu/bionic --vm -c security.secureboot=false bar
sleep 10 # allow booting
lxc exec bar -- apt install -y software-properties-common
lxc exec bar -- add-apt-repository -y ppa:wireguard/wireguard
lxc exec bar -- apt install -y wireguard-tools

cat << EOF | lxc exec bar -- tee /etc/systemd/network/wg0.netdev
# bar
[NetDev]
Name=wg0
Kind=wireguard

[WireGuard]
ListenPort=5555
PrivateKey=AHNwUJjVO939UYnp+SjrxYDa1ZlU1uIToCF9CHUitXE=

[WireGuardPeer]
PublicKey=7TJBZdnkY8zMRVPACZSxT6xL2pAi7/IL4R1DGeThEhY=
AllowedIPs=192.168.255.1
Endpoint=foo.lxd:5555
EOF

cat << EOF | lxc exec bar -- tee /etc/systemd/network/wg0.network
# bar
[Match]
Name=wg0

[Network]
Address=192.168.255.2/24
EOF

lxc exec bar -- systemctl restart systemd-networkd

# test connectivity
lxc exec foo -- ping -qc2 192.168.255.2

# notice the invalid length in dmesg
$ lxc exec foo -- journalctl -kn 8
-- Logs begin at Mon 2020-05-11 16:56:40 UTC, end at Mon 2020-05-11 17:03:46 
UTC. --
May 11 16:58:25 foo kernel: nf_tables: (c) 2007-2009 Patrick McHardy 
<ka...@trash.net>
May 11 17:01:57 foo kernel: PKCS#7 signature not signed with a trusted key
May 11 17:01:57 foo kernel: wireguard: module verification failed: signature 
and/or required key missing - tainting kernel
May 11 17:01:57 foo kernel: wireguard: WireGuard 1.0.20200429 loaded. See 
www.wireguard.com for information.
May 11 17:01:57 foo kernel: wireguard: Copyright (C) 2015-2019 Jason A. 
Donenfeld <ja...@zx2c4.com>. All Rights Reserved.
May 11 17:01:57 foo kernel: netlink: 'systemd-network': attribute type 5 has an 
invalid length.
May 11 17:01:57 foo kernel: netlink: 'systemd-network': attribute type 5 has an 
invalid length.
May 11 17:02:23 foo kernel: netlink: 'systemd-network': attribute type 5 has an 
invalid length.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1877159

Title:
  netlink: 'systemd-network': attribute type 5 has an invalid length.

Status in systemd package in Ubuntu:
  Fix Released
Status in systemd source package in Bionic:
  In Progress
Status in systemd source package in Eoan:
  Fix Released
Status in systemd source package in Focal:
  Fix Released

Bug description:
  [impact]

  systemd-networkd uses incorrect netlink attribute length for
  wireguard's persistent keepalive interval, which logs error messages
  from the kernel, and may incorrectly set the parameter.

  [test case]

  Only 1 Bionic VM is required to reproduce the problem:

  $ lxc launch images:ubuntu/bionic --vm -c security.secureboot=false foo
  $ sleep 10 # allow booting
  $ lxc exec foo -- apt install -y software-properties-common
  $ lxc exec foo -- add-apt-repository -y ppa:wireguard/wireguard
  $ lxc exec foo -- apt install -y wireguard-tools

  $ cat << EOF | lxc exec foo -- tee /etc/systemd/network/wg0.netdev
  # foo
  [NetDev]
  Name=wg0
  Kind=wireguard

  [WireGuard]
  ListenPort=5555
  PrivateKey=cBkljQSKhtEe/U8GZmCAk2MBbKWL4TLC9PVtbMFyCVQ=

  [WireGuardPeer]
  PublicKey=emfIuZ3hZ+AnWIrKex/EqCp2mfzip8AxJu6RuweyRGc=
  AllowedIPs=192.168.255.2
  Endpoint=bar.lxd:5555
  EOF

  $ cat << EOF | lxc exec foo -- tee /etc/systemd/network/wg0.network
  # foo
  [Match]
  Name=wg0

  [Network]
  Address=192.168.255.1/24
  EOF

  $ lxc exec foo -- systemctl restart systemd-networkd

  # notice the invalid length in dmesg
  $ lxc exec foo -- journalctl -kn 8
  -- Logs begin at Mon 2020-05-11 16:56:40 UTC, end at Mon 2020-05-11 17:03:46 
UTC. --
  May 11 16:58:25 foo kernel: nf_tables: (c) 2007-2009 Patrick McHardy 
<ka...@trash.net>
  May 11 17:01:57 foo kernel: PKCS#7 signature not signed with a trusted key
  May 11 17:01:57 foo kernel: wireguard: module verification failed: signature 
and/or required key missing - tainting kernel
  May 11 17:01:57 foo kernel: wireguard: WireGuard 1.0.20200429 loaded. See 
www.wireguard.com for information.
  May 11 17:01:57 foo kernel: wireguard: Copyright (C) 2015-2019 Jason A. 
Donenfeld <ja...@zx2c4.com>. All Rights Reserved.
  May 11 17:01:57 foo kernel: netlink: 'systemd-network': attribute type 5 has 
an invalid length.
  May 11 17:01:57 foo kernel: netlink: 'systemd-network': attribute type 5 has 
an invalid length.
  May 11 17:02:23 foo kernel: netlink: 'systemd-network': attribute type 5 has 
an invalid length.

  [regression potential]

  this adjusts the length of the specific netlink parameter, so any
  regression would likely relate to incorrectly setting the persistent
  keepalive interval parameter, or failure to set the parameter.

  [scope]

  this is needed only for Bionic.

  this was fixed upstream in commit
  7d0b26a027118ca063780421cb31c74e9d2664ee which was first included in
  v240, so this is fixed in Eoan and later.  Xenial does not include
  support for wireguard, so this does not apply there.

  [original description]

  This morning, our 2 Bionic machine configured with the wireguard's PPA
  and using systemd-networkd to configure the wireguard tunnel started
  misbehaving. Why this started just now is unclear ATM but their dmesg
  was filled with this:

  validate_nla: 100 callbacks suppressed
  netlink: 'systemd-network': attribute type 5 has an invalid length.
  netlink: 'systemd-network': attribute type 5 has an invalid length.
  netlink: 'systemd-network': attribute type 5 has an invalid length.
  netlink: 'systemd-network': attribute type 5 has an invalid length.
  netlink: 'systemd-network': attribute type 5 has an invalid length.
  netlink: 'systemd-network': attribute type 5 has an invalid length.
  netlink: 'systemd-network': attribute type 5 has an invalid length.
  netlink: 'systemd-network': attribute type 5 has an invalid length.
  netlink: 'systemd-network': attribute type 5 has an invalid length.
  netlink: 'systemd-network': attribute type 5 has an invalid length.

  Folks in #systemd mentioned
  https://github.com/systemd/systemd/issues/11575 which points to 2
  commits missing from Bionic's systemd version:

  
https://github.com/systemd/systemd/commit/7d0b26a027118ca063780421cb31c74e9d2664ee
  
https://github.com/systemd/systemd/commit/624a47694cad4c87b2e807c32db656f3e9d679c5

  Focal's systemd have the above commits. Would it be possible to
  backport those 2 commits to Bionic?

  Additional information:

  # uname -a
  Linux noc-eu1 4.15.0-99-generic #100-Ubuntu SMP Wed Apr 22 20:32:56 UTC 2020 
x86_64 x86_64 x86_64 GNU/Linux

  # apt-cache policy systemd wireguard{,-tools,-dkms}
  systemd:
    Installed: 237-3ubuntu10.39
    Candidate: 237-3ubuntu10.39
    Version table:
   *** 237-3ubuntu10.39 500
          500 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 
Packages
          100 /var/lib/dpkg/status
       237-3ubuntu10.38 500
          500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 
Packages
       237-3ubuntu10 500
          500 http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages
  wireguard:
    Installed: 1.0.20200319-1ubuntu1~18.04
    Candidate: 1.0.20200319-1ubuntu1~18.04
    Version table:
   *** 1.0.20200319-1ubuntu1~18.04 500
          500 http://ppa.launchpad.net/wireguard/wireguard/ubuntu bionic/main 
amd64 Packages
          500 http://ppa.launchpad.net/wireguard/wireguard/ubuntu bionic/main 
i386 Packages
          100 /var/lib/dpkg/status
  wireguard-tools:
    Installed: 1.0.20200319-1ubuntu1~18.04
    Candidate: 1.0.20200319-1ubuntu1~18.04
    Version table:
   *** 1.0.20200319-1ubuntu1~18.04 500
          500 http://ppa.launchpad.net/wireguard/wireguard/ubuntu bionic/main 
amd64 Packages
          100 /var/lib/dpkg/status
  wireguard-dkms:
    Installed: 1.0.20200429-2~18.04
    Candidate: 1.0.20200429-2~18.04
    Version table:
   *** 1.0.20200429-2~18.04 500
          500 http://ppa.launchpad.net/wireguard/wireguard/ubuntu bionic/main 
amd64 Packages
          500 http://ppa.launchpad.net/wireguard/wireguard/ubuntu bionic/main 
i386 Packages
          100 /var/lib/dpkg/status

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1877159/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to